1.1 Agent 的定义
Agent 的概念在这两年从模糊,到泛滥,到收束的整个过程中逐渐清晰,它继承并拓展了其在上世纪 80 年代强化学习浪潮伊始中被确定的基础定义:
Agent 是一个在未知环境中,通过试错来实现最大化累计奖励的决策者和学习者. from Richard Sutton & Andrew Barto
定义对照
这个定义放到今天的 Agent 上,只需做一层对应:
“未知环境”→用户的问题、工具返回的结果、以及文件系统当前的状态
“累计奖励”→把用户交代的任务完成好
“试错”→一轮一轮地思考、行动,再根据反馈决定下一步(也就是后面要讲的 ReAct)
强化学习里“在环境中通过试错来最大化回报的学习者”,在今天并没有改变,只是环境换成了对话与工具,决策者换成了 LLM,试错换成了多轮循环。
在前序课程学习中我们应当已经了解了后面这一句话的含义,我们今天将中间阐述 Agent 在“环境”中的行为模式与行为准则。
在今天,Agent 特指能够完成复杂任务的自然语言助手,而下面这两行 python 伪代码源自 Anthropic 的内部技术分享,它揭示了 Agent 的核心原理:
env = Environment() tools = Tools(env) system_prompt = "Goals, constrains, and how to act" while True: action = llm.run(system_prompt + env.state) env.state = tools.run(action)
图 1 · Agent 的基本循环
state;目标与约束=喂给 LLM 的 system_prompt;工具=那条改变环境的边;循环=整个环形本身。短短几行伪代码,包含了一个 Agent 的全部要件:
环境
envagent 能观察到的外部状态
工具
toolsagent 能改变环境的手段
目标与约束
system_prompt告诉它要去哪里、不能做什么
循环
while True观察、决策、行动,然后再观察
同时,它也直观地揭示了 Agent 的几个基本行为特征:
- 要不要多步
- 要不要动用工具
- 如何在步与步之间决策下一步的动作
1.2 Agent 与其它概念的比较
以上述的三个基本特征作为参考维度,我们将 Agent 与在大语言模型领域常见的几种易混淆的概念进行对比,做成了一张表格:
| 类型 | 是否多步 | 是否调用工具 | 自主动机 | 一句话定义 |
|---|---|---|---|---|
| chatbot | 否 | 否 | 否 | 按预设策略回答问题 |
| RAG | 单步 / 固定若干步 | 仅检索 | 否 | 通过检索驱动的 LLM 问答 |
| Workflow | 多步 | 多种工具 | 否(路径写死) | 预设流程图编排的 LLM 流程 |
| RPA | 多步 | UI 操作 | 否(坐标写死) | 机械的自动化脚本 |
| Agent | 多步 | 多种工具 | 是(LLM 自裁) | LLM 在循环里自主决策、自主用工具 |
1.3 Agent 的技术定义
最后我们直接抛出当前业内对 Agent 的理解共识:
Agent=LLM+ReAct+Harness
会话能力 · 连续干活的范式 · 工程脚手架
我们将通过以下章节来完整的解读并演示以上“公式”的含义