4.2 工具调用流程分析

LangChain 的 Agent 会将模型与工具结合起来,在实现上由一个基于 LangGraph 的图结构来编排执行流程,如下所示。

图片[1]-4.2 工具调用流程分析-大赛人网

这与前文得到的 Agent 图结构是一致的,本质上就是经典的 ReAct 结构:一个具备“ 思考-行动-观察”不断循环的自主工作者。

用户问题 → AI 思考 → 调用工具 → 观察结果 1 → 继续思考 → … → 最终答案

当用户提出一个复杂需求时,Agent会像人类一样,先理解任务、规划步骤、使用合适的工具(如搜索网络、查询数据库、执行计算)获取信息,Agent 会在一个循环中反复调用模型和工具,直到某次模型输出中不再包含工具调用则结束,最后综合所有信息给出最终答案。
完整流程:

图片[2]-4.2 工具调用流程分析-大赛人网

举例:用户问题:“找出当前最流行的无线耳机并检查库存”的任务。

图片[3]-4.2 工具调用流程分析-大赛人网
图片[4]-4.2 工具调用流程分析-大赛人网
图片[5]-4.2 工具调用流程分析-大赛人网

4.3 重试机制

Agent可以在工具调用结果不满足要求时,自主重试。

图片[6]-4.2 工具调用流程分析-大赛人网
图片[7]-4.2 工具调用流程分析-大赛人网

模型三次调用get_weather ,最终获得了满意的结果。

4.4 常见问题

问题1:Agent 如何选择工具?
依据:工具的 docstring

图片[8]-4.2 工具调用流程分析-大赛人网

AI 会根据:

  1. 问题内容
  2. 每个工具的描述
  3. 自动选择最匹配的工具

问题2:Agent 为什么没有调用工具?
原因:

  • 工具的 docstring 不清晰
  • 问题表述不明确
  • 模型认为不需要工具

解决:

图片[9]-4.2 工具调用流程分析-大赛人网

问题3:Agent 选错工具?
原因:

  • 多个工具的功能描述相似
  • 工具太多导致混淆

解决:

  • 只给必要的工具
  • 工具描述要有明确区分
  • 在 system_prompt 中说明工具使用场景
图片[10]-4.2 工具调用流程分析-大赛人网

问题4:如何知道 Agent 何时完成?
当 AIMessage 不包含 tool_calls 时:

图片[11]-4.2 工具调用流程分析-大赛人网

问题5:Agent 可以调用多少次工具?
默认没有限制,直到得到最终答案。但可能会:

  • 超时
  • 达到 token 限制
  • 模型决定停止

问题6:如何限制工具调用次数?
LangChain 1.0 的 create_agent 默认使用 LangGraph,可以通过配置限制:

图片[12]-4.2 工具调用流程分析-大赛人网
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容