输入模态信号
概览
input_modality 确定性匹配已解析请求中存在哪些输入种类——text、image、audio 或 video。检测纯属结构:Router 检查用户消息中的 content-part 类型,从不运行分类器、嵌入模型或任何其他机器学习推理。
输入模态独立于预期输出模态(modality 信号区分 AR 与 DIFFUSION 生成),也独立于为语义匹配嵌入的载荷(嵌入的 query_modality)。一个请求可同时包含多种输入模态,每条已配置规则独立匹配。
主要优势
- 以零推理成本,把任何包含图像(或音频/视频)的请求路由到有能力的模型
- 暴露请求的完整模态集合,供 AND/OR 决策规则、投影与追踪组合
- 适用于 Chat Completions、Anthropic Messages、Response API 以及 classify/eval HTTP API(各协议覆盖见检测规则)
解决什么问题?
常见拓扑是:任何包含图像的请求走向视觉能力模型,纯文本请求继续走正常语义路由。在该信号出现前,图像是否存在只能通过 conversation 信号的 image_content 源到达,既难发现又只覆盖图像。input_modality 直接命名这一概念,并覆盖全部四种模态。
注意 NOT image_input 并不等于「仅文本」:没有图像的请求仍可能是仅音频或空请求。将 text 模态规则与 媒体规则的否定组合,才能精确表达仅文本。
何时使用
当路由决策取决于存在哪些输入种类——而不是媒体内容是什么——时,使用 input_modality。要按图像的语义内容路由,请改用带 query_modality: image 的 embedding 信号。
配置
routing:
signals:
input_modality:
- name: image_input
description: Request contains at least one image content part.
modality: image
- name: audio_input
description: Request contains at least one audio content part.
modality: audio
decisions:
- name: vision-request
description: Send image-bearing requests to the vision pool.
priority: 1000
rules:
operator: AND
conditions:
- type: input_modality
name: image_input
modelRefs:
- model: vision-model
modality 必须是 text、image、audio 或 video 之一。规则名必须唯一且已去空白。
检测规则
计数只覆盖用户消息,因此系统提示与 assistant 历史永远不会满足规则。每个入口协议都会先解码一次到 Router 的中性请求,计数来自其中的内容种类,因此无论请求由哪种协议携带,规则匹配方式相同:
- Chat Completions:纯字符串内容或
text部分计为文本,image_url部分计为图像,input_audio部分计为音频。 - Anthropic Messages:
text与image块;该协议没有音频或视频块类型。 - Response API:
input_text计为文本,input_image计为图像。Response API 解码器目前不接受音频内容类型。 - Classify/eval API:
messages[].content上的相同部分类型,外加音频的input_audio/audio_url,以及视频的video_url/input_video。
配置接受 video,walker 也能识别中性视频内容,但目前没有入口协议解码器接受视频内容部分,因此在数据平面上 video 规则尚不能匹配。它可以通过 classify/eval API 匹配。
可观测性
匹配规则暴露在 x-vsr-matched-input-modality 响应头、classify/eval 响应的 input_modality 字段、router-回放记录,以及标准的每信号 Prometheus 指标(llm_signal_match_total{signal_type="input_modality"})中。
相关信号
modality— 预期输出模态(AR、DIFFUSION、BOTH)。- 带
query_modality: image的embedding— 图像内容的语义分类。 conversation— 请求形态事实;其image_content源仍受支持,并共享同一底层图像计数。