Agent 概念

Agent 的核心是让大模型自主决策、调用工具、执行多步任务

一、Agent 核心概念与架构

1. Agent 的定义与组成

  • 核心组件:LLM(大脑)+ 工具(Tools)+ 记忆(Memory)+ 规划(Planning)
  • 与 RAG 的区别:RAG 是“检索-增强生成”,Agent 是“推理-行动循环”
  • 典型流程:观察(Observe)→ 思考(Think)→ 行动(Act)→ 循环

2. Agent 的类型

  • ReAct 模式:交替进行推理(Reasoning)和行动(Acting),输出可解释的轨迹
  • Function Calling Agent:利用模型自带的函数调用能力,直接输出结构化工具调用
  • Plan-and-Execute Agent:先规划步骤,再逐步执行(适合复杂任务)
  • 多智能体系统:多个 Agent 协作(如 AutoGen、CrewAI)

二、推理与规划机制

1. 推理方法

  • Chain-of-Thought (CoT):让模型逐步推理
  • Tree-of-Thoughts (ToT):探索多条推理路径
  • Graph-of-Thoughts (GoT):更复杂的推理图结构

2. 规划策略

  • 任务分解:将大任务拆分为子任务(如使用 Plan-and-Solve)
  • 重新规划:根据执行结果动态调整计划
  • 使用规划工具:如 LangGraph 的状态图规划

3. 关键提示技术

  • ReAct 提示模板:Thought: ... Action: ... Observation: ...
  • CoT 提示:Let's think step by step.

三、工具(Tools)与函数调用

1. 工具的定义与封装

  • 如何将任意 Python 函数/API 封装成 Agent 可调用的工具
  • 工具的描述文档(对 LLM 至关重要)

2. 常用工具类型

  • 信息检索:搜索引擎(Google/Bing)、数据库查询、API 调用
  • 代码执行:Python REPL、Bash 终端
  • 文件操作:读写文件、图像处理
  • 计算器:数学表达式计算
  • 外部服务:发送邮件、创建日历事件、调用内部 API

3. 工具调用方式

  • OpenAI Function Calling:模型输出 JSON 结构,由框架解析执行
  • LangChain Tools:使用 @tool 装饰器,自动生成 schema
  • 自定义解析器:从模型文本输出中解析工具名称和参数

4. 工具选择与路由

  • Tool Router:根据用户意图自动选择合适的工具
  • 多工具协作:一个 Agent 调用多个工具完成子任务

四、记忆(Memory)管理

Agent 需要比 RAG 更复杂的记忆系统,因为需要记住对话历史、中间步骤、长期偏好。

1. 记忆类型

  • 短期记忆:当前对话上下文(滑动窗口)
  • 长期记忆:向量数据库存储历史交互、用户画像
  • 工作记忆:当前任务执行过程中的中间状态

2. 记忆组件(以 LangChain 为例)

  • BufferMemory:保存最近 N 条对话
  • VectorStoreRetrieverMemory:从向量库检索相关记忆
  • ConversationSummaryMemory:对旧对话生成摘要压缩
  • EntityMemory:存储关于特定实体(人物/地点)的信息

3. 记忆与 RAG 的区别

  • RAG 通常只检索外部知识库,而 Agent 的记忆包含自身行动历史和环境反馈

五、Agent 框架

1. LangChain Agent

  • 旧版 AgentExecutor(功能完整但灵活性一般)
  • 新版 LangGraph(推荐):基于图的状态机,支持循环、分支、人机交互

2. AutoGen(微软)

  • 多智能体对话框架,支持多个 Agent 协同工作
  • 内置 UserProxyAgent、AssistantAgent 等角色

3. CrewAI

  • 角色化 Agent 团队,适合任务编排

4. LlamaIndex Agent

  • 与 RAG 紧密集成,提供 ReActAgent、OpenAIAgent

5. OpenAI Agents SDK

6. 手写 ReAct 循环(理解原理)

while True:
    thought = llm.generate(prompt + history)
    if "Final Answer" in thought:
        break
    action = parse_action(thought)
    observation = execute_tool(action)
    history += f"Observation: {observation}\n"

六、关键进阶主题

1. 错误处理与鲁棒性

  • 重试机制:工具调用失败后的重试
  • 解析错误:模型输出非预期格式时的 fallback
  • 循环检测:防止 Agent 陷入无限循环

2. 人机协作(Human-in-the-Loop)

  • 关键步骤请求用户确认
  • 允许用户中途修改计划

3. 评估与调试

  • 轨迹评估:检查 Agent 的推理链条是否合理
  • 工具成功率:统计工具调用的正确率
  • 任务完成率:端到端的成功率
  • 常用工具:LangSmith、AgentBench

4. 安全与限制

  • 工具权限控制:禁止 Agent 调用危险操作(如删除文件)
  • 成本控制:限制模型调用次数、token 消耗
  • 沙箱执行:将代码执行放入隔离环境

项目

  • 个人助手 Agent:查询天气、发送邮件、设置提醒
  • 数据分析 Agent:读取 CSV → 写 Python 代码分析 → 生成图表
  • 网页自动化 Agent:使用 Playwright 工具完成表单填写