大模型 AI Agent 实现 Action 的机制与流程详解
智能体(Agent)的表现能力高度依赖于底座大模型。如果你想做 AI 智能体方向的产品,必须对智能体运转的原理有大致了解,否则项目很可能在中期遇到瓶颈。Agent 有多种实现模式,其中 ReAct 模式是最早出现且目前使用最广泛的模式。本文将深入介绍 Agent 的组成部分、Action 的执行机制以及其背后的技术原理。
Agent 组成部分
ReAct 模式的典型流程可以用一个循环来描述:思考(Thought)→ 行动(Action)→ 观察(Observation),简称 TAO 循环。
- 思考(Thought):和人一样,面对一个问题,LLM 需要进行深入的推理。这是一个推理步骤,它确定了 LLM 将如何解决问题并确定要采取的行动。基于思考,LLM 决定下一步操作。
- 行动(Action):确定了思考的方向后,执行相应的措施或调用特定任务。例如调用 Wikipedia API 搜索数据,或查询天气接口。根据行动结果提供的新信息,LLM 进入观察阶段。
- 观察(Observation):行动之后,必须仔细观察结果。这一步是检验行动是否有效,是否接近了问题的答案。如果 LLM 认为得到了答案,则结束问题;否则根据观察,LLM 再次产生新的想法,过程重复直到得到最终答案。
TAO 循环示意图如下所示:
[用户输入] -> [Thought]
|
v
[Action] -> [工具调用] -> [Observation]
^ |
|____________________|
(循环)
实操案例:天气查询与穿衣建议
为了更直观地理解,我们构建一个包含两个工具的示例场景:
get_current_weather:通过 API 查询给定城市的天气信息(温度、体感温度、湿度、风速)。输入参数为城市位置。get_current_time:查询当前时间。无输入参数。
用户输入:"今天我将从北京飞往三亚,请根据天气情况给我定制穿衣计划。"
TAO 循环真实案例:
{'role': 'user', 'content': '\nQuestion:今天我将从北京飞往三亚,请根据天气情况给我定制穿衣计划'},
{'role': 'assistant', 'content': 'Thought: 需要获取北京和三亚的实时天气信息。\nAction: get_current_weather\nAction Input: {"city_name": "北京"}'},
{'role': 'user', 'content': '\nObservation:{"城市位置": "北京", "温度": "23.94 C°", "体感温度": "23.28 C°", "湿度": "34%", "风速": "2.82 m/s"}'},
{'role': 'assistant', 'content': 'Thought: 需要获取三亚的实时天气信息。\nAction: get_current_weather\nAction Input: {"city_name": "三亚"}'},
{'role': 'user', 'content': '\nObservation:{"城市位置": "三亚", "温度": "30.09 C°", "体感温度": "36.28 C°", "湿度": "74%", "风速": "4 m/s"}'},
{'role': 'assistant', 'content': 'Thought: 根据获取到的天气信息,可以为从北京前往三亚的旅程制定穿衣计划。... Final Answer: ...'}
可以发现 TAO 循环的具体实现形式仍然是问答的形式。大模型通过思考了解需要分别调用工具查询北京和三亚的天气,并且最后在 Final Answer 提出着装建议。
Agent 如何进行 Action
在上述例子中,Observation 为工具 API 调用的结果。那么大模型是如何形成 TAO 循环、选择正确的 Action 并识别出 Action Input 的呢?这主要依赖于提示工程以及输出数据结构化。
提示工程
首先,需要构造系统提示词(system_prompt),它是模型输入的一部分。这里套用 ReAct 中的提示词模板,并结合上述两种工具进行设计:


