程序辅助语言模型 (Program-aided language models, PAL)

黎 浩然/ 29 11 月, 2023/ 大语言模型/LARGELANGUAGEMODEL/LLM, 机器学习/MACHINELEARNING, 研究生/POSTGRADUATE, 计算机/COMPUTER/ 0 comments

1 LLM 的数学能力局限

  1. 本质原因:LLM 预测下一个最可能的 token,并不执行真正的数学运算。
  2. 常见问题
    • 简单算术都可能出错,数字越大、步骤越多越不可靠。
    • 错误后果:账单金额计算错误、配方比例出错等。
  3. 链式思考(CoT)只能部分缓解:即便推理步骤正确,单个计算仍可能失误。

2 用外部程序弥补:Python 解释器

  • 思路:让 LLM 负责“写程序”而不是“做运算”,把计算交给擅长数学的环境(如 Python)。
  • 优势:保证数值正确性,避免人工校对。

3 Program-Aided Language Model(PAL)框架

3.1 核心思想

让 LLM 生成可执行的 Python 脚本 + 外部解释器执行脚本 = 正确答案

  • 首创:Carnegie Mellon University Luyu Gao 等人在 2022 年提出。
  • 两个关键组成
    1. 链式思考 + 代码:在推理文字旁插入 Python 代码行。
    2. 解释器执行:Orchestrator 将代码送入解释器并取回结果。

3.2 提示(Prompt)结构

示例问题
# 推理步骤(注释)
x = 300 # 直接赋值
y = 300 // 3 # 计算
...
return x - y # 输出
"""

新问题:……
  • 注释行 #:供人类阅读,Python 会忽略。
  • 代码行:声明/计算/返回变量。
  • Few-shot 示例:用 1-2 个完整示例教 LLM 输出相同格式。

3.3 工作流程(Inference Pipeline)

  1. 准备 Prompt:示例 + 待解问题。
  2. LLM 生成脚本:包含推理文字和 Python 代码。
  3. Orchestrator 调用解释器:运行脚本得到答案。
  4. 把答案追加到 Prompt:形成“含正确答案”的上下文。
  5. LLM 输出最终回应:保证答案准确。

3.4 例子:面包房库存

  • 问题:烤 120 个 → 上午卖 30 → 下午卖 20 → 超市退回 4 → 还剩?
  • 脚本变量:baked = 120, sold_morning = 30, sold_afternoon = 20, returned = 4
  • 计算:remaining = baked – sold_morning – sold_afternoon + returned
  • 解释器结果:74。

4 Orchestrator(编排器)的角色

  • 信息流:LLM → Orchestrator → 解释器/数据库/…… → Orchestrator → LLM。
  • 决策逻辑
    • 解析 LLM 计划或工具调用指令。
    • 管理多步骤、分支、校验等复杂流程。
  • 在 PAL 中:流程简单,只需执行 Python。现实应用往往需要接多种外部资源。

5 PAL 适用场景

场景为什么适用 PAL
大数运算、财务结算金额误差容忍度低,需严格数值正确性
科学计算、统计分析依赖库函数或浮点精度
需要微积分/三角函数超出 LLM token 预测能力
多步逻辑 + 复杂分支容易把逻辑与计算拆分,代码更清晰

6 使用 PAL 的实践要点

  1. 示例要高质量:清晰标注注释与代码,变量命名一致。
  2. 限制 LLM 只写脚本:避免让它直接给数值答案。
  3. 安全沙箱:运行生成代码时要隔离环境,防止潜在安全风险。
  4. 监控与回退:脚本执行失败或超时时要有兜底策略。
  5. 可扩展性:随着需求增长,可让 Orchestrator 解析多种“工具调用”而不仅是 Python。

7 与更复杂系统集成

  • ShopBot 示例:处理退货需
    1. 查订单数据库(SQL/RAG)
    2. 业务逻辑判断
    3. 触发物流 API
  • 思路:把每个外部操作封装成“工具”,LLM 产生计划,Orchestrator 按序执行并回写上下文。
  • 多工具框架:可以借鉴 PAL 的“代码 + 执行”理念,扩展到 SQL、REST、函数调用等。

结论

PAL 让 LLM 专注于“自然语言 → 代码/计划”,把精确运算交给程序执行,从而显著提升复杂数学和流程自动化场景的可靠性。要发挥其优势,必须设计良好提示、搭建安全执行环境,并用 Orchestrator 统筹多工具交互。

Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*