引言
我们已进入一个大型语言模型 (LLM) (如 GPT-4) 在文本处理上展现出类似人类掌控力的时代。它们可以总结文章、编写代码并流畅地对话。然而,人工智能研究者的野心远不止于处理文本。最终的目标是创造通用智能体 : 一种不仅能说话,还能在现实世界中行动以解决复杂任务的 AI。
想象一下,让 AI “根据我们内部数据库,找出所有 2010 年后成立的科技公司的平均收入”,或者“绘制每一位诺贝尔物理学奖得主与其博士导师之间的关系图”。
这些任务暴露了当前 LLM 方法的一个关键弱点。现实世界的环境——比如庞大的企业数据库或全球性的知识库 (KBs) ——太过巨大,无法塞进 LLM 的“短期记忆” (即上下文窗口) 中。你不能简单地将一个包含数百万行数据的数据库复制粘贴到聊天提示词中。
那么,我们如何弥合 LLM 的推理能力与庞大、复杂的环境之间的鸿沟呢?
一篇题为 “MiddleWare for LLMs: Tools Are Instrumental for Language Agents in Complex Environments” 的最新论文提出了一种新颖的解决方案。作者引入了中间件 (Middleware) 的概念——这是一层专门的工具,既能屏蔽原始数据的压倒性复杂性,又能让 LLM 进行主动探索。

如图 1 所示,传统方法 (左) 试图将环境强制“喂”给模型,导致了可扩展性问题。提出的方法 (右) 则为机器人 (智能体) 配备了特定的工具来导航环境,就像人类会运行搜索查询而不是背诵整个互联网一样。
在这篇文章中,我们将拆解这篇论文,探索这种“中间件”是如何工作的,其中涉及的巧妙推理技术,以及为何它能让 GPT-4 在复杂数据任务上的表现比标准方法高出近 3 倍 。
背景: 上下文瓶颈
要理解为什么中间件是必要的,我们首先必须了解“接地 (Grounding) ”的局限性。接地是指 LLM 将其输出与现实世界数据联系起来的能力。
线性化的问题
实现 LLM 接地最直接的方法是线性化 。 这涉及将环境 (例如一个表格) 转换为一系列文本 token 并将其输入给模型。
- 小环境: 如果你有一个 5 行的表格,这种方法非常完美。LLM 读取这些行并回答你的问题。
- 复杂环境: 如果你有一个拥有 10,000 行数据的数据库或包含数十亿连接的知识库,线性化就会失败。数据超过了模型的输入 token 限制 (上下文窗口) 。即使能装下,模型也经常会在长上下文的“中间迷失”。
现有的变通方法
先前的研究试图通过以下方式解决这个问题:
- 检索 (Retrieval) : 在发送给 LLM 之前,仅提取“相关”的行。然而,在你开始针对问题进行推理之前,通常并不知道哪些行是相关的。
- Web API: 使用像 Google 搜索这样的工具。虽然有用,但这些通常是“浅层”交互。它们不支持导航结构化 SQL 数据库或基于图的知识库所需的深度、多步逻辑。
该论文的作者认为,我们需要一个折中方案: 一套充当中间件层的定制工具 。
核心方法: LLM 的中间件
研究人员开发了一个框架,结合了两个关键要素: 专用工具和高级推理策略 。
1. 为复杂环境设计工具
作者专注于两种公认的困难环境: 数据库 (结构化表格) 和知识库 (图网络) 。与通用的 Web API 不同,这些工具是从零开始构建的,旨在模仿人类分析师探索数据的方式。
数据库工具 (SQL)
对于数据库,目标不仅仅是立即编写 SQL 查询。智能体首先需要理解数据内容。作者创建了 12 个特定工具,分为两类:
- 导航工具: 帮助 LLM 进行探索。
get_distinct_values(table, column): 帮助智能体查看列中存在什么样的数据 (例如,“状态”是存储为 ‘Active’/‘Inactive’ 还是 ‘1’/‘0’?) 。find_columns_containing_value(value): 如果用户询问“项目 X”,此工具会找出包含该字符串的表和列。- 功能工具: 帮助构建实际的 SQL 查询。
where()、group_by()、select(): 这些工具逐步验证 SQL 子句的合法性。
知识库 (KB) 工具
像 Freebase 这样的知识库以三元组 (主体,关系,客体) 的形式存储数十亿个事实。这里的挑战是“多跳推理”——将 A 连接到 B 再连接到 C。
用于 KB 的中间件工具引入了变量的概念来存储中间结果。
get_relations(variable): “什么与这个实体相连?”get_neighbors(variable, relation): “给我所有通过关系 Y 与 X 相连的实体。”intersection(var1, var2): “找出这两个列表中都出现的项目。”
通过使用这些工具,LLM 不需要看到整个图谱。它只需要知道如何索取拼图的下一块。
2. 利用工具进行推理
给 LLM 配备工具只是成功了一半。模型必须知道如何可靠地使用它们。作者利用了 ReAct (推理 + 行动) 框架,在该框架中,模型先生成一个“思考 (Thought) ”,然后生成一个“行动 (Action) ”。
然而,复杂环境是不可原谅的。关系名称中的一个轻微拼写错误或逻辑错误都可能导致整个链条断裂。为了解决这个问题,论文提出了两种新颖的方案: 错误反馈和解耦生成 。

策略 A: 错误反馈
如图 2(a) 所示,标准 LLM 经常会产生幻觉,生成无效的行动 (标为粉色) 。
- 修复: 当模型生成无效的工具调用 (例如,使用了不存在的关系) 时,中间件会捕获它。
- 反馈: 它将特定的错误消息发送回 LLM。
- 结果: LLM 读取错误,生成新的思考 (绿色) ,并纠正其行动。这利用了像 GPT-4 这类模型的“自我纠正”能力。
策略 B: 解耦生成
有时,动作空间太大,即使有错误反馈也不够——模型会不断盲目猜测。这就是解耦生成( 图 2(b) )大放异彩的地方。
在标准生成中,模型同时输出思考和行动。在解耦生成中,过程被拆分:
- 思考生成: LLM 仅生成推理 (例如,“我需要找到该实体的网站”) 。
- 行动预测: 系统根据当前上下文和生成的思考,向 LLM 展示一个受限的有效行动列表。LLM 只需选择最佳选项 (例如,“选项 A”) 。
这在论文中通过数学公式进行了形式化:

这里,策略 \(\pi\) 被分为 \(\pi_1\) (生成思考 \(r_t\)) 和 \(\pi_2\) (基于规则 \(\mathcal{M}\) 选择行动 \(a_t\)) 。这限制了 LLM,防止它幻觉出不存在的函数调用。
实验与结果
为了证明中间件的有效性,作者在以下方面评估了系统:
- BIRD: 一个以复杂性著称的大型数据库基准测试 (Text-to-SQL) 。
- KBQA-AGENT: 一个新策划的知识库基准测试,专门设计用于需要多跳推理 (3 跳以上) 的场景。
他们将自己的方法与强大的基线进行了比较,包括“API 文档提示 (API Docs Prompting) ” (标准的零样本方法) 和其他智能体框架如 StructGPT。
1. 数据库性能 (BIRD)
数据库方面的结果非常显著。这里使用的指标是执行准确率 (EX)——AI 是否从数据库中获得了正确的答案?

如表格 1 所示,请看“w/o Oracle Knowledge (无 Oracle 知识) ”部分 (这是现实的设置,AI 没有关于去哪里查找的提示) 。
- 基线 (GPT-4): 13.8% 准确率。
- 中间件 (GPT-4): 38.3% 准确率。
这是 2.8 倍的提升 。 为什么?因为基线方法 (API 文档提示) 只给模型表名。它不允许模型在编写 SQL 之前查看数据内容。中间件允许模型在提交查询之前检查值 (“它是存储为 ‘USA’ 还是 ‘United States’?”) 。
2. 知识库性能 (KBQA)
知识库的结果同样令人印象深刻。

在表格 2 中,我们看到现有的方法如 KB-Binder 和 StructGPT 在新基准测试的复杂性面前举步维艰,得分通常只有个位数。
- Pangu (之前的 SOTA): 使用 GPT-4 获得 27.1% 的 F1 分数。
- 中间件 (解耦): 使用 GPT-4 获得 59.3% 的 F1 分数。
这 2.2 倍的提升突显了静态规划是不够的。智能体必须能够动态地探索图谱以发现遥远的连接。
3. 比较 LLM: 开源模型的差距
该研究还调查了开源模型是否能像 GPT-4 一样有效地利用中间件。他们测试了 Llama-2、Mistral 和 Mixtral 等模型。

图 3 揭示了一个有趣的趋势:
- GPT-4 是王者: 它始终优于所有其他模型。
- 推理差距: Llama-2 (7B 和 13B 版本) 表现非常差,经常无法生成语法正确的工具调用。
- Mixtral 的潜力: 混合专家模型 (Mixtral-8x7B) 是开源权重中的最强竞争者,正在缩小与 GPT-3.5 的差距,尽管仍落后于 GPT-4。
有趣的是, 解耦生成策略 (橙色条) 对较弱模型 (如 Mistral) 的帮助明显大于对 GPT-4 的帮助。通过限制选择,中间件充当了推理能力较弱模型的“辅助轮”。
4. 为什么不直接喂更多数据?
怀疑论者可能会问: “为什么要构建所有这些工具?为什么不直接从数据库中检索 100 个随机行并放入提示词中?”
作者测试了这个假设。他们向基线模型提供了越来越多的“可感知行” (直接在提示词中采样数据) 。

图 4 显示了结果。
- 上图 (KBs): 使用采样三元组进行提示 (蓝线) 在接近零的位置保持平坦。环境太大了;猜测要展示哪些三元组是不可能的。无论图有多大,中间件 (橙色虚线) 都保持了高性能。
- 下图 (数据库): 添加少量行 (X 轴) 对基线略有帮助,但随后随着上下文变得混乱,性能会下降。中间件 (虚线) 仍然遥遥领先,且不需要挤满上下文窗口。
结论与启示
论文 “MiddleWare for LLMs” 为 AI 智能体的未来提供了一个令人信服的蓝图。它证明了工具不仅仅是附加组件;它们是至关重要的。
在处理现实世界的复杂性时——无论是企业数据仓库还是全球知识图谱——我们不能依赖大型语言模型的原始记忆或上下文窗口。相反,我们必须将 LLM 视为协调一层中间件工具的推理引擎 。
关键要点:
- 不要死记硬背,要探索: 当允许 LLM 主动查询环境而不是处理静态描述时,它们的表现会好得多。
- 中间件是桥梁: 一套特定领域的工具 (导航和功能工具) 充当了自然语言与复杂数据结构之间必要的翻译层。
- 结构化推理: 像错误反馈和解耦生成这样的技术对于可靠性至关重要,特别是当模型可能“幻觉”出无效动作时。
随着我们迈向在金融、医疗和物流等高风险环境中部署 AI,“中间件”范式提供了一条稳健的前进道路,将 LLM 从被动的文本处理器转变为主动、能干的智能体。
](https://deep-paper.org/en/paper/2402.14672/images/cover.png)