agent迭代器AgentExecutor
Agent 迭代器( AgentExecutor)是 LangChain 中实际执行 Agent 决策循环的引擎
即思考 → 行动 → 观察 → 再思考 → … → 结束
| 特性 | Agent自带迭代器 | 自定义迭代器 |
|---|---|---|
| 开发难度 | ✅ 零配置 | 🟡 需要编程 |
| 标准化 | ✅ 符合ReAct框架 | 🟡 任意设计 |
| 错误处理 | ✅ 内置完善 | 🟡 需自行实现 |
| 工具集成 | ✅ 自动适配 | 🟡 手动集成 |
| 循环控制 | 🟡 固定模式 | ✅ 完全定制 |
| 状态管理 | ✅ 自动维护 | 🟡 手动管理 |
| 性能优化 | 🟡 一般优化 | ✅ 可深度优化 |
| 特殊需求 | ❌ 难以满足 | ✅ 灵活应对 |
1 | from langchain.agents import initialize_agent, AgentType |
使用向量数据库Combine agents and vector stores
- 传统 RAG:直接检索 → 生成答案(固定流程)
- Agent + Vector Store:Agent 决策 → 可能检索 → 可能计算 → 综合答案(动态流程)
动态检索增强:Agent 可以根据需要实时检索向量数据库中的信息,而不是一次性加载所有上下文
智能工具调用:Agent 自主决定何时检索、检索什么、如何结合检索结果
多步骤推理:可以结合多个检索和其他工具(计算、搜索等)完成复杂任务
减少幻觉:基于检索到的真实文档回答,提高准确性
1 | from langchain.chains import RetrievalQA |
Async API
使用asyncio库为agents提供异步支持
1 | from langchain.agents import initialize_agent,load_tools,AgentType |
Custom Multi-Action Agent自定义多动作代理
是 LangChain 中允许一次执行多个工具调用的智能代理。与传统代理(一次只能执行一个动作)不同,它可以在单个推理步骤中规划并执行多个并行操作。
- 减少LLM调用次数:一次推理规划多个动作
- 并行执行:可同时调用多个API/工具
- 复杂任务处理:适合需要多步骤协调的任务
- 成本优化:减少API调用次数
| 方面 | 传统 initialize_agent (单动作) |
自定义 BaseMultiActionAgent (多动作) |
|---|---|---|
| 决策频率 | 每执行一个工具,都需要重新决策 | 一次决策,多个动作 |
| LLM调用次数 | 每个工具调用一次LLM | 减少LLM调用次数 |
| 规划时机 | 实时规划,每个步骤后重新思考 | 预先批量规划 |
| 适用场景 | 需要逐步推理的复杂任务 | 可预见的、结构化的多任务 |
| 代码复杂度 | 简单,自动处理 | 需要自定义规划逻辑 |
1 | from langchain.agents import Tool,AgentExecutor,BaseMultiActionAgent |