-
在一个以大模型(LLM)为核心的 AI Agent 架构中,“调用工具”通常指的是让大模型能够在回答或推理过程中,动态使用外部的功能或数据源(如搜索引擎、数据库、计算引擎、API 等),从而克服大模型在事实性、实时性或算力方面的限制。大致而言,数据流和调用工具的过程可以总结为以下几个阶段:
-
1. 接收用户输入
• 用户输入问题或指令,AI Agent 将该对话上下文或问题作为模型的输入。
• 若有必要,AI Agent 在内部还会提取对话历史、用户指示、系统设定(System Prompt)等额外信息,将其拼合成一条完整的提示(Prompt)给大模型。 -
2. 大模型做初步推理,判断是否需要调用工具
• 大模型根据Prompt和自身的知识,先做一次“思考”(通常会有内部的Chain of Thought过程)。
• 如果大模型已经具备足够的知识来回答,那么就可以直接给出答案;否则,大模型会决定调用某个或多个外部工具来获取信息或执行运算。
• 在部分框架中(如LangChain、ReAct、ChatGPT Plugins、函数调用API等),会给大模型注入“如何调用工具”的方式,让大模型知道有哪些可用的工具、调用的方式和输入/输出参数格式。 -
3. 构造工具调用的请求
• 大模型通常会直接在回复中“写出”一个调用指令,包含目标工具、调用的参数、需要的数据等信息。
• 不同实现里,这一步可能会采用不同的格式:
– 纯文本:大模型会输出诸如“需要查询xxx,请使用Search工具,关键词为…”之类的文本,Agent解析后再调用实际的Search API。
– 函数式调用:在一些支持函数调用(function calling)的实现中,大模型会输出类似 JSON 结构的调用请求,系统拦截该调用并执行相应的函数。
在LangChain中,如果大模型调用工具的消息格式不正确,那么可以把结果返回给大模型让他进行自我纠正。 -
4. 工具执行与结果返回
• 外部工具接收到调用请求后进行实际操作(例如去数据库查询、调用搜索引擎、进行复杂运算等),得到结果数据。
• 工具结果以一个“返回消息”的形式给回 AI Agent,这个结果要么通过特定的接口返回,要么拼入对话上下文。 -
5. 大模型利用工具结果继续推理
• 大模型将工具返回的数据与原本已经拥有的上下文、知识相结合,进一步分析与推理。
• 如果仍然需要更多外部信息或更深入的计算,可能会再次发起工具调用;否则就准备生成最终回答。 -
6. 产出最终答案并返回给用户
• 大模型整合最后的推理过程与工具返回的数据,生成对用户问题的最终答复。
• 通常 Agent 会对输出信息进行格式化、精炼,并在必要时返回中间环节的解释或过程(可视需求而定)。 -
在这个过程中,数据都是在“大模型—工具—大模型”的闭环里流转:
• 由大模型决定何时需要调用工具、如何描述调用请求;
• 工具接受调用请求并返回结果;
• 大模型根据结果更新自身的推理状态或回答内容。