会话感知的智能体路由:面向长周期任务的连续性感知模型选择
SAAR(会话感知的智能体路由)是一种会话感知的模型选择策略,专为解决长周期LLM智能体中的路由问题而设计。它通过添加路由器拥有的会话记忆、工具循环和非可移植提供者状态的硬锁定、安全重置边界、前缀缓存感知的切换定价以及可重放踪迹,将模型切换减少了79.29%,消除了3,836次不安全切换,并将估计的物理模型成本降低了78.71%。在2,896个实时AMD ROCm请求中,SAAR保持了会话连续性,观测到0次违规。
长周期LLM智能体引入了一个路由问题,而单轮提示路由器并非为此设计。路由器仍然需要知道哪个模型最适合当前请求,但它也需要知道何时切换模型会破坏会话。
本文介绍了会话感知的智能体路由(SAAR),这是vLLM语义路由器中的一种会话感知模型选择策略。SAAR保留了语义路由,但增加了路由器拥有的会话记忆、工具循环和非可移植提供者状态的硬锁定、安全重置边界、前缀缓存感知的切换定价以及可重放踪迹。
在21,600个确定性轮次中,SAAR将模型切换减少了79.29%,消除了3,836次不安全切换,并将估计的物理模型成本降低了78.71%。在2,896个实时AMD ROCm请求中,它保持了会话连续性,观测到0次违规。
从提示路由到会话路由
vLLM语义路由器始于一个简单的系统观察:并非每个请求都应通过推理堆栈的同一路径。简短的事实性问题、安全敏感提示、多模态请求、硬推理任务和领域特定查询可能都需要不同的处理。
该思想的第一代是提示路由。路由器从当前请求中提取信号,匹配路由决策,并选择合适的路径。Iris使这些信号可组合。Athena通过扩展模型选择、记忆、重放、长上下文信号、多模态原语和AMD ROCm部署路径,使路由器更具战略性。
智能体再次改变了路由的单位。
编码或研究智能体不是一个提示。它是一个会话。它规划、调用工具、接收工具输出、编辑文件、运行测试、从错误中恢复、暂停、恢复,并经常发送非常短的后续消息,如“继续”、“修复它”、“再运行一次”或“使用之前的结果”。这些轮次之所以有意义,只是因为它们之前的轨迹。
这就是为什么这个里程碑对语义路由器如此重要。路由器不再仅仅回答“哪个模型应该处理这个请求?”。对于智能体流量,路由器还必须回答“在当前会话中切换模型是否安全?”。第二个问题正是SAAR旨在处理的。
为什么单轮路由对智能体失效
单轮路由在局部可能是正确的,但对会话来说可能是错误的。
考虑一个典型的工具使用智能体循环:
- 第1轮:客户端发送“重构这个模块并运行测试。”提示路由器看到编码任务;会话路由器必须记住会话已在某个物理模型上开始。
- 第2轮:模型发出工具调用。模型响应;下一个工具结果属于同一模型。
- 第3轮:客户端发送工具结果。简洁的观察;发出工具调用的模型应接收结果。
- 第4轮:用户说“修复失败的情况”。简短跟进;指令依赖于之前的代码、测试输出和路由状态。
- 第5轮:会话空闲后恢复。新的短消息;路由器可以重新考虑旧模型是否仍然值得保留。
仅凭最新消息不足够。提示路由器可能认为工具结果看起来廉价,并将其发送给较小的模型。它可能看到一个通用的“继续”并重新运行正常选择器。它可能错过提供者管理的延续状态属于一个物理后端。它可能因为当前消息短而丢弃前沿模型的预热前缀缓存。
每个错误都有不同的失败模式:
- 工具结果可能发送给未发出工具调用的模型。
- 非可移植的延续ID可能发送给错误的物理后端。
- 长时间的热会话可能失去前缀局部性并变得不必要昂贵。
- 逻辑模型(如auto)可能变得难以调试,因为用户不再知道哪个物理模型实际服务了该轮次。
重点不是智能体永远不应切换模型。它们应该切换。好的路由器仍应在任务变难时从廉价模型切换到更强模型,并在会话达到安全边界时切换回来。问题是路由器需要会话上下文来知道哪些时刻是安全的。
SAAR设计
SAAR保留了现有的语义路由器决策管道。仍从请求中提取信号,仍匹配决策,模型选择算法仍在匹配的决策内对候选模型进行排序。
SAAR在该结果周围添加了一个会话控制层。
它包含五个部分:
- 路由器记忆:存储上一个物理模型、匹配的决策、阶段、切换次数、空闲时间、缓存证据和重放元数据。为路由器提供会话上下文,而无需成为应用记忆。
- 硬锁定:防止在活动工具循环或非可移植提供者管理状态期间切换。在优化成本或质量之前保持正确性。
- 重置边界:在空闲超时或决策漂移后允许重新选择。防止会话感知路由退化为粘性会话。
- 切换经济:定价交接成本、切换历史、剩余轮次先验和前缀缓存结账。使跨模型层级和会话长度的切换不对称。
- 重放踪迹:记录路由器为何停留、切换或拒绝切换。使逻辑模型(如auto)可检查。
这是一个模型选择策略,而不是端点负载均衡器。语义路由器可以通过网关合同选择模型或集群。端点成员资格、健康检查和集群内的负载均衡仍是基础设施职责。
最重要的规则:有时路由器必须不切换
最安全的模型切换并不总是最新提示得分最高的那一个。对于智能体流量,某些轮次受连续性约束。
SAAR将两种情况视为硬锁定:
- 工具循环连续性:如果物理模型发出了工具调用,工具结果应返回给该物理模型。后续观察不是新提示;它是本地执行循环的一部分。
- 提供者管理状态:如果请求携带非可移植的延续状态,如属于一个后端的响应标识符,SAAR保持上一个物理模型,而不是静默地将状态移到别处。
这些规则故意比成本规则更强。如果切换不安全,路由器不应通过更便宜的模型“买”出来。
SAAR还定义了相反边界:路由器何时可以再次切换。空闲超时和决策漂移重新打开选择。如果智能体暂停足够长,连续性的价值衰减。如果匹配的决策改变(如用户从代码编辑转向综合或从检索转向调试),旧模型选择不应永远固定。
路由器记忆不是用户记忆
“路由器记忆”可能误导,因此边界很重要。SAAR记忆不是对话记忆、检索记忆或用户档案记忆。它不会总结对话,也不会尝试为模型记住事实。它的职责更窄:保留足够的路由状态,使下一个模型选择决策安全且可解释。
对于每个会话,路由器跟踪诸如:逻辑模型背后最后选择的物理模型;最后匹配的路由决策;会话是否处于正常、工具循环、提供者状态、空闲重置或漂移重置阶段;最近发生的切换次数;最新的上下文长度和缓存证据;将响应链接回路由器决策踪迹的重放ID。
这个范围使系统操作上有用,而无需将路由器变成第二个智能体记忆层。应用记忆应留在应用中。检索记忆应留在检索堆栈中。SAAR记忆仅用于使跨轮次的路由连贯。
前缀缓存使模型切换不对称
对于长智能体会话,模型切换不仅是质量决策,也是输入侧系统决策。
短重试在廉价模型上和40轮热会话在前沿模型上不应被同等对待。后者累积了有价值的前缀。切换离开它可能需要下一个物理模型支付更大的输入成本,即使可见的用户消息很短。
因此,SAAR定价一个缓存输入结账增量:正常提示输入价格与所考虑物理模型的缓存输入价格之间的差距。会话越长越昂贵,策略关于丢弃前缀局部性就越严格。
这也澄清了路由逻辑模型的缓存令牌会计。如果用户调用auto,路由器可能随时间将逻辑名称映射到不同的物理模型。一个后端报告的缓存命中是该后端的物理证据。它不能自动转移到另一个后端。SAAR保持后端报告的缓存令牌与路由器估计的重用分开,并且不会重写上游使用字段。
这种分离在操作上有用。运营商可以检查物理缓存行为,而路由器使用自己的记忆来决定切换是否值得结账成本。
请求如何通过SAAR
服务路径保持熟悉。客户端发送请求到OpenAI兼容网关,通常使用逻辑模型名称如auto。为了启用会话感知路由,它们还发送稳定的会话标识符如x-session-id。
SAAR然后按顺序处理每个轮次:
- 读取当前请求、会话ID、工具调用上下文、提供者状态标记和候选模型集。
- 运行正常的语义路由器信号和决策管道。
- 从配置方法(如混合评分)产生基本模型选择结果。
- 从路由器记忆加载上一个会话路由状态。
- 应用工具循环和提供者管理状态的硬锁定。
- 检查空闲超时和决策漂移边界。
- 使用前缀缓存结账成本和切换历史调整切换分数。
- 选择物理模型并发出诊断信息。
- 更新路由器记忆并写入重放踪迹。
配置存在于路由决策的模型选择算法内:
routing:
decisions:
- name: agentic_routing
modelRefs:
- model: qwen3-8b
- model: qwen3-32b
algorithm:
type: session_aware
session_aware:
base_method: hybrid
idle_timeout_seconds: 300
tool_loop_hard_lock: true
context_portability_hard_lock: true
decision_drift_reset: true
prefix_cache_weight: 0.20
switch_history_weight: 0.04这些值是有意的策略旋钮,不是一刀切的常量。客户服务助手使用短会话可能使用更宽松的空闲超时。