场景指南
模型路由
用 service.default() 的 query fallback 和 match() 处理不同 provider。
VisibleBase 现在不再把模型注册成运行时代码。模型本身是数据库数据,provider 差异放在 service 的 match() 里处理。
一个 service 下按 provider 分流
base.text()
.default({ model: "gpt-5.4" })
.match((ctx) => ctx.model.provider === "openai", async (ctx) => {
return openai.responses.create({
model: ctx.model.upstream_model,
input: ctx.query.prompt,
});
})
.match((ctx) => ctx.model.provider === "anthropic", async (ctx) => {
return anthropic.messages.create({
model: ctx.model.upstream_model,
messages: [{ role: "user", content: String(ctx.query.prompt ?? "") }],
});
});为什么这样更稳
- 新增模型只改数据库,不改 Runtime 注册代码
- 同一个 provider 风格可以复用同一段 handler
text、stream、image可以各自定义不同的默认 query fallback
client 只看到稳定模型 ID,不需要知道 Base 内部怎么分流。