快速开始

添加模型

用 Provider 注册模型,AIService 自动生成路由。

import { AIService, Provider, type OpenAICompatibleClientConfig } from "@downcity/city";
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";

class DeepSeekProvider extends Provider {
  constructor() {
    super({
      id: "deepseek",
      baseURL: "https://api.deepseek.com/v1",
      envKey: "DEEPSEEK_API_KEY",
      passthroughModel: "deepseek-chat",
    });
  }

  protected createClient({ apiKey, baseURL }: OpenAICompatibleClientConfig) {
    return createOpenAICompatible({ apiKey, baseURL, name: "deepseek" });
  }
}

const deepseek = new DeepSeekProvider();

const ai = new AIService();
ai.use(deepseek.model({
  id: "deepseek-v4-flash",
  name: "DeepSeek V4 Flash",
  context_window: 128_000,
}));
base.use(ai);

注册后自动生成路由:

POST /v1/ai/text              → SDK 通路
POST /v1/ai/stream            → SDK 通路
POST /v1/ai/chat/completions  → 自动透传到 DeepSeek
GET  /v1/ai/models            → 模型目录

passthroughModel 控制自动透传时发往上游的 model 值。

context_window 会进入模型目录,并供 Agent 的 session compact 策略计算输入预算。