四十:Agent 概述¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484525&idx=1&sn=5f4bc99c49405beb97876d91ff3d6134&chksm=f01eb714c7693e02240eb04b14f2a5ab1d18a4c3367a95f1ba714466146601a54c0bbee27324#rd
1. 学习范围¶
本日主题是 Agent 概述与 Agent 分类,重点是理解什么是 LLM Agent、它由哪些组件组成、有哪些分类方式,以及和普通 Chatbot、RAG、Workflow、Tool Calling 的区别。 本日覆盖: - LLM Agent 的定义和核心特征。
-
Agent 的基本组件:模型、目标、规划、工具、记忆、环境、执行器、反馈。
-
Agent 与 Chatbot、RAG、Workflow、传统自动化脚本的区别。
-
Agent 分类:按自主性、工具使用、任务类型、记忆能力、单/多 Agent、执行环境分类。
-
工具调用、函数调用、权限、安全和可观测性。
-
Agent 系统的常见失败模式和生产化原则。
2. Agent 的基本定义¶
广义上,Agent 是能够感知环境、基于目标做决策并采取行动的系统。LLM Agent 是以大语言模型为核心决策器,能够理解任务、规划步骤、调用工具、观察结果并迭代完成目标的系统。
一个简化定义:
不是所有调用 LLM 的程序都是 Agent。只有当系统具备一定的目标驱动、行动能力和反馈循环时,才更接近 Agent。3. Agent 与 Chatbot¶
Chatbot 通常是对话式问答系统,主要根据用户输入生成回复。它可以没有工具、没有长期记忆、没有执行动作。 Agent 则更强调行动: - 能拆解任务。
-
能调用工具。
-
能观察工具结果。
-
能根据结果调整下一步。
-
能在多步过程中追求目标。
例如:
4. Agent 与 Workflow¶
Workflow 是工程师预先定义的固定流程,例如:
Agent 则可以根据任务动态决定路径。 区别: - Workflow 稳定、可控、易测试。- Agent 灵活、适合开放任务,但不稳定、难评估。
生产系统常采用混合方式:固定关键流程,把有限决策点交给 Agent。
5. Agent 与 Tool Calling¶
Tool calling 是 LLM 调用外部函数或工具的能力。它是 Agent 的重要组件,但不等于完整 Agent。 只调用一次天气 API 并回答,不一定是 Agent。若系统能规划多步任务、根据工具结果继续行动、处理失败和修正,就更像 Agent。
6. Agent 的核心组件¶
典型 Agent 组件: - LLM:理解、推理、规划和生成。
-
Goal:任务目标或用户意图。
-
Planner:把目标拆成步骤。
-
Tools:搜索、数据库、代码执行、浏览器、API。
-
Memory:短期上下文、长期记忆、中间状态。
-
Executor:执行工具调用。
-
Environment:工具和外部世界。
-
Observation:工具返回结果。
-
Critic/Verifier:检查结果。
-
Controller:控制循环、停止、回退和权限。
这些组件不一定都显式存在,但越复杂的 Agent 越需要明确设计。
7. Agent 的感知、决策、行动循环¶
Agent 的基本循环:
在 LLM Agent 中: - Observe:读取用户输入、上下文、工具结果。
-
Think/Plan:分析目标、制定下一步。
-
Act:调用工具或输出。
-
Observe:获取工具结果。
-
Final:完成任务或返回失败原因。
ReAct 就是这一循环的典型提示范式。
8. Agent 分类:按自主性¶
按自主性可以分为:
8.1 低自主 Agent¶
流程基本固定,只在少量节点做选择。例如固定 RAG 管线中让模型选择是否检索。
8.2 中等自主 Agent¶
能选择工具、拆分任务、重试失败,但受最大步数和工具白名单限制。
8.3 高自主 Agent¶
能长期规划、跨会话执行、主动探索和调用多个系统。风险和不可控性也最高。 生产系统通常偏低到中等自主。
9. Agent 分类:按工具使用¶
按工具能力可以分为: - No-tool Agent:只靠 LLM 内部知识和上下文。
-
Retrieval Agent:能检索文档或知识库。
-
Tool-using Agent:能调用 API、数据库、搜索、计算器。
-
Code Agent:能写代码、执行代码、分析结果。
-
Browser Agent:能浏览网页、点击、填写表单。
-
Embodied Agent:能控制机器人或游戏环境。
工具越强,权限和安全越重要。
10. Agent 分类:按记忆能力¶
按记忆能力: - Stateless Agent:每次任务独立。
-
Short-term Memory Agent:使用当前对话和中间状态。
-
Long-term Memory Agent:跨会话保存用户偏好、经验和知识。
-
Episodic Memory Agent:保存任务轨迹和案例。
-
Semantic Memory Agent:保存结构化知识。
记忆可以提升连续任务能力,但也带来隐私、过期和污染问题。
11. Agent 分类:按任务类型¶
常见任务类型: - Research Agent:资料搜索、阅读、综合。
-
Coding Agent:代码修改、测试、调试。
-
Data Agent:数据分析、SQL、可视化。
-
RAG Agent:多源检索问答。
-
Workflow Agent:业务流程自动化。
-
Customer Support Agent:客服工单处理。
-
Personal Assistant:日程、邮件、提醒。
不同任务对工具、记忆、权限和验证要求不同。
12. Agent 分类:按单/多 Agent¶
单 Agent: - 架构简单。
-
通信成本低。
-
适合大多数任务。
多 Agent: - 多角色协作,例如 planner、researcher、coder、critic。
-
适合复杂任务分工。
-
但通信成本高,冲突和协调更复杂。
多 Agent 不是越多越好。很多任务用单 Agent 加工具就够。
13. Agent 的工具设计¶
工具设计要明确: - 工具名称。
-
工具用途。
-
参数 schema。
-
返回格式。
-
权限范围。
-
错误处理。
-
成本和超时。
-
是否需要人工确认。
工具描述要具体,避免模型误用。例如:
14. Agent 的记忆设计¶
记忆设计要回答: - 记什么?
-
什么时候写入?
-
什么时候读取?
-
如何过期?
-
如何删除?
-
如何防止错误记忆污染?
常见记忆: - 对话摘要。
-
用户偏好。
-
任务状态。
-
工具调用历史。
-
成功/失败案例。
-
长期知识。
记忆必须有权限和隐私控制。
15. Agent 的安全边界¶
Agent 安全风险: - prompt injection。
-
越权工具调用。
-
泄露系统提示或敏感数据。
-
执行破坏性操作。
-
被外部网页或文档诱导。
-
错误记忆污染。
-
循环调用造成成本失控。
安全措施: - 工具白名单。
-
参数校验。
-
权限控制。
-
高风险操作人工确认。
-
最大步数和超时。
-
日志审计。
-
输出安全审查。
16. Agent 的可观测性¶
Agent 系统必须记录 trace: - 用户请求。
-
计划。
-
工具选择。
-
工具参数。
-
工具返回。
-
中间状态。
-
错误和重试。
-
最终输出。
-
token、延迟、成本。
没有 trace,Agent 出错时很难定位是计划、工具、记忆还是生成问题。
17. Agent 常见失败模式¶
常见失败: - 目标理解错误。
-
计划不合理。
-
工具选择错误。
-
工具参数错误。
-
忽略工具结果。
-
编造工具结果。
-
循环调用。
-
过早停止。
-
记忆污染。
-
权限越界。
排查时按“目标 -> 计划 -> 工具 -> 观察 -> 记忆 -> 输出”分层分析。
18. Agent 生产化原则¶
生产 Agent 要遵循: - 能用 workflow 固定的部分尽量固定。
-
只在需要灵活决策处使用 Agent。
-
工具必须 schema 化。
-
高风险操作必须确认。
-
默认最小权限。
-
每步可观测。
-
有失败降级策略。
-
有离线评估和线上监控。
Agent 的价值是处理开放任务,但生产系统必须把开放性限制在可控边界内。
19. 核心总结¶
Agent 的核心是目标驱动的感知、决策和行动循环。LLM Agent 用 LLM 做推理和控制,用工具连接外部世界,用记忆保持状态,用反馈修正行为。 分类维度包括: - 自主性。
-
工具能力。
-
记忆能力。
-
任务类型。
-
单/多 Agent。
-
执行环境。
面试中要避免把“调用一次工具”直接等同于 Agent。真正的 Agent 需要围绕目标组织多步行动和反馈。
20. 参考资料¶
-
Agent 概述: https://www.woshipm.com/ai/6082990.html
-
如何使用 Agent 工具: https://zhuanlan.zhihu.com/p/17412460686
-
ReAct paper: https://arxiv.org/pdf/2210.03629
-
LangChain Agents docs: https://python.langchain.com/docs/concepts/agents/
-
OpenAI Agents guide: https://platform.openai.com/docs/guides/agents
预览时标签不可点<div class="