VisibleBase
场景指南

模型路由

用 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
  • textstreamimage 可以各自定义不同的默认 query fallback

client 只看到稳定模型 ID,不需要知道 Base 内部怎么分流。

目录