本篇文章介绍使用Ollama本地部署DeepSeek-R1 8B通用大模型,作为Agent智能大脑,基于Python3.11(虚拟环境管理工具Conda)、Langchain开发框架、Chroma向量数据库、ReAct提示词模版等工具进行开发AI Agent人工智能体。为了便于理解智能体相关知识,本文以“上海今天天气情况”简单问询为例,去剖析AI agent思考过程和执行任务过程。如agent接到用户指令后,一步一步思考分解任务,去调用天气情况API、检索知识库Rag系统或LLM自身知识回答与执行任务,同时本文也会详细展示与分析AI Agent再执行任务的整个详细思考过程。

要学习AI Agent,首先弄清楚AI Agen是什么,有哪些功能,AI agent是人工智能代理,是一种能自主感知环境、做出决策并执行任务的智能系统,其核心功能体现在以下方面:

  1. 自主感知与理解
  • 接收外部信息用户指令(自然语言,说白点就是人话),并进行解析(如自然语言理解、数据提取)做任务拆解,明确任务目标。

    例:查询上海天气情况,agent提取地点:上海 Shanghai,cn,再去调用天气网站API去查询

  1. 决策与规划
  • 根据目标和环境,制定分步执行计划,选择最优策略。

    例:用户一次问两个问题:1)上海天气情况,2)上海人工智能发展如何(同时问两个不相关的问题)。agent规划先去解决第一个天气问题“上海天气情况”;再去解决“上海人工智能发展如何”等

  1. 工具调用与执行
  • 调用外部工具(如 API、数据库、RAG)完成具体操作,无需人工介入,这些部署DeepSeek作为智能体大脑来去执行。

    例:用户一次问两个问题:1)上海天气情况,2)上海人工智能发展如何。AI agent思考用调用天气网站API回答第一个天气问题;思考用Rag知识库回答第二问题AI发展如何,如Rag知识库中没有检索到相关知识,最后智能基于DeepSeek本地部署大模型去回答用户问题

  1. 动态调整与迭代
  • 监控任务执行过程,根据反馈(如操作失败、信息变更)调整策略。

    例:股票监控 Agent 发现价格波动超出预期,自动重新分析并调整提醒阈值。

  1. 多任务协同
  • 多个 Agent 协作完成复杂任务,分工处理不同环节。

    例:项目管理 Agent 协调 “文档整理 Agent”“进度跟踪 Agent”“提醒 Agent”,同步推进项目。

本文AI Agent例子中Tools箱工具涉及三个功能:

  • 通用知识或问题可由DeepSeek大模型直接回答

  • 由大模型思考与执行可调用API查询工具(这里接入免费天气API)

  • 由大模型执行与可查询的本地部署RAG增强检索知识库系统

环境前置准备


本文演示一个基于DeepSeek-R1的AI Agent智能体,根据用户指令(以问询上海天气情况为例)Agent会调用两个工具,即天气API、RAG增强检索知识库系统。所以这里需要本地部署DeepSeek-R1,Rag系统需要向量数据库、还要Langchain开发框架,Python环境(conda构建即可)。以上这些环境,在上一篇构建Rag系统有介绍,下文有相关链接。环境准备好,还需一个可调用天气API keys。

  • 免费天气API key注册

我们在官网:https://openweathermap.org/注册一个免费可调用的天气API接口获取API keys,傻瓜式如下注册就好:

首先,注册账号,按照要求进行认证即可,注册完成登录即可有个免费的API keys,如图:

其次,笔者注册后,点击账号后,获取的免费香的My API keys,如图:

最后,通过下面链接填写想要查询的城市,以及你的API keys验证是否生效,刚注册不是立即生效,一般要几分钟才会生效。

https://api.openweathermap.org/data/2.5/weather?q=Beijing,cn&APPID=你的API keys

尝试是否生效如:查看上海天气,返回结果如下(json串):

{"coord":{"lon":120.3972,"lat":30.9075},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"base":"stations","main":{"temp":302.55,"feels_like":306.17,"temp_min":302.55,"temp_max":302.55,"pressure":999,"humidity":67,"sea_level":999,"grnd_level":994},"visibility":10000,"wind":{"speed":2.17,"deg":38,"gust":1.59},"clouds":{"all":56},"dt":1754188875,"sys":{"country":"CN","sunrise":1754169272,"sunset":1754220397},"timezone":28800,"id":1816670,"name":"Shanghai","cod":200}
  • Rag增强检索系统搭建

    本文利用Ollama在本地部署DeepSeek-R1推理模型,搭建一个Rag增强检索知识库系统,同时此Rag系统也是本文智能体的Tools工具之一。

笔者之前有篇文章,已经讲过本地搭建一个基于DeepSeek部署Rag知识库的内容,其中有讲如何利用Ollama在本地部署DeepSeek-R1推理模型,笔者这里不再赘述。

AI Agent功能说明与代码实现


这里讲述AI Agent以查询天气为例,不代表智能体仅仅只能做这些,也不代表做这些就够了,若结合实际生产可用的场景做复杂的智能体,还有很多工作要做如多种工具实现,提示词工程(如解决反提示攻击、提示词注入问题),结合垂直领域大模型训练、微调、模型稳定性等等问题。这里便于读者简单快速上手,可从以下几个方面入手:

  • 本地部署DeepSeek-R1通用大模型,作为智能体大脑,理解用户指令,规划和执行任务等
  • 为Agent准备可执行调用的工具,如本文天气查询工具函数,还有一个Rag调用函数在上篇构建Rag文章,通过from lang_ollama_chroma import lang_rag引入。
  • 使用拉取ReAct提示模版,为用户指令添加上下文信息,引导大模型更智能拆解任务,对齐目标执行任务。
  • 用LLM、Tools可调用工具以及提示词模版来创建AI Agent智能体对象
  • 给智能体提问题,运行代码,查看结果

代码实现部分,直接附上可执行代码(环境准备好、包导入直接可运行的):

from langchain import hub
from langchain.agents import Tool, create_react_agent, AgentExecutor
from langchain_ollama import OllamaLLM
import requests

from lang_ollama_chroma import lang_rag

1. 配置本地DeepSeek模型(通过Ollama)

llm = OllamaLLM(
model=“deepseek-r1”, # 确保已通过ollama pull deepseek下载模型
base_url=“http://localhost:11434”,
temperature=0.5
)

2. 天气查询工具函数

def get_weather(city: str) -> str:
“”“获取指定城市的天气信息”“”
try:

替换为你的自己的OpenWeatherMap API密钥

api_key = “xxxxxxxxx94271055d4bc24628abf4”

调用天气API

response = requests.get(
“https://api.openweathermap.org/data/2.5/weather”,
params={
“q”: city,

“q”: “Shanghai,cn”,

“appid”: api_key,
“units”: “metric”, # 摄氏度
“lang”: “zh_cn” # 中文结果
}
)
data = response.json()

提取关键信息

return (
f"{data[‘name’]}当前天气:\n"
f"温度:{data[‘main’][‘temp’]}°C\n"
f"状况:{data[‘weather’][0][‘description’]}\n"
f"湿度:{data[‘main’][‘humidity’]}%"
)
except Exception as e:
return f"查询失败:{str(e)}"

3. 注册工具,这里可以注册多个工具(这里注册两个工具,一个API;一个Rag知识库)

tools = [
Tool( #查询天气API接口工具
name=“WeatherQuery”,
func=get_weather,
description=“查询城市天气的工具,输入参数为城市名称(如北京:Beijing,cn、上海:Shanghai,cn)”
),
Tool( #查询本地部署增强检索Rag知识库
name=“RAG_Retrieval”,
func=lang_rag,
description=“用于检索本地文档中的信息上海人工智能发展情况,输入应为具体查询问题”
)
]

4. 获取最新的ReAct提示词模板(从LangChain Hub)这是新版的核心变化:使用标准化提示词模板

prompt = hub.pull(“hwchase17/react”)

5. 创建Agent

agent = create_react_agent(
llm=llm,
tools=tools,
prompt=prompt
)

6. 创建Agent执行器(负责运行Agent并处理输出)

agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True # 显示思考过程,False不显示思考过程
)

7. 测试

if __name__ == “__main__”:
result = agent_executor.invoke({
“input”: “上海今天的天气怎么样?上海人工智能发展怎么样?”
})
print(“结果:”, result[“output”])

执行结果解析:

1)问题场景一:上海今天的天气怎么样?


这里需要说明一下天气API参数需要填写Shanghai,cn拼音,填写上海汉子是无法识别的。以下注释掉描述部分description="查询城市天气的工具,输入参数为城市名称(如北京:Beijing,cn、上海:Shanghai,cn

如果没在描述内,说明对应的编码,智能体没有上下文信息,以下是Agent的思考过程,回答不尽人意的,并没有调用正确的工具并提出正确的答案。

注:think标签 是agent思考过程;Action标签是去执行工具

2)问题场景二:上海今天的天气怎么样?


这里使用了description="查询城市天气的工具,输入参数为城市名称(如北京:Beijing,cn、上海:Shanghai,cn。再看Agent思考过程有点智能了。调用正确的工具并给出满意答案。

一起看一下大模型的思考过程:

“啊对了,系统提示中明确要求城市名称要转换成“Shanghai,cn”格式,这个细节不能错。虽然看起来简单,但天气工具每次调用都要精确匹配参数才行。“

3)场景问题三:上海今天的天气怎么样?上海人工智能发展怎么样?


Agent经过思考调用天气API;调用检索Rag知识库系统寻找答案,结果没找到答案,然后基于通用大模型DeepSeek的理解给出了答案。以下是Agent的思考过程:

附上文字版思考过程:

<
think
>
嗯,用户问的是“上海今天的天气怎么样?上海人工智能发展怎么样?”这个问题看起来是两个部分:一个是实时天气查询,另一个是关于上海
AI发展的现状和趋势
。

用户可能正在计划去上海旅游或者出差,想先了解当地的天气情况
。
同时ta对上海的科技产业感兴趣,特别是人工智能领域的发展状况,可能是为了考察就业机会
、
投资环境,或者是学术研究需要
。

对于天气部分,直接调用
WeatherQuery工具就能得到准确信息了
。
“人工智能发展”这部分属于本地文档知识库的内容,应该使用
RAG_Retrieval工具来查询
。
不过用户把两个问题混在一起问了,可能希望一次性获得完整回答
。

考虑到用户同时询问了天气和
AI发展这两个性质完全不同的事情,在回复时需要明确区分两部分信息,并分别说明数据来源的不同可靠性
。
天气是实时的,而
AI发展属于历史知识库内容
。
</
think
>
好的,我现在将开始分析这个问题并逐步解决
。

首先,我需要查询上海今天的天气情况,这可以通过调用 
WeatherQuery
 工具来实现
。
对于人工智能发展的部分,则可能需要从本地文档中检索相关信息,因此我会使用 
RAG_Retrieval
 工具
。
接下来,让我一步步执行这些操作
。
</
think
>
Thought
: 我需要分别处理这两个问题:查询上海今天的天气和了解上海人工智能的发展状况
。

-
 对于
"上海今天的天气怎么样?"
这个问题,我应该调用 `WeatherQuery` 工具,并输入城市名称 
"Shanghai,cn"
 来获取最新的天气信息
。
-
 对于
"上海人工智能发展怎么样?"
这个问题,它涉及本地文档中的知识(如旅游攻略或特定领域的介绍),所以我需要使用 `RAG_Retrieval` 工具
。
输入应该是具体的查询问题,比如
"上海的人工智能产业现状和发展趋势是什么?"

现在,我会先执行天气查询
。

Action
: 
WeatherQuery
Action
 
Input
: 
Shanghai
,cn
Shanghai当前天气:
温度:
29.29
°
C
状况:多云
湿度:
80
%<
think
>
嗯,用户让我查上海今天的天气和人工智能发展情况
。
首先得拆分成两个问题处理
。

先看第一个问题,“上海今天的天气怎么样”
。
这个应该用
WeatherQuery工具,输入Shanghai
,cn就行
。
不过我得确认一下返回的数据格式是不是标准的,比如温度
、
湿度这些数值是否准确显示
。

然后是“上海人工智能发展怎么样”,这属于需要本地文档的信息,所以要用
RAG_Retrieval工具
。
用户可能想知道的是当前的发展状况,包括政策支持
、
企业情况或者研究成果之类的
。
不过我得注意输入的问题描述要具体,不能太笼统,比如直接问
"上海的人工智能产业现状和发展趋势是什么?"
会更准确
。

接下来我要执行
WeatherQuery的查询
。
假设返回的数据是温度
29
°
C,多云,湿度80
%
,这些信息应该没问题
。
然后处理
RAG_Retrieval的部分,用户的问题需要明确指向人工智能发展的情况,可能涉及到政府政策
、
企业布局或者学术研究等方面
。
比如可以查
"上海的人工智能产业现状和发展趋势是什么?"
来获取更详细的信息
。

不过要注意的是,用户这两个问题的性质完全不同:一个是实时天气,另一个是历史知识库的内容
。
所以回答时要分开说明,并且指出天气信息可能有变化而
AI发展情况相对稳定,但需要引用本地文档才能准确回答
。
另外,用户可能是游客或商务人士,在计划行程前想了解当地气候和科技环境,这样能帮助ta做更好的准备
。
</
think
>
好的,我现在将开始分析这个问题并逐步解决
。

首先,我需要查询上海今天的天气情况,这可以通过调用 `WeatherQuery` 工具来实现
。
对于人工智能发展的部分,则可能需要从本地文档中检索相关信息,因此我会使用 `RAG_Retrieval` 巛具
。
接下来,让我一步步执行这些操作
。
</
think
>
Action
: 
WeatherQuery
  
Action
 
Input
: 
Shanghai
,cn  
Shanghai当前天气:
温度:
29.29
°
C
状况:多云
湿度:
80
%<
think
>
嗯,用户现在问的是上海今天的天气和人工智能发展情况
。
首先得分开处理这两个部分
。

先看天气查询的部分
。
刚才我调用了
WeatherQuery工具,结果显示上海今天是多云,温度大概在29
°
C左右,湿度80
%。
这个数据应该是比较准确的,但需要确认是否是最新的信息,因为用户可能是在实时获取天气来安排行程或者活动
。

接下来是人工智能发展的情况
。
这个问题属于本地文档的内容,比如旅游攻略或产业报告里可能会提到上海作为中国科技中心的发展情况
。
这时候应该用
RAG_Retrieval工具,输入一个明确的问题,例如
“上海的人工智能产业现状和发展趋势是什么?”
。
不过要注意用户可能想知道的是当前的政策支持
、
主要企业或者学术研究进展,而不仅仅是历史数据
。

然后需要考虑回答的结构
。
天气部分已经得到结果,但
AI发展这部分需要引用本地文档的信息,并且要说明这些信息是基于知识库的内容,而不是实时数据
。
同时,应该提醒用户如果有更具体的问题,比如某个公司的技术或具体的政策变化,可能需要进一步查询
。

另外,用户可能是游客或者商务人士,在计划去上海之前想了解当地的天气情况和科技环境,这样能帮助ta做出更好的行程安排或商业决策
。
不过也有可能是本地居民关注
AI产业动态,或者是学生做相关研究需要参考资料
。

最后要确保回答清晰分开两部分,并且指出信息来源的不同可靠性:实时天气可能有变化,而
AI发展的情况则基于历史知识库数据
。
</
think
>
Action
: 
RAG_Retrieval
  
Action
 
Input
: 上海的人工智能产业现状和发展趋势是什么?  
提示词模板创建
向量数据库检索器
{'query': '上海的人工智能产业现状和发展趋势是什么?  \n', 'result': 
"<think>
\n
嗯,用户问的是上海人工智能产业的现状和发展趋势。这个问题看起来挺专业的,可能是个科技行业从业者、投资人或者学生在做相关研究。
\n\n
用户提供的上下文全是关于HNSW算法的重复描述,和问题完全无关啊。这种情况下,我需要先确认自己是否理解正确——看来用户要么是误传了资料,要么是在测试我的信息筛选能力?
\n\n
作为DeepSeek助手,看到这个问题时确实有点困惑。因为当前提供的所有内容都是在详细解释HNSW(Hierarchical Navigable Small World)算法的原理和运作方式,与上海人工智能产业现状完全无关。
\n\n
这种情况下最好的回应就是诚实地告诉用户我无法回答这个问题,并建议他们提供相关领域的资料。毕竟作为负责任的知识助手,不能为了应付问题而给出不准确的回答。
\n
</think>
\n
I don't know."
}
<
think
>
好的,现在需要处理用户的查询:“上海今天的天气怎么样?上海人工智能发展怎么样?”
。

首先看第一个部分“上海今天的天气怎么样”
。
根据之前的工具调用记录,我注意到在第一次交互中已经成功使用了 `WeatherQuery` 工具来获取了上海市的最新天气信息
。
这些信息应该是准确且实时更新的,因此我可以直接引用并总结这部分内容
。

接着是第二个问题“上海人工智能发展怎么样?”
。
在这个部分里,用户似乎希望了解上海在人工智能领域的整体发展情况,包括产业现状
、
政策支持或未来趋势等
。
然而,在提供的上下文和检索结果中,并没有找到任何与上海人工智能产业发展相关的有效信息
。
这可能是因为相关资料并未包含在我当前访问到的本地文档知识库中
。

在这种情况下,我应该明确告知用户哪些部分得到了回答,以及哪些问题无法解决的原因
。
对于天气部分可以给出清晰
、
准确的回答;而对于
AI发展的问题,则需要说明缺乏相关信息,并建议用户提供更多背景或上下文以便更好地理解和回答
。
</
think
>
Thought
: 
I
 now know the 
final
 answer

Final
 
Answer
: 好的,我已经分别查询了上海今天的天气和人工智能发展情况:

1
. 
**
上海今天天气
**
:
   
-
 根据最新的气象数据,上海市当前的天气是多云,温度约为
29
°
C,湿度在80
%
左右
。
建议您根据实时变化调整行程
。

2
. 
**
上海人工智能发展
**
:
   
-
 抱歉,在我检索到的相关资料中没有找到关于“上海人工智能产业发展现状和趋势”的有效信息
。
   
-
 如果你能提供更多背景或上下文(比如具体的公司
、
技术方向或者时间段),我可以更好地理解和回答这个问题
。

>
 
Finished
 chain.
结果: 好的,我已经分别查询了上海今天的天气和人工智能发展情况:

1
. 
**
上海今天天气
**
:
   
-
 根据最新的气象数据,上海市当前的天气是多云,温度约为
29
°
C,湿度在80
%
左右
。
建议您根据实时变化调整行程
。

2
. 
**
上海人工智能发展
**
:
   
-
 抱歉,在我检索到的相关资料中没有找到关于“上海人工智能产业发展现状和趋势”的有效信息
。
   
-
 如果你能提供更多背景或上下文(比如具体的公司
、
技术方向或者时间段),我可以更好地理解和回答这个问题
。

Process
 finished with exit code 
0

另,通过同样问题多次提问,每次思考过程不一样,这也说明大模型思考不可解释性。同一个问题执行多次,Agent回答不一样,这也是其缺点之一,但都能正确地去调用相关工具执行,以下是运行两次思考过程

运行第一次:

运行第二次:

大模型算是目前当之无愧最火的一个方向了,算是新时代的风口!有小伙伴觉得,作为新领域、新方向人才需求必然相当大,与之相应的人才缺乏、人才竞争自然也会更少,那转行去做大模型是不是一个更好的选择呢?是不是更好就业呢?是不是就暂时能抵抗35岁中年危机呢?

答案当然是这样,大模型必然是新风口!

那如何学习大模型 ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。但是具体到个人,只能说是:

最先掌握AI的人,将会比较晚掌握AI的人有竞争优势。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

但现在很多想入行大模型的人苦于现在网上的大模型老课程老教材,学也不是不学也不是,基于此我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近100余次后,终于把整个AI大模型的学习路线完善出来!

在这里插入图片描述

在这个版本当中:

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型路线+学习教程已经给大家整理并打包分享出来, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型学习资源包》免费分享(安全咨料,放心领取)👈

一、大模型经典书籍(免费分享)

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源

在这里插入图片描述

二、640套大模型报告(免费分享)

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
在这里插入图片描述

三、大模型系列视频教程(免费分享)

在这里插入图片描述

四、2025最新大模型学习路线(免费分享)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方二维码免费领取

👉CSDN大礼包🎁:全网最全《LLM大模型学习资源包》免费分享(安全资料,放心领取)👈

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐