Packages 包@downcity/cityCity
Service 调用模型
@downcity/city 如何统一承载 AI service、custom service 和 service 调用。
City 最容易被误解的地方,是很多人只看到 client.ai.*,以为它只是“调模型 SDK”。
更准确的理解是:
client.ai.*:AI serviceclient.service(...).action(...).invoke():通用 Action 调用client.service(...).get(...):读取型 GET Action 调用
AI service
适合:
text()stream()image()video()
这类能力优先走 AIService,因为它已经把模型目录、默认模型、AI SDK UIMessage 约定都统一好了。
custom service
这是你自己注册到 City 的业务 service。
例如:
const result = await client.service("rewrite").action("formal").invoke({
prompt: "把这段话改得更专业",
});这种方式适合:
- 工作流动作
- 产品业务动作
- 不想直接暴露模型细节的能力
service
service 不是另一套 API,它仍然是 City 里的 service。
例如:
accountsusagepaymentpayment.stripe
所以调用方式仍然一样:
await client.service("accounts").action("login").invoke(...)
await client.service("usage").get("me")
await client.service("payment").get("methods")为什么这个统一模型重要
因为产品前端不应该记三套系统:
- 一套给 AI
- 一套给业务 service
- 一套给 service
Downcity 的设计就是把它们都压回一个统一调用心智。