本篇文章介绍使用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是人工智能代理,是一种能自主感知环境、做出决策并执行任务的智能系统,其核心功能体现在以下方面:
-
自主感知与理解
-
接收外部信息用户指令(自然语言,说白点就是人话),并进行解析(如自然语言理解、数据提取)做任务拆解,明确任务目标。
例:查询上海天气情况,agent提取地点:上海 Shanghai,cn,再去调用天气网站API去查询
-
-
决策与规划
-
根据目标和环境,制定分步执行计划,选择最优策略。
例:用户一次问两个问题:1)上海天气情况,2)上海人工智能发展如何(同时问两个不相关的问题)。agent规划先去解决第一个天气问题“上海天气情况”;再去解决“上海人工智能发展如何”等
-
-
工具调用与执行
-
调用外部工具(如 API、数据库、RAG)完成具体操作,无需人工介入,这些部署DeepSeek作为智能体大脑来去执行。
例:用户一次问两个问题:1)上海天气情况,2)上海人工智能发展如何。AI agent思考用调用天气网站API回答第一个天气问题;思考用Rag知识库回答第二问题AI发展如何,如Rag知识库中没有检索到相关知识,最后智能基于DeepSeek本地部署大模型去回答用户问题
-
-
动态调整与迭代
-
监控任务执行过程,根据反馈(如操作失败、信息变更)调整策略。
例:股票监控 Agent 发现价格波动超出预期,自动重新分析并调整提醒阈值。
-
-
多任务协同
-
多个 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接口工具](javascript:😉
name=“WeatherQuery”,
func=get_weather,
description=“查询城市天气的工具,输入参数为城市名称(如北京:Beijing,cn、上海:Shanghai,cn)”
),
Tool( [#查询本地部署增强检索Rag知识库](javascript:😉
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: WeatherQueryAction Input: Shanghai,cnShanghai当前天气:温度: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>\nI 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回答不一样,这也是其缺点之一,但都能正确地去调用相关工具执行,以下是运行两次思考过程
运行第一次:
运行第二次:
写在最后
在人工智能浪潮中,与其焦虑替代风险,不如拥抱技术浪潮主动进化。AI 不是对手,而是解放创造力的工具 —— 它能高效处理重复劳动,让我们聚焦更具价值的思考与创新。
保持学习热情,将 AI 视为协作伙伴:用大模型提升工作效率,借数据工具洞察趋势,靠编程能力拓展技术边界。同时深耕独特优势,人类的共情力、创造力和复杂决策能力,仍是 AI 难以替代的核心竞争力。以开放心态拥抱变化,在人机协作中找到新定位,在技术迭代中积累跨界能力。
每一次技术革命都孕育新机遇,积极融入、持续成长,方能在智能时代立于潮头,收获更广阔的发展空间。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。
希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容
-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集
从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)
07 deepseek部署包+技巧大全
由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发