场景指南
模型适配器
通过 AIChannel.stream() 一次适配上游协议。
Downcity 有两种公开协议,但内部只有一条执行路径:
City SDK / CityModel ------\
-> LanguageModelV3CallOptions -> AIChannel.stream()
OpenAI Chat Completions ---/ -> V3 stream使用 AI SDK 模型时直接调用 model.doStream(input.call)。使用私有 HTTP 协议时实现 stream(input) 并返回 LanguageModelV3StreamResult,AIService 不理解厂商请求格式。
OpenAI Chat Completions 只是同一 V3 路径外层的 HTTP adapter。没有 raw passthrough,也没有第二个 openai action,因此 tools、fallback、reasoning、计量和计费在不同客户端之间保持一致。
Channel 负责:
- 密钥和 base URL;
- 上游模型工厂与协议选择;
- 模型级 AI SDK providerOptions;
- usage 解释和计费;
- 私有流到 V3 parts 的转换。
AIService 负责:
- 模型注册表和公开目录;
- 鉴权和可用性;
- 媒体 fallback 与 reasoning 校验;
- 计量、余额检查和扣费结算。