City SDK
面向多个 AI 产品的 City runtime 与 SDK 能力。
Downcity 的 City SDK 用来创建、部署和调用 City。一个 City runtime 可以同时服务网页、扩展、App、桌面工具、客户 Demo 或内部工具,不需要每个 AI 产品都重搭一套 AI 后端。
City 对外暴露的不是 provider API,而是稳定的产品调用边界。在 City 内部,能力通过 Service、Action 和 AIService 组织:
- 产品侧拿到
town_id + user_token - 用
User City调text()、stream()、image()这类 service - City 内部自己决定模型目录、provider 路由、hooks、usage 和 env
先选你的阅读入口
Start Here我想先跑通
最短路径启动 City runtime,暴露一个模型,签发 token,让产品端成功调到 text() 或 stream()。
先分清 City runtime、产品前端、业务后端、AI Gateway 和真实 provider 分别负责什么。
Real Scenarios我已经在接真实产品看纯客户端产品、多产品复用、鉴权、provider env、hooks 和商业逻辑的真实使用方式。
Packages我想按包来查直接按 @downcity/city、client 和 CLI 理解实现边界;官方服务请进入 City Services Docs。
按角色直接看 City、User City、Admin City、HTTP API 和环境变量说明。
一张图看懂它怎么工作
多个产品 client网页、扩展、App、桌面工具、客户 Demo、内部工具。
User City + town_id + user_tokenCity runtime校验 token,读取模型目录,再把请求分发到 AIService、服务或自定义 Service 的 action。
hooks 与 usage把套餐、余额、扣费、日志、风控接进 City runtime,但业务规则仍然留在你自己的系统里。
上游调用层OpenAI、Claude、Gemini、私有模型,或你自己的 AI Gateway / 中转服务。
对产品来说,City 暴露的是稳定的 Service action 和 model;上游接什么 provider、网关或私有部署,都是服务端内部细节。
City SDK 负责什么
- Runtime 数据库和 Service 声明的表
- provider key 和 Runtime env
user_token校验与admin_secret_key管理能力Provider+AIService.use()注册模型,自动提供 SDK 和 OpenAI 兼容两条通路client.ai.listModels()读取 Runtime 注册出来的公开模型目录- usage 记录和 hooks 扩展点
它不负责什么
- 你的用户系统
- 订单、订阅、CRM、内容数据
- 产品自己的页面、交互和业务体验
- 对外暴露“统一 provider API”给其他系统直接调用
更准确地说:
City SDK 负责 City runtime 以及其中面向 Service 的 AI 基础设施。 产品继续负责自己的用户、业务、界面和商业模式。