跳到主要内容
大模型智能体(Agent)核心机制与开发指南 | 极客日志
Python AI 算法
大模型智能体(Agent)核心机制与开发指南 综述由AI生成 大模型智能体(Agent)是基于大语言模型、具备规划、记忆和工具使用能力的通用问题解决器。详细阐述了智能体的核心架构,包括规划(Planning)中的子任务分解、思维链(CoT)、思维树(ToT)及 ReAct 模式;记忆(Memory)中的短期上下文与长期向量库存储;工具使用(Tool use)中的 Function Calling 机制及 OpenAI API 实现。此外,文章介绍了智能体开发框架如 MetaGPT,探讨了多智能体协作模式,并补充了安全性、性能优化及评估指标等最佳实践,旨在为开发者提供从理论到落地的完整指南。
漫步 发布于 2025/2/7 更新于 2026/6/5 22 浏览大语言模型 vs 人类
大语言模型(LLM)非常强大,如同拥有思考能力的大脑。然而,仅凭大脑无法与世界互动。如果给 LLM 配备上四肢和工具,它是否能打破次元壁,从数字世界走向现实世界?
LLM 可以接受输入、分析推理、输出文字或代码。但其缺乏人类的规划 思考能力、运用工具 与物理世界互动的能力,以及记忆 能力。
LLM :接受输入、思考、输出
人类 :LLM + 记忆 + 工具 + 规划
若为 LLM 配备与物理世界互动的工具、记忆能力及规划思考能力,它将能像人类一样自主思考并规划任务过程,检索记忆,使用工具提高效率,最终完成复杂任务。
智能体是什么
智能体的英文是 Agent。业界对其有多种定义,个人理解,智能体是一种通用问题解决器。从软件工程角度看,智能体是一种基于大语言模型的、具备规划思考能力、记忆能力、使用工具函数能力的计算机程序,能自主完成给定任务。
如图 1 所示,在基于 LLM 的智能体中,LLM 充当'大脑'角色,同时还有 3 个关键部分:
规划(Planning)
智能体会把大型任务分解为子任务 ,并规划执行流程;对任务执行过程进行思考和反思 ,决定继续执行或终止运行。
记忆(Memory)
短期记忆 :执行任务过程中的上下文,在子任务执行中产生和暂存,任务完结后清空。
长期记忆 :长时间保留的信息,通常指外部知识库,用向量数据库存储和检索。
工具使用(Tool use)
为智能体配备工具 API,如计算器、搜索工具、代码执行器、数据库查询工具等。有了这些工具 API,智能体就可以与物理世界交互,解决实际问题。
智能体能做什么
智能体之调研员
调研员智能体可根据用户的调研问题,从搜索引擎搜索资料并总结,生成调研报告。这里以 MetaGPT 框架中的调研员示例展示智能体的实际作用。
运行示例
输入调研课题 :调研特斯拉 FSD 和华为 ADS 这两个自动驾驶系统
python3 -m metagpt.roles.researcher "特斯拉FSD vs 华为ADS"
输出调研报告
MetaGPT 生成并保存了调研报告。
拆解调研员 仅有 LLM 大脑无法完成整个调研流程。在调研员智能体中,为 LLM 配备了规划、工具、记忆的能力。其基本构成包括角色、工具、记忆三部分。在角色中,注册各种工具,定义思考规划方式,以及具备短期记忆能力。
智能体的关键构成
规划(Planning) 规划可理解为观察和思考。类比人类思维模式:接到任务后思考如何完成,审视手头工具及使用方法,将任务拆分成子任务,执行过程中反思完善,思考何时终止。
我们希望智能体拥有这种思维模式,通过 LLM 提示工程赋予其以下能力:
子任务分解 通过 LLM 使智能体把大型任务分解为更小的、更可控的子任务,有效完成复杂任务。
思维链(Chain of Thoughts, CoT) 思维链是一种标准提示技术,能显著提升 LLM 完成复杂任务的效果。要求 LLM「think step by step」,使其将问题分解成多个步骤逐步解决,输出结果更准确。
template = "Answer the question: Q: {question}? Let's think step by step:"
思维树(Tree-of-thought, ToT) 对 CoT 的扩展,在每一步推理出多个分支,拓扑展开成思维树。使用启发式方法评估每个分支贡献,选择搜索算法(BFS 或 DFS)探索思维树,进行前瞻和回溯。
反思和完善 智能体在执行过程中,通过 LLM 对完成的子任务进行反思,从错误中吸取教训,完善未来步骤,提高质量。同时反思任务是否完成并终止。
ReAct ReAct(Yao et al. 2023)提出结合推理(Reasoning)和行动(Acting)来增强 LLM 效果。
推理 :基于已有知识或行动后获取的知识推导结论。
行动 :根据实际情况使用工具获取知识或完成子任务。
结合推理和行动能有效增强完成任务能力。例如调研问题:
仅推理 :LLM 仅基于已有知识,若无相关知识易产生幻觉。
仅行动 :仅使用工具搜索,得到海量资料,无法直接回答问题。
推理 + 行动 :LLM 先审视知识,不足则调用工具(如搜索),获取新信息后重复推理和行动,直到完成任务。
推理 1:当前知识不足以回答,需知道「特斯拉 FSD」和「华为 ADS」
行动 1:使用搜索工具搜索资料
观察 1:总结行动 1 内容
推理 2:得知是两个自动驾驶方案对比,需生成报告
行动 2:使用生成报告工具
观察 2:任务完成
Thought(思考): ...
Action(行动): ...
Observation(观察): ...
(Repeated many times)
记忆(Memory) 记忆是大脑存储、保留和回忆信息的能力。分为短期记忆和长期记忆。
短期记忆 :当前任务执行过程中产生的信息,如工具或子任务执行结果,写入短期记忆。任务完结后被清空。
长期记忆 :长时间保留的信息,一般指外部知识库,通常用向量数据库存储和检索。
工具使用(Tool use) LLM 是数字世界程序,与现实世界互动离不开工具。工具可以是锤子、螺丝刀,也可以是函数(function)、SDK。在智能体中,工具就是函数,工具使用就是调用函数。
Function Calling Function Calling 是实现 LLM 连接外部工具的机制。调用方描述函数功能、参数说明,让 LLM 根据用户输入选择合适的函数,并将自然语言转换为请求参数(JSON 格式)。调用方使用返回的参数调用函数,将响应传给 LLM 组织回复。
不同 LLM 的 API 接口协议有所不同,下文以 OpenAI 的 API 协议为例说明。
函数描述 假设函数已实现,需向 LLM 描述该函数。必备要素:函数名、功能描述、请求参数说明、响应参数说明。
{
"type" : "function" ,
"function" : {
"name" : "get_n_day_weather_forecast" ,
"description" : "获取最近 n 天的天气预报" ,
"parameters" : {
"type" : "object" ,
"properties" : {
"location" : {
"type" : "string" ,
"description" : "城市或镇区 如:深圳市南山区"
} ,
"format" : {
"type" : "string" ,
"enum" : [ "celsius" , "fahrenheit" ] ,
"description" : "要使用的温度单位"
} ,
"num_days" : {
"type" : "integer" ,
"description" : "预测天数"
}
} ,
"required" : [ "location" , "format" , "num_days" ]
}
}
}
调用 LLM 获得函数的请求参数 Function Calling 通过请求 LLM 的 chat API 实现。支持 Function Calling 模型的 chat API 参数中有 functions 或 tools 参数。传入此参数,大模型知道可用函数,并根据用户输入推理调用哪些函数,返回请求参数。
from openai import OpenClient
def chat_completion_request (messages, tools=None , tool_choice=None , model="gpt-3.5-turbo" ):
try :
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
tool_choice=tool_choice,
)
return response
except Exception as e:
print (f"Exception: {e} " )
return e
if __name__ == "__main__" :
messages = []
messages.append({"role" : "system" , "content" : "不要假设将哪些值输入到函数中。如果用户请求不明确,请要求澄清" })
messages.append({"role" : "user" , "content" : "未来 5 天深圳南山区的天气怎么样" })
chat_response = chat_completion_request(messages, tools=tools)
tool_calls = chat_response.choices[0 ].message.tool_calls
print ("===回复===" )
print (tool_calls)
[
{
"id" : "call_7qGdyUEWp34ihubinIUCTXyH" ,
"function" : {
"arguments" : "{\"location\":\"深圳市南山区\",\"format\":\"celsius\",\"num_days\":5}" ,
"name" : "get_n_day_weather_forecast"
} ,
"type" : "function"
}
]
调用函数 调用方获得 LLM 返回的函数调用信息后,自行调用函数,得到响应。如有需要,将响应追加到对话历史传给 LLM,组织成自然语言回复。
for tool_call in tool_calls:
function = tool_call.function.name
arguments_list = json.loads(tool_call.function.arguments)
function_to_call = globals ().get(function)
result = function_to_call(**arguments_list)
print ("===" + function + "===" )
print (result)
messages.append({
"tool_call_id" : tool_call.id ,
"role" : "user" ,
"name" : function,
"content" : "函数执行结果为:" + str (result)
})
chat_response = chat_completion_request(messages, tools=tools)
print ("===回复===" )
print (chat_response.choices[0 ].message.content)
===get_n_day_weather_forecast===
[{'date' : '2023-04-01' , 'location' : '深圳市南山区' , 'temperature' : '20°C' , 'description' : '晴朗' }, ...]
===回复===
未来 5 天深圳南山区的天气情况如下:
- 4 月 1 日:晴朗,温度 20 °C
...
智能体的开发框架 2024 年开发 AI 智能体比初期方便许多。随着需求火热,智能体框架层出不穷,抽象封装高频模块(记忆、规划、RAG、大模型调用)。使用框架可快速搭建智能体。
根据 awesome-ai-agents 整理,开源和闭源框架在自定义智能体、编码、研究、数据分析、多智能体等领域均有代表性产品。
上文提到的 MetaGPT 是一个多智能体框架。多智能体框架帮助开发由多个不同职责智能体组合的系统。例如开发软件团队,包含开发(coder)、测试(tester)、评审人(reviewer)三个智能体,各司其职协作。
智能体开发最佳实践
安全性考量 智能体拥有执行工具的能力,必须考虑安全性。防止 Prompt Injection 攻击,限制智能体可访问的工具范围,对敏感操作增加人工确认环节。确保工具调用的鉴权机制健全,避免凭证泄露。
性能优化 长上下文窗口虽大但成本高昂。合理管理短期记忆,及时清理无用信息。对于长期记忆,采用高效的向量检索策略,减少延迟。批量处理工具调用以减少 API 请求次数。
评估指标 评估智能体表现需关注任务完成率、响应时间、资源消耗及输出质量。建立自动化测试集,模拟真实场景验证智能体的鲁棒性。定期复盘失败案例,优化提示词和工具配置。
展望 随着大模型百花齐放,LLM 支持更长上下文、更大参数规模,推理能力愈发强大。基于大模型搭建的智能体能力边界不断突破。通过智能体技术,我们可以创建 Copilot、DB-GPT 等各种 AI 应用。AI 应用将快速全面重构软件形态和交互方式,提升人类生产效率。
智能体技术正处于快速发展期,开发者应关注最新框架动态,深入理解底层原理,构建安全、高效、可靠的智能应用。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online