用Arch-Router选择最合适的LLM
不同的模型有不同的优势。一些模型是普遍认可的(如 Claude Sonnet 用于前端),但有很多重叠和主观性。有些模型完全过于强大,对于日常任务来说太强大了。如果你只是想知道牛排的内部温度,你不需要 o3 等待十秒钟来推理。
模型提供商通常会描述每个模型的优势,但有很多重叠,而且它们并不那么详细。例如:
- GPT-4o : 快速、智能、灵活的 GPT 模型
- GPT-4.1 mini: 在智能、速度和成本之间取得平衡
在理想世界中,你会为每个任务使用“最佳”模型,但这说起来容易做起来难。你可以依赖基准数据并设置 if/else 逻辑,但基准数据往往与用户偏好不一致。
在本文中,我们将探讨领先的 LLM 路由范式:基于任务、基于性能和基于规则的路由。我们还将深入研究 Arch-Router,这是一种最近的 15 亿参数生成方法。让我们开始吧!
1、LLM 路由器的类型
一般来说,有四种不同的 LLM 路由器。
1.1 基于意图/嵌入的路由器
为每个用户消息创建嵌入,并在一组固定的主题上运行语义相似性向量搜索(例如,“账单”、“SQL”、“数学”)。最接近的意图决定了哪个模型处理请求。
示例:
- OrchestraLLM 通过嵌入相似性检索 k 个最相似的对话示例,然后通过专家模型的多数投票进行路由
- 自定义的内部管道
优缺点:
- ✅ 快速且易于原型设计。
- ❌ 对主题漂移和多轮上下文敏感,并且每次添加或重新定义意图时都需要重新训练。
1.2 基于成本/性能的路由器
使用基准或成本-准确率数据训练路由器,以决定是否便宜的模型适用于查询,或者是否需要升级到更强、更贵的模型。这些路由器倾向于专注于节省成本,而不是为每个任务使用大型模型
示例:
优缺点:
- ✅ 在受控任务中优化支出与质量。
- ❌ 忽略主观标准(语气、风格、品牌)
1.3 基于规则的路由器
硬编码的 if/else 逻辑,以某种方式将查询映射到模型。
示例:
- 自定义实现
优缺点:
- ✅ 超低延迟和完全透明
- ❌ 在规模扩大时成为维护噩梦,因为用例和模型扩展
1.4 偏好对齐的路由器
今天的主要话题将是这个,因为这是 Arch-Router 所做的。用户用普通英语编写路由策略,并配对模型选择。一个小的 LLM 接收这些策略和用户消息,并返回最适合每个查询的策略。
示例:
- Arch-Router
优缺点:
- ✅ 人类可解释,无需重新训练即可立即适应新策略,并能优雅地处理多轮漂移。
- ⚠️ 需要一个轻量级生成模型和精心设计的策略描述才能有效工作。
2、Arch-Router 简介
Arch-Router 是一个轻量级的 15 亿参数模型,它通过遵循普通英语路由策略,而不是基准测试或 if/else 规则,将用户查询路由到用户定义的模型。
每个策略是一个简单的 (identifier, description)
元组,例如 ("legal_review", "Analyze a contract clause…")
。一个单独的查找表将每个标识符映射到其选择的模型(例如 legal_review → GPT-4o-mini
)。下面有更多的例子。
在幕后,Arch-Router 是一个经过微调的 Qwen 2.5(15 亿)模型。在训练了一组干净和嘈杂的策略-对话数据后,其路由准确性从大约 20.7% 提高到超过 93%:
由于 Arch-Router 非常小并且针对任务进行了微调,它平均只增加约 50ms 的延迟。下一个最快的商业路由器(Gemini-2.0-flash-lite)大约需要 510 ± 82 ms,而 Claude-sonnet-3.7 需要 1,450 ± 385 ms。
3、Arch Router 的工作原理
从根本上说,Arch-Router 通过遵循人类编写的策略将查询路由到给定的 LLM。以下是其工作原理的逐步说明:
3.1 定义策略
一个非常简单的文档,列出一组 (identifier, description) 元组及其相关的模型。
C = {
(“code_gen”,“Generate code snippets or boilerplate.”),
(“summarize”,“Produce a concise summary of this text.”),
(“hotel_search”,“Find and recommend hotels in a given city.”),
(“default”,“Fallback for any other queries.”)
}
T(code_gen) = Claude-sonnet-3.7
T(summarize) = GPT-4o
T(hotel_search) = Gemma-3
T(default) = Qwen2.5-4B
3.2 组合路由器提示
- 策略
- 对话历史
- 新的用户查询 + 一些额外指令(见下面的提示)
You are a helpful assistant designed to find the best suited
route.
You are provided with route description within
<routes></routes> XML tags:
<routes>
\n{routes}\n
</routes>
<conversation>
\n{conversation}\n
</conversation>Your task is to decide which route is
best suit with user intent on the conversation in
<conversation></conversation> XML tags.
Follow the instruction:
1. If the latest intent from user is irrelevant or user
intent is full filled, respond with other route {"route":
"other"}.
2. Analyze the route descriptions and find the best match
route for user latest intent.
3. Respond only with the route name that best matches the
user’s request, using the exact name in the <routes> block.
Based on your analysis, provide your response in the
following JSON format if you decide to match any route:
{"route": "route_name"}
3.3 生成并分发
Arch-Router 接收用户的提示并输出其中一个策略标识符(例如 code_gen)。该标识符被传递给一个映射函数,该函数查找您映射到该特定策略的 LLM,并发送请求。
由于策略存在于提示本身中,因此很容易添加、删除和编辑路由和模型。
4、结束语
使用正确的模型完成正确的工作的问题不会消失,而且未来只会变得更加复杂。虽然无法直接将 Arch-Router 实现到 Claude 或 ChatGPT 中,但也许未来会有更容易的方式来为整个组织设置更智能的路由。
Arch-Router 看起来是迄今为止最好的路由器,因为它与实际的人类偏好高度灵活和对齐,并且延迟很小。
原文链接:How to Automatically Pick the Right Model for the Right Job
汇智网翻译整理,转载请标明出处