跳到主要内容
版本:最新版(main)

迁移模型资源

早期版本通过 external[] 模型、绑定对象、按规则的绑定键以及请求后端自己的连接字段来选择模型。Router 在加载时拒绝这些形式,每一种都给出一行错误并指明 vllm-sr config migrate,后者会把它改写为对应示例中的第二种形式。本页是唯一出现早期形式的地方;文档其余部分都使用每组示例中的第二种形式。为信号选择模型说明了它们迁移到的形式,发布说明概述了这次变更。

用 vllm-sr config validate --config config.yaml 查看这些拒绝,或者直接用 Router:router -validate-config -config config.yaml 输出一行 JSON,其中 error 是这些拒绝,例如 {"valid": false, "error": "<path>: removed_field: <what>; run vllm-sr config migrate (<becomes>)"}。每一行都指明字段以及取代它的写法。

vllm-sr config migrate --config config.yaml 请 Router 改写文件:本页的每种形式,以及本版本移除的其他形式,都写成取代它的形式;文件的其余部分保持原样。它询问 VLLM_SR_ROUTER_BINARY 指定的 Router 二进制文件,否则询问 vllm-sr serve 默认运行的 Router 镜像(VLLM_SR_ROUTER_IMAGE 或 VLLM_SR_IMAGE 指定的镜像,否则是本 CLI 自己的发布版本),该镜像必须已在本机:migrate 从不拉取它,也从不询问正在运行的栈中的 Router。external[] 模型中直接写出的密钥会移到环境变量中,输出会给出需要设置的变量名。询问分类器头(契约为 label_distribution.v1、label_scores.v1、label_decision.v1、score.v1 或 token_spans.v1)的绑定会被删除,规则或绑定对 classify 或 http 部署的引用也会被删除:任何信号都不再询问分类器,由决策模型回答该信号。config v0.3 之前布局的文件也在同一次运行中迁移。

其他变化​

  • systemone 决策模型现在也回答内置信号。以前这些信号在本地的 vela3-fast 上运行。除非配置写出阈值,它们的阈值为 0.5,加载时警告 uncalibrated_preset。
  • 只有被移除的学习型分类器使用的信号和模块(classifier、embedding、知识库和 preference 规则,domain、fact-check、feedback 和 modality 模块,安全规则的 hazard 部分)不再能加载。vllm-sr config migrate 会把它们改写为决策模型回答的应用信号,或说明应改写成什么。
  • prompt guard、PII 和幻觉检测模块同样不再能加载,它们的 system 行、admission 键、模块 backend 以及 external[] 中的 guard 字段也一样。决策模型回答 jailbreak、pii 和 hallucination 规则;模块的阈值成为读取它的规则的 predicate,绑定其他模型时以信号类型为键。
  • embedding 模型关键字(mmbert、qwen3、multimodal)、带远程 endpoint 的 embeddings.semantic、embedding 绑定以及按模型关键字的 admission 不再能加载。vllm-sr config migrate 会写出每一项所选的部署,并在使用它的地方写上它的名称;参见 Embeddings。
  • 其他一切都解析到与之前相同的模型。

早期形式和新形式为同一个信号指定模型时,迁移保留新形式的值。同时写了 deployment 和 model 或 model_path 的规则,或者同时以信号类型和早期名称写出的绑定,会被拒绝。

绑定对象​

绑定以信号类型为键,值是一个部署名称。信号决定契约,provider 决定适配器。

migrate-binding-object-before
recipes:
- name: default
model_bindings:
jailbreak: {deployment: kai, contract: decision.v1}
migrate-binding-object-after
recipes:
- name: default
model_bindings:
jailbreak: kai

规则绑定​

为单条规则写的绑定,变为该规则的 deployment。

migrate-rule-bindings-before
recipes:
- name: default
model_bindings:
safety.harmful: kai
signals:
safety:
- {name: harmful, predicate: {gte: 0.5}}
migrate-rule-bindings-after
recipes:
- name: default
signals:
safety:
- {name: harmful, deployment: kai, predicate: {gte: 0.5}}

记忆查询改写模型​

记忆检索以前按 model_role: memory_rewrite 找到结合对话改写查询的模型。现在它是 global.stores.memory.query_rewrite 指定的 openai_chat 部署。

migrate-memory-rewrite-before
global:
model_catalog:
external:
- name: rewriter
llm_provider: vllm
model_role: memory_rewrite
llm_endpoint: {address: llm.example.com, port: 8000, protocol: http}
llm_model_name: qwen3
llm_timeout_seconds: 30
migrate-memory-rewrite-after
global:
model_catalog:
deployments:
rewriter:
provider: openai_chat
endpoint: http://llm.example.com:8000/v1
model: qwen3
timeout_ms: 30000
stores:
memory:
query_rewrite: {deployment: rewriter}

部署字段​

顶层的 question_types 移到 capabilities 下,部署或副本上的 served_name 改为 model。已移除的 classify 或 http provider 的部署会被删除:任何信号都不再询问分类器服务。

migrate-deployment-fields-before
global:
model_catalog:
deployments:
d3-gateway:
provider: systemone
endpoint: https://gateway.example.com/Unified/v1/systemone
model: vllm-sr/d3-ultra
schema: vllm-sr/5.0
question_types: [choice, noul, score]
auth: {api_key_env: GATEWAY_KEY}
decision-kai:
provider: model_runtime
endpoint: https://decision-worker.example.com:8100
served_name: decision-kai
migrate-deployment-fields-after
global:
model_catalog:
deployments:
d3-gateway:
provider: systemone
endpoint: https://gateway.example.com/Unified/v1/systemone
model: vllm-sr/d3-ultra
schema: vllm-sr/5.0
capabilities: {question_types: [choice, noul, score]}
auth: {api_key_env: GATEWAY_KEY}
decision-kai:
provider: model_runtime
endpoint: https://decision-worker.example.com:8100
model: decision-kai

请求后端​

base_url、api_key_env、auth_header、auth_prefix 和 extra_headers 变为 endpoint、auth 和 headers,与部署使用的形式相同。

migrate-backend-refs-before
providers:
defaults: {model: claude}
models:
- name: claude
backend_refs:
- provider: anthropic
base_url: https://gateway.example.com/anthropic
api_key_env: ANTHROPIC_KEY
auth_header: x-api-key
auth_prefix: ""
extra_headers: {X-Org: acme}
migrate-backend-refs-after
providers:
defaults: {model: claude}
models:
- name: claude
backend_refs:
- provider: anthropic
endpoint: https://gateway.example.com/anthropic
auth: {header: x-api-key, prefix: "", api_key_env: ANTHROPIC_KEY}
headers: {X-Org: acme}