语言大模型LLM是怎么与ReAct Agent绑定的工具交互的

32 阅读3分钟
  • 在一个以大模型(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 会对输出信息进行格式化、精炼,并在必要时返回中间环节的解释或过程(可视需求而定)。

  • 在这个过程中,数据都是在“大模型—工具—大模型”的闭环里流转

    • 由大模型决定何时需要调用工具、如何描述调用请求;
    • 工具接受调用请求并返回结果;
    • 大模型根据结果更新自身的推理状态或回答内容。