Skip to main content

📚 langchain中 工具 (Tools) 和代理 (Agents) 的关系

在 LangChain 中,工具(Tools)代理(Agents) 是紧密协作的核心组件,二者的关系可以概括为:代理是“决策者”,工具是“执行者”,代理通过调用工具扩展自身能力,工具则通过代理的调度实现价值。具体关系如下:

1. 工具(Tools):代理的“能力扩展包”

工具是一系列可被调用的外部功能或服务(如搜索引擎、数据库查询、代码执行等),是代理与外部世界交互的“接口”。

  • 工具本身是“被动的”,只能等待被调用,无法主动发起操作。
  • 每个工具都有明确的功能边界(如 SerpAPI 只能用于搜索,PythonREPL 只能执行代码)。
  • 示例:如果需要获取实时天气,工具就是“天气查询 API”;如果需要计算复杂公式,工具就是“计算器”。

2. 代理(Agents):工具的“调度决策者”

代理是拥有决策能力的组件,其核心作用是根据任务需求,自主决定何时、如何调用工具,并利用工具的返回结果完成任务。

  • 代理是“主动的”,能分析问题、规划步骤、选择工具,并判断是否需要多轮调用。
  • 代理依赖 LLM 的推理能力进行决策(例如:“这个问题需要最新数据,应该调用搜索引擎”)。
  • 示例:当用户问“今天北京的天气适合穿什么衣服?”时,代理会决定先调用“天气查询工具”获取温度,再根据结果生成穿搭建议。

3. 二者协作流程:决策→调用→反馈→结论

  1. 接收任务:代理获取用户问题或任务(如“分析近3年某股票的涨幅并预测趋势”)。
  2. 决策判断:代理通过 LLM 分析任务,判断是否需要工具(例如:“需要最新股票数据,必须调用财经API”)。
  3. 选择工具:代理从工具集中挑选合适的工具(如 YahooFinanceAPI)。
  4. 调用工具:代理按照工具要求的格式(如参数、调用方式)发起请求,获取返回结果(如近3年股价数据)。
  5. 处理结果:代理分析工具返回的数据,判断是否需要进一步调用(如“数据不足,需补充调用行业报告工具”),或直接整理结果生成最终回答。

4. 依赖关系:相互成就,缺一不可

  • 工具依赖代理才能发挥作用:工具本身无法判断何时被使用,必须通过代理的调度才能参与任务。例如,一个“数据库查询工具”如果没有代理决定何时查询、查询什么,就只是一个闲置的功能。
  • 代理依赖工具扩展能力边界:没有工具时,代理只能依赖 LLM 自身的知识和能力(如回答常识问题);有了工具后,代理可以突破 LLM 的局限(如获取实时信息、操作外部系统、执行复杂计算等)。

总结

工具是代理的“手脚”,提供具体执行能力;代理是工具的“大脑”,负责决策和调度。二者结合使 LangChain 应用从“单纯的文本生成”升级为“能与现实世界交互、解决复杂问题的智能系统”。例如,一个具备“搜索引擎+计算器+数据库”工具的代理,既能回答实时问题,又能处理数据分析任务,远超 LLM 本身的能力范围。