只用大语言模型(LLM),就像一个只有大脑的人——能想,但没法跟现实世界打交道。我们要给它装上手脚,让它能自己规划、调用工具、记住关键信息,这样才能独立完成一个任务。这就是智能体(Agent)要解决的问题。
我理解里的 Agent,本质上是一个通用问题解决器。从软件工程角度看,它是一个基于 LLM、具备规划思考能力、记忆能力和工具使用能力的程序,能自主完成给定的任务。
智能体的三个核心组件
除了作为大脑的 LLM,一个能落地的 Agent 还需要规划(Planning)、记忆(Memory)和工具使用(Tool Use)。这三样东西让它从'会聊天的模型'变成'能干活的助手'。
规划:学会把大任务拆碎
我们接到一个任务时,本能会先想怎么做、有什么资源、怎么拆成子任务、过程中怎么反思调整。Agent 也要有这种思维模式,而 LLM 本身没有,必须靠提示工程来注入。
我现在常用两种手段来提升规划能力:
- 子任务分解:让 LLM 把复杂任务拆成更小、更可控的步骤。
- 思维链(CoT):告诉它'think step by step',模型就会一步一步推理,通常结果更靠谱。基本 Prompt 像这样:
Answer the question: Q: {question}? Let's think step by step:
但 CoT 是线性的,遇到岔路怎么办?思维树(ToT) 就是在每一步生成多个分支,再用广度优先或深度优先去探索,相当于让模型能前瞻和回溯。
另外,只用推理不行,只用工具也不行。ReAct 把推理和行动揉在一起,让模型边想边做边观察,然后再根据新信息继续推理,形成循环。拿'调研特斯拉 FSD 和华为 ADS'举例:
- 推理:光靠自己知识不够,得去搜。
- 行动:调用搜索工具查这两个关键词,拿到资料。
- 观察:总结搜到的内容。
- 推理:现在信息够了,该生成报告。
- 行动:调报告工具输出。
整个过程模型反复输出 Thought → Action → Observation,直到任务结束。ReAct 的 Prompt 模板大概就是重复这三步,直到完成。
记忆:别一次对话完就忘光
人类的记忆分短时和长期,Agent 也类似。
- 短期记忆:当前任务执行中产生的上下文,比如某个子任务的结果、工具返回的内容。任务跑完就清掉。
- 长期记忆:需要跨对话保留的信息,一般用向量数据库存储和检索,外面套一个知识库。
以前做纯对话应用时,这部分很容易被忽略。但一旦让模型跨多个步骤完成任务,记忆就是必需品。
工具使用:让 LLM 能动手
LLM 本质上是数字世界的程序,想查天气、算公式、操作数据库,都得靠外部函数。工具就是封装好的函数,工具使用就是调用函数。
现在主流做法是 Function Calling:调用 LLM 时,你告诉它有哪些函数可用、每个函数怎么传参,模型根据用户的自然语言决定调用哪个,并吐出结构化的参数 JSON。你的程序拿到参数后自己去执行函数,再把结果传回给模型,让它用自然语言回复。
我用 OpenAI 的 SDK 来演示整个过程。
1. 描述函数
假设我们实现了一个获取天气预报的函数,描述大概这样:
{
"type": "function",
"function": {
"name":


