← 返回列表

AI面试题二:如何确保大语言模型(LLM)调用工具是可靠的

AI面试题二:如何确保大语言模型(LLM)调用工具是可靠的

如何确保大语言模型(LLM)在工具调用时能可靠、可控地工作,而不仅仅是依赖提示词来“说服”模型。需要系统性地给出了一个多层级的约束框架。

如查询天气的例子,模型在工具调用中常见的三种“瞎编”行为:
1. 不调用工具,直接虚构答案
2. 调用工具时传递格式错误的参数(如工具不支持“后天”,却传参date="后天")。
3. 自作主张转换参数格式(如擅自将“后天”转为具体日期),即使工具没有此要求。

问题的根源在于模型输出本质上是概率性的,提示词只是在概率分布上施加“软约束”,而非确保模型严格遵守的强制机制。在复杂场景下,这种“软约束”很容易失效。

为了解决这个问题,需要有一个多层级的工程化解决方案

  1. 第一层:优化提示词(软约束)

    • 定位是约束体系的起点,但绝非终点。
    • 应将提示词视为“操作合同”,清晰说明工具用途、每个参数的类型、边界,并列举非法值示例。
    • 应加入 Few-shot示例,通过展示“正确输入→正确调用”的范例,利用上下文学习锚定模型的行为模式。
  2. 第二层:引入JSON Schema(硬约束)

    • 这是从“讲道理”到“设栏杆”的关键一步。
    • 用机器可读、可验证的结构化定义(JSON Schema)替代自然语言描述参数。可以严格定义字段类型、是否必填、枚举值范围,并可通过设置additionalProperties: false来禁止模型输出任何未定义的字段。
    • 主流API平台支持在模型解码阶段就进行这种结构化输出约束,从生成源头避免格式违规。
  3. 第三层:建立校验-修复-重试闭环(执行兜底)

    • 即使有Schema,仍需在拿到模型输出后,进行语法和Schema验证。
    • 验证失败时,应设计自动清洗和重试机制(有上限),将错误信息反馈给模型以修正输出。超过重试次数后,需有降级或人工处理方案。
  4. 架构层面:职责分离

    • 应将决策执行分离,形成三层架构:
      • 模型层:仅负责决策(判断调用哪个工具、生成哪些参数)。
      • 框架层:负责执行框架,包括Schema校验、调用工具、处理重试和整合结果。这确保了模型错误不会直接影响工具安全性,工具变更也无需频繁调整提示词。
      • 工具层:具体的业务能力实现。
    • LangChain、LlamaIndex等框架正是在做这样的工作。

当前方案的局限性:能很好地处理参数格式问题,但对参数语义(如“上海”与“沪”的等价性)的验证覆盖仍不足。这将是未来需要面对的工程挑战。

核心结论:让LLM可靠地调用工具,本质上是一个软件工程问题,需要建立一个从软约束、硬约束、执行兜底到架构设计的系统性工程方案,而非仅仅依赖优化提示词。

评论

暂无已展示的评论。

发表评论(匿名)