会话信号
概览
conversation 按聊天结构与协议事实路由,例如消息数量、开发者指令、可用工具、显式工具使用约束,或正在进行的工具循环。在 routing.signals.conversation 下定义这些规则。
该族为启发式:检查请求的 messages[] 与 tools[] 数组,不做任何模型推理。
主要优势
- 无需关键词启发式,即可把智能体式(工具密集)请求路由到有能力的模型。
- 在结构层面区分单轮与多轮对话。
- 对已解析的请求字段做内存扫描;不需要模型推理。
- 产生命名信号,投影与决策可像其他族一样消费。
解决什么问题?
现代 LLM 请求的形态差异很大。简单的「2+2 等于几?」与带开发者指令、三个工具定义、多轮工具调用循环的智能体编程会话,结构完全不同。conversation 把这些结构差异变成稳定命名信号,使决策树能把每种形态路由到合适的模型档。
何时使用
在以下情况使用 conversation:
- 路由依赖对话深度(单轮 vs 多轮)
- 带工具定义的智能体请求应走向更强模型
- 开发者消息的存在会改变路由策略
- 需要统计工具调用循环以检测复杂智能体工作流
配置
routing:
signals:
conversation:
- name: multi_turn_user
description: At least two user messages.
feature:
type: count
source:
type: message
role: user
predicate:
gte: 2
- name: has_developer_message
description: Request includes a developer message.
feature:
type: exists
source:
type: message
role: developer
- name: tool_heavy
description: Three or more tool definitions.
feature:
type: count
source:
type: tool_definition
predicate:
gte: 3
特征类型
feature.type | 说明 | 是否需要谓词? |
|---|---|---|
count | 统计匹配项。返回原始整数。 | 是 |
exists | 至少一项匹配则返回 1.0,否则 0.0。 | 否(隐式布尔) |
源类型
source.type | 可选 role | 说明 |
|---|---|---|
message | user、assistant、system、developer、tool、non_user,或空(全部) | 统计消息,可按角色过滤。 |
tool_definition | — |