@downcity/city 0.2.200 → 0.2.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -13
- package/bin/client/bureau.d.ts +41 -0
- package/bin/client/bureau.d.ts.map +1 -0
- package/bin/client/bureau.js +240 -0
- package/bin/client/bureau.js.map +1 -0
- package/bin/client/city.d.ts +15 -79
- package/bin/client/city.d.ts.map +1 -1
- package/bin/client/city.js +15 -99
- package/bin/client/city.js.map +1 -1
- package/bin/client/federation-admin.d.ts +32 -0
- package/bin/client/federation-admin.d.ts.map +1 -0
- package/bin/client/federation-admin.js +54 -0
- package/bin/client/federation-admin.js.map +1 -0
- package/bin/client/types.d.ts +10 -70
- package/bin/client/types.d.ts.map +1 -1
- package/bin/client/types.js +3 -3
- package/bin/federation/auth/authenticator.d.ts +17 -13
- package/bin/federation/auth/authenticator.d.ts.map +1 -1
- package/bin/federation/auth/authenticator.js +38 -27
- package/bin/federation/auth/authenticator.js.map +1 -1
- package/bin/federation/auth/bureau-token-schema.d.ts +274 -0
- package/bin/federation/auth/bureau-token-schema.d.ts.map +1 -0
- package/bin/federation/auth/bureau-token-schema.js +43 -0
- package/bin/federation/auth/bureau-token-schema.js.map +1 -0
- package/bin/federation/auth/bureau-token-store.d.ts +22 -0
- package/bin/federation/auth/bureau-token-store.d.ts.map +1 -0
- package/bin/federation/auth/bureau-token-store.js +122 -0
- package/bin/federation/auth/bureau-token-store.js.map +1 -0
- package/bin/federation/auth/federation-key-store.d.ts +26 -0
- package/bin/federation/auth/federation-key-store.d.ts.map +1 -0
- package/bin/federation/auth/federation-key-store.js +96 -0
- package/bin/federation/auth/federation-key-store.js.map +1 -0
- package/bin/federation/auth/key-schema.d.ts +275 -0
- package/bin/federation/auth/key-schema.d.ts.map +1 -0
- package/bin/federation/auth/key-schema.js +44 -0
- package/bin/federation/auth/key-schema.js.map +1 -0
- package/bin/federation/auth/types.d.ts +62 -4
- package/bin/federation/auth/types.d.ts.map +1 -1
- package/bin/federation/auth/user-token-authority.d.ts +26 -0
- package/bin/federation/auth/user-token-authority.d.ts.map +1 -0
- package/bin/federation/auth/user-token-authority.js +179 -0
- package/bin/federation/auth/user-token-authority.js.map +1 -0
- package/bin/federation/federation-init.d.ts.map +1 -1
- package/bin/federation/federation-init.js +23 -4
- package/bin/federation/federation-init.js.map +1 -1
- package/bin/federation/federation-router.d.ts +3 -1
- package/bin/federation/federation-router.d.ts.map +1 -1
- package/bin/federation/federation-router.js +17 -0
- package/bin/federation/federation-router.js.map +1 -1
- package/bin/federation/federation-runtime.d.ts.map +1 -1
- package/bin/federation/federation-runtime.js +14 -2
- package/bin/federation/federation-runtime.js.map +1 -1
- package/bin/federation/federation.d.ts.map +1 -1
- package/bin/federation/federation.js +2 -0
- package/bin/federation/federation.js.map +1 -1
- package/bin/federation/runtime.d.ts +4 -0
- package/bin/federation/runtime.d.ts.map +1 -1
- package/bin/index.d.ts +11 -10
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +5 -3
- package/bin/index.js.map +1 -1
- package/bin/pact/admin/index.d.ts +7 -19
- package/bin/pact/admin/index.d.ts.map +1 -1
- package/bin/pact/admin/index.js +10 -18
- package/bin/pact/admin/index.js.map +1 -1
- package/bin/pact/admin/types.d.ts +4 -10
- package/bin/pact/admin/types.d.ts.map +1 -1
- package/bin/pact/invoker/ai/CityModel.d.ts +1 -1
- package/bin/pact/invoker/ai/CityModel.d.ts.map +1 -1
- package/bin/pact/invoker/ai/CityModel.js +3 -65
- package/bin/pact/invoker/ai/CityModel.js.map +1 -1
- package/bin/pact/invoker/ai/types.d.ts +1 -1
- package/bin/pact/invoker/ai/types.js +1 -1
- package/bin/pact/invoker/bureaus/index.d.ts +25 -0
- package/bin/pact/invoker/bureaus/index.d.ts.map +1 -0
- package/bin/pact/invoker/bureaus/index.js +36 -0
- package/bin/pact/invoker/bureaus/index.js.map +1 -0
- package/bin/pact/invoker/cities/types.d.ts +2 -2
- package/bin/pact/invoker/cities/types.d.ts.map +1 -1
- package/bin/pact/invoker/user/index.d.ts +19 -0
- package/bin/pact/invoker/user/index.d.ts.map +1 -0
- package/bin/pact/invoker/user/index.js +24 -0
- package/bin/pact/invoker/user/index.js.map +1 -0
- package/bin/pact/user/index.d.ts +2 -1
- package/bin/pact/user/index.d.ts.map +1 -1
- package/bin/pact/user/index.js +7 -3
- package/bin/pact/user/index.js.map +1 -1
- package/bin/pact/user/types.d.ts +11 -6
- package/bin/pact/user/types.d.ts.map +1 -1
- package/bin/service/ai/AIChannel.d.ts +57 -0
- package/bin/service/ai/AIChannel.d.ts.map +1 -0
- package/bin/service/ai/AIChannel.js +151 -0
- package/bin/service/ai/AIChannel.js.map +1 -0
- package/bin/service/ai/OpenAIChatCompletionsAdapter.d.ts +23 -0
- package/bin/service/ai/OpenAIChatCompletionsAdapter.d.ts.map +1 -0
- package/bin/service/ai/OpenAIChatCompletionsAdapter.js +503 -0
- package/bin/service/ai/OpenAIChatCompletionsAdapter.js.map +1 -0
- package/bin/service/ai/ai-service-values.d.ts +16 -19
- package/bin/service/ai/ai-service-values.d.ts.map +1 -1
- package/bin/service/ai/ai-service-values.js +9 -13
- package/bin/service/ai/ai-service-values.js.map +1 -1
- package/bin/service/ai/ai-service.d.ts +16 -15
- package/bin/service/ai/ai-service.d.ts.map +1 -1
- package/bin/service/ai/ai-service.js +97 -106
- package/bin/service/ai/ai-service.js.map +1 -1
- package/bin/service/ai/helpers.d.ts +8 -35
- package/bin/service/ai/helpers.d.ts.map +1 -1
- package/bin/service/ai/helpers.js +8 -140
- package/bin/service/ai/helpers.js.map +1 -1
- package/bin/service/ai/image-job-store.d.ts +2 -3
- package/bin/service/ai/image-job-store.d.ts.map +1 -1
- package/bin/service/ai/image-job-store.js.map +1 -1
- package/bin/service/ai/language-model-stream.d.ts +9 -4
- package/bin/service/ai/language-model-stream.d.ts.map +1 -1
- package/bin/service/ai/language-model-stream.js +8 -4
- package/bin/service/ai/language-model-stream.js.map +1 -1
- package/bin/service/ai/language-model-text.d.ts +15 -0
- package/bin/service/ai/language-model-text.d.ts.map +1 -0
- package/bin/service/ai/language-model-text.js +67 -0
- package/bin/service/ai/language-model-text.js.map +1 -0
- package/bin/service/ai/model-context-window.d.ts +2 -2
- package/bin/service/ai/model-context-window.d.ts.map +1 -1
- package/bin/service/ai/model-context-window.js.map +1 -1
- package/bin/service/ai/model-registry.d.ts +9 -8
- package/bin/service/ai/model-registry.d.ts.map +1 -1
- package/bin/service/ai/model-registry.js +1 -5
- package/bin/service/ai/model-registry.js.map +1 -1
- package/bin/service/ai/model-routing.d.ts +1 -1
- package/bin/service/ai/model-routing.d.ts.map +1 -1
- package/bin/service/ai/model-routing.js +1 -1
- package/bin/service/ai/model-routing.js.map +1 -1
- package/bin/service/ai/reasoning.d.ts +4 -4
- package/bin/service/ai/reasoning.d.ts.map +1 -1
- package/bin/service/ai/reasoning.js.map +1 -1
- package/bin/service/bureaus/bureaus-service.d.ts +15 -0
- package/bin/service/bureaus/bureaus-service.d.ts.map +1 -0
- package/bin/service/bureaus/bureaus-service.js +55 -0
- package/bin/service/bureaus/bureaus-service.js.map +1 -0
- package/bin/service/installable-service.d.ts +5 -2
- package/bin/service/installable-service.d.ts.map +1 -1
- package/bin/service/installable-service.js +1 -0
- package/bin/service/installable-service.js.map +1 -1
- package/bin/service/instruction.js +1 -1
- package/bin/service/instruction.js.map +1 -1
- package/bin/service/service.d.ts +15 -2
- package/bin/service/service.d.ts.map +1 -1
- package/bin/service/service.js +2 -0
- package/bin/service/service.js.map +1 -1
- package/bin/types/AI.d.ts +289 -0
- package/bin/types/AI.d.ts.map +1 -0
- package/bin/types/AI.js +8 -0
- package/bin/types/AI.js.map +1 -0
- package/bin/types/AITransport.d.ts +251 -0
- package/bin/types/AITransport.d.ts.map +1 -0
- package/bin/types/AITransport.js +12 -0
- package/bin/types/AITransport.js.map +1 -0
- package/bin/types/Bureau.d.ts +96 -0
- package/bin/types/Bureau.d.ts.map +1 -0
- package/bin/types/Bureau.js +8 -0
- package/bin/types/Bureau.js.map +1 -0
- package/bin/types/FederationAdmin.d.ts +16 -0
- package/bin/types/FederationAdmin.d.ts.map +1 -0
- package/bin/types/FederationAdmin.js +7 -0
- package/bin/types/FederationAdmin.js.map +1 -0
- package/bin/types/Metering.d.ts +2 -2
- package/bin/types/Metering.d.ts.map +1 -1
- package/bin/types/User.d.ts +24 -0
- package/bin/types/User.d.ts.map +1 -0
- package/bin/types/User.js +8 -0
- package/bin/types/User.js.map +1 -0
- package/bin/utils/CityLanguageModelCodec.d.ts +1 -1
- package/bin/utils/CityLanguageModelCodec.d.ts.map +1 -1
- package/bin/utils/CityLanguageModelResult.d.ts +11 -0
- package/bin/utils/CityLanguageModelResult.d.ts.map +1 -0
- package/bin/utils/CityLanguageModelResult.js +76 -0
- package/bin/utils/CityLanguageModelResult.js.map +1 -0
- package/package.json +4 -3
- package/bin/federation/auth/token-signer.d.ts +0 -27
- package/bin/federation/auth/token-signer.d.ts.map +0 -1
- package/bin/federation/auth/token-signer.js +0 -116
- package/bin/federation/auth/token-signer.js.map +0 -1
- package/bin/service/ai/charge.d.ts +0 -76
- package/bin/service/ai/charge.d.ts.map +0 -1
- package/bin/service/ai/charge.js +0 -10
- package/bin/service/ai/charge.js.map +0 -1
- package/bin/service/ai/job-types.d.ts +0 -69
- package/bin/service/ai/job-types.d.ts.map +0 -1
- package/bin/service/ai/job-types.js +0 -9
- package/bin/service/ai/job-types.js.map +0 -1
- package/bin/service/ai/provider.d.ts +0 -143
- package/bin/service/ai/provider.d.ts.map +0 -1
- package/bin/service/ai/provider.js +0 -221
- package/bin/service/ai/provider.js.map +0 -1
- package/bin/service/ai/types.d.ts +0 -174
- package/bin/service/ai/types.d.ts.map +0 -1
- package/bin/service/ai/types.js +0 -7
- package/bin/service/ai/types.js.map +0 -1
- package/bin/types/AIImageJobClaim.d.ts +0 -14
- package/bin/types/AIImageJobClaim.d.ts.map +0 -1
- package/bin/types/AIImageJobClaim.js +0 -7
- package/bin/types/AIImageJobClaim.js.map +0 -1
- package/bin/types/AIReasoning.d.ts +0 -25
- package/bin/types/AIReasoning.d.ts.map +0 -1
- package/bin/types/AIReasoning.js +0 -7
- package/bin/types/AIReasoning.js.map +0 -1
- package/bin/types/AIRouting.d.ts +0 -37
- package/bin/types/AIRouting.d.ts.map +0 -1
- package/bin/types/AIRouting.js +0 -7
- package/bin/types/AIRouting.js.map +0 -1
- package/bin/types/CityLanguageModelRuntime.d.ts +0 -46
- package/bin/types/CityLanguageModelRuntime.d.ts.map +0 -1
- package/bin/types/CityLanguageModelRuntime.js +0 -8
- package/bin/types/CityLanguageModelRuntime.js.map +0 -1
- package/bin/types/CityLanguageModelTransport.d.ts +0 -49
- package/bin/types/CityLanguageModelTransport.d.ts.map +0 -1
- package/bin/types/CityLanguageModelTransport.js +0 -9
- package/bin/types/CityLanguageModelTransport.js.map +0 -1
- package/bin/types/CityModelRuntime.d.ts +0 -17
- package/bin/types/CityModelRuntime.d.ts.map +0 -1
- package/bin/types/CityModelRuntime.js +0 -8
- package/bin/types/CityModelRuntime.js.map +0 -1
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI 图片任务协议类型。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - AIService 固定 image_create / image_fetch / image_result 的返回协议。
|
|
6
|
-
* - AIService 默认使用内置 async_jobs 表保存图片任务,Provider 只负责创建上游任务和抓取上游结果。
|
|
7
|
-
*/
|
|
8
|
-
import type { UIMessage } from "ai";
|
|
9
|
-
import type { AsyncJobRecord } from "../../types/AsyncJob.js";
|
|
10
|
-
/** 图片任务状态。 */
|
|
11
|
-
export type AIImageJobStatus = "queued" | "running" | "succeeded" | "failed";
|
|
12
|
-
/** 图片任务扩展元数据。 */
|
|
13
|
-
export interface AIImageJobMetadata {
|
|
14
|
-
/** 扩展字段,由具体 Provider 自行约定。 */
|
|
15
|
-
[key: string]: unknown;
|
|
16
|
-
}
|
|
17
|
-
/** image_create action 返回给 AIService 的固定协议。 */
|
|
18
|
-
export interface AIImageProviderCreateResult {
|
|
19
|
-
/** 图片任务 ID,对 AIService 不透明,由具体 Provider 生成或转发。 */
|
|
20
|
-
job_id: string;
|
|
21
|
-
/** 创建后的任务状态。 */
|
|
22
|
-
status: AIImageJobStatus;
|
|
23
|
-
/** 当前任务状态说明,便于客户端展示或排障。 */
|
|
24
|
-
message?: string;
|
|
25
|
-
/** 失败时返回的错误消息。 */
|
|
26
|
-
error?: string;
|
|
27
|
-
/** 建议客户端下一次查询 result 的间隔毫秒数。 */
|
|
28
|
-
poll_after_ms?: number;
|
|
29
|
-
/** 具体 Provider 返回的扩展元数据。 */
|
|
30
|
-
metadata?: AIImageJobMetadata;
|
|
31
|
-
}
|
|
32
|
-
/** image_fetch action 返回给 AIService 的固定协议。 */
|
|
33
|
-
export interface AIImageProviderFetchResult {
|
|
34
|
-
/** 图片任务 ID。 */
|
|
35
|
-
job_id: string;
|
|
36
|
-
/** 当前任务状态。 */
|
|
37
|
-
status: AIImageJobStatus;
|
|
38
|
-
/** 成功时返回的 AI SDK UIMessage。 */
|
|
39
|
-
result?: UIMessage;
|
|
40
|
-
/** 失败时返回的错误消息。 */
|
|
41
|
-
error?: string;
|
|
42
|
-
/** 当前任务状态说明,便于客户端展示或排障。 */
|
|
43
|
-
message?: string;
|
|
44
|
-
/** 建议客户端下一次查询 result 的间隔毫秒数。 */
|
|
45
|
-
poll_after_ms?: number;
|
|
46
|
-
/** 具体 Provider 返回的扩展元数据。 */
|
|
47
|
-
metadata?: AIImageJobMetadata;
|
|
48
|
-
}
|
|
49
|
-
/** image/create 返回给客户端的结果。 */
|
|
50
|
-
export type UserImageJobCreateResult = AIImageProviderCreateResult;
|
|
51
|
-
/** image/result 返回给客户端的结果。 */
|
|
52
|
-
export type UserImageJobResult = AIImageProviderFetchResult;
|
|
53
|
-
/** image/result 的查询输入。 */
|
|
54
|
-
export interface UserImageJobResultInput {
|
|
55
|
-
/** 图片任务 ID,由 image_create 返回。 */
|
|
56
|
-
job_id: string;
|
|
57
|
-
}
|
|
58
|
-
/** Provider 在 image_fetch 中可读取的图片任务上下文。 */
|
|
59
|
-
export interface AIImageJobContext {
|
|
60
|
-
/** async_jobs 中保存的完整任务记录。 */
|
|
61
|
-
record: AsyncJobRecord;
|
|
62
|
-
/** image_create 时的原始输入。 */
|
|
63
|
-
input: Record<string, unknown>;
|
|
64
|
-
/** image_create / image_fetch 返回的 provider 状态。 */
|
|
65
|
-
state?: AIImageJobMetadata;
|
|
66
|
-
}
|
|
67
|
-
/** 兼容命名:Provider fetch 与用户 result 使用相同固定结果协议。 */
|
|
68
|
-
export type AIImageProviderResult = AIImageProviderFetchResult;
|
|
69
|
-
//# sourceMappingURL=job-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job-types.d.ts","sourceRoot":"","sources":["../../../src/service/ai/job-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,cAAc;AACd,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE7E,iBAAiB;AACjB,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B;IAC1C,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,8CAA8C;AAC9C,MAAM,WAAW,0BAA0B;IACzC,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,8BAA8B;AAC9B,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AAEnE,8BAA8B;AAC9B,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAE5D,0BAA0B;AAC1B,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,kDAAkD;IAClD,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B;AAED,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job-types.js","sourceRoot":"","sources":["../../../src/service/ai/job-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI Provider 模块。
|
|
3
|
-
*
|
|
4
|
-
* Provider 是第三方 AI 提供商的基类。
|
|
5
|
-
* - 默认提供 OpenAI-compatible 的 text 实现。
|
|
6
|
-
* - 子类通过覆盖 createClient 来绑定不同的 AI SDK provider。
|
|
7
|
-
* - 需要其它模态(image / video / tts / asr)或自定义 openai 透传时,覆盖对应方法。
|
|
8
|
-
*/
|
|
9
|
-
import type { UIMessage } from "ai";
|
|
10
|
-
import type { CityModelReasoning } from "@downcity/type";
|
|
11
|
-
import type { Context } from "../service.js";
|
|
12
|
-
import type { AIProviderBillFn, AIProviderChargedOutput, AIProviderChargedResponse, AIProviderChargeLine } from "./charge.js";
|
|
13
|
-
import type { AIImageProviderCreateResult, AIImageProviderFetchResult, AIImageProviderResult } from "./job-types.js";
|
|
14
|
-
import type { ModelConfig, CityLanguageModelV3, ModelFallbackRule, OpenAICompatibleClient, OpenAICompatibleClientConfig, ProviderOptions } from "./types.js";
|
|
15
|
-
import type { AIProviderOptions } from "../../types/AIReasoning.js";
|
|
16
|
-
import type { CityProviderStreamCall, CityProviderStreamResult } from "../../types/CityLanguageModelRuntime.js";
|
|
17
|
-
interface OpenAIActionInput {
|
|
18
|
-
/** 多轮 UIMessage。 */
|
|
19
|
-
messages?: UIMessage[];
|
|
20
|
-
/** 单轮 prompt。 */
|
|
21
|
-
prompt?: string;
|
|
22
|
-
/** OpenAI function tools。 */
|
|
23
|
-
tools?: Record<string, unknown>[];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* AI Provider 基类。
|
|
27
|
-
*
|
|
28
|
-
* 子类通过覆盖方法声明 action,model() 会自动收集并生成 ModelConfig。
|
|
29
|
-
* 默认 text 使用 OpenAI-compatible 协议,CityModel 模型流统一由 stream 提供。
|
|
30
|
-
*/
|
|
31
|
-
export declare abstract class Provider {
|
|
32
|
-
/** Provider 唯一 ID。 */
|
|
33
|
-
readonly id: string;
|
|
34
|
-
/** 模型所需环境变量说明。 */
|
|
35
|
-
readonly env?: Record<string, string>;
|
|
36
|
-
/** Provider 的 baseURL(用于自动透传)。 */
|
|
37
|
-
readonly baseURL?: string;
|
|
38
|
-
/** Provider 的环境变量 key。 */
|
|
39
|
-
readonly envKey?: string;
|
|
40
|
-
/** 上游 API 实际模型 ID(自动透传时替换 body.model)。 */
|
|
41
|
-
readonly passthroughModel?: string;
|
|
42
|
-
constructor(options: ProviderOptions);
|
|
43
|
-
/**
|
|
44
|
-
* 创建 OpenAI-compatible chat client。
|
|
45
|
-
*
|
|
46
|
-
* 子类需要支持 text 或 CityModel stream 时必须覆盖。
|
|
47
|
-
* 默认抛出错误。
|
|
48
|
-
*/
|
|
49
|
-
protected createClient(config: OpenAICompatibleClientConfig): OpenAICompatibleClient;
|
|
50
|
-
/**
|
|
51
|
-
* 从输入中提取 prompt 文本。
|
|
52
|
-
*
|
|
53
|
-
* 子类可覆盖以支持多模态 messages 转文本。
|
|
54
|
-
*/
|
|
55
|
-
protected extractPrompt(input: OpenAIActionInput): string;
|
|
56
|
-
/**
|
|
57
|
-
* 为一次完成的调用生成扣费草稿。
|
|
58
|
-
*
|
|
59
|
-
* 默认不返回扣费。真正扣款由 AIService 调用 BalanceService 完成。
|
|
60
|
-
*/
|
|
61
|
-
protected bill(ctx: Context, output: unknown): AIProviderChargeLine | undefined;
|
|
62
|
-
/** 创建默认 OpenAI-compatible chat model。 */
|
|
63
|
-
private create_openai_compatible_model;
|
|
64
|
-
/**
|
|
65
|
-
* 执行一次 CityModel 标准模型流。
|
|
66
|
-
*
|
|
67
|
-
* 默认实现把调用交给 OpenAI-compatible chat model。Responses、Claude Messages、
|
|
68
|
-
* Gemini 或自定义上游协议应覆盖此方法,并返回标准 LanguageModelV3 流事件。
|
|
69
|
-
*/
|
|
70
|
-
protected stream(ctx: Context, call: CityProviderStreamCall): Promise<CityProviderStreamResult>;
|
|
71
|
-
/**
|
|
72
|
-
* 将输入解析成 prompt 或 messages。
|
|
73
|
-
*/
|
|
74
|
-
private resolveActionInput;
|
|
75
|
-
/**
|
|
76
|
-
* 将 AIService 已解析的推理强度转换为当前 AI SDK Provider 的 providerOptions。
|
|
77
|
-
*
|
|
78
|
-
* 默认实现适用于 OpenAI-compatible Provider。Anthropic、Gemini 等字段结构不同的
|
|
79
|
-
* Provider 应覆盖该方法,但不能重新读取或校验原始 reasoning_effort。
|
|
80
|
-
*/
|
|
81
|
-
protected build_reasoning_provider_options(ctx: Context, model: CityLanguageModelV3): AIProviderOptions | undefined;
|
|
82
|
-
/**
|
|
83
|
-
* 文本生成 action(OpenAI-compatible 默认实现)。
|
|
84
|
-
*/
|
|
85
|
-
text(ctx: Context): Promise<AIProviderChargedOutput<UIMessage>>;
|
|
86
|
-
/**
|
|
87
|
-
* 图片任务创建 action。
|
|
88
|
-
*
|
|
89
|
-
* 子类实现图片生成时覆盖,负责创建并启动 provider 侧图片任务。
|
|
90
|
-
*/
|
|
91
|
-
image_create?(ctx: Context): Promise<AIImageProviderCreateResult>;
|
|
92
|
-
/**
|
|
93
|
-
* 图片任务抓取 action。
|
|
94
|
-
*
|
|
95
|
-
* 子类实现图片生成时覆盖,负责根据 provider 任务状态抓取上游结果。
|
|
96
|
-
*/
|
|
97
|
-
image_fetch?(ctx: Context): Promise<AIImageProviderFetchResult>;
|
|
98
|
-
/**
|
|
99
|
-
* 图片任务查询 action。
|
|
100
|
-
*
|
|
101
|
-
* 该方法保留为类型兼容,AIService 图片能力默认使用 image_fetch。
|
|
102
|
-
*/
|
|
103
|
-
image_result?(ctx: Context): Promise<AIImageProviderResult>;
|
|
104
|
-
/**
|
|
105
|
-
* 视频生成 action。
|
|
106
|
-
*/
|
|
107
|
-
video?(ctx: Context): Promise<AIProviderChargedOutput<UIMessage>>;
|
|
108
|
-
/**
|
|
109
|
-
* 语音合成 action。
|
|
110
|
-
*/
|
|
111
|
-
tts?(ctx: Context): Promise<AIProviderChargedResponse>;
|
|
112
|
-
/**
|
|
113
|
-
* 语音识别 action。
|
|
114
|
-
*/
|
|
115
|
-
asr?(ctx: Context): Promise<AIProviderChargedResponse>;
|
|
116
|
-
/**
|
|
117
|
-
* OpenAI 兼容 /chat/completions action。
|
|
118
|
-
*
|
|
119
|
-
* 未覆盖时由 AIService 自动透传。
|
|
120
|
-
*/
|
|
121
|
-
openai?(ctx: Context): Promise<AIProviderChargedResponse>;
|
|
122
|
-
/**
|
|
123
|
-
* 生成模型配置。
|
|
124
|
-
*
|
|
125
|
-
* 自动收集当前 Provider 实例上定义的 action 方法。
|
|
126
|
-
*/
|
|
127
|
-
model(spec: {
|
|
128
|
-
id: string;
|
|
129
|
-
name: string;
|
|
130
|
-
description?: string;
|
|
131
|
-
/** 模型支持的总上下文窗口长度,单位为 token。 */
|
|
132
|
-
context_window?: number;
|
|
133
|
-
tags?: string[];
|
|
134
|
-
meta?: Record<string, unknown>;
|
|
135
|
-
/** 面向用户展示的价格说明列表;不参与实际扣费计算。 */
|
|
136
|
-
price?: string[];
|
|
137
|
-
reasoning?: CityModelReasoning;
|
|
138
|
-
fallback?: ModelFallbackRule[];
|
|
139
|
-
bill?: AIProviderBillFn;
|
|
140
|
-
}): ModelConfig;
|
|
141
|
-
}
|
|
142
|
-
export {};
|
|
143
|
-
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/service/ai/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI Provider 模块。
|
|
3
|
-
*
|
|
4
|
-
* Provider 是第三方 AI 提供商的基类。
|
|
5
|
-
* - 默认提供 OpenAI-compatible 的 text 实现。
|
|
6
|
-
* - 子类通过覆盖 createClient 来绑定不同的 AI SDK provider。
|
|
7
|
-
* - 需要其它模态(image / video / tts / asr)或自定义 openai 透传时,覆盖对应方法。
|
|
8
|
-
*/
|
|
9
|
-
import { convertToModelMessages, generateText } from "ai";
|
|
10
|
-
import { buildAssistantMessage, buildToolSet, readRequiredEnv, resolveUpstreamModel, } from "./helpers.js";
|
|
11
|
-
import { read_resolved_reasoning } from "./reasoning.js";
|
|
12
|
-
// ===========================================================================
|
|
13
|
-
// Provider 基类
|
|
14
|
-
// ===========================================================================
|
|
15
|
-
/**
|
|
16
|
-
* AI Provider 基类。
|
|
17
|
-
*
|
|
18
|
-
* 子类通过覆盖方法声明 action,model() 会自动收集并生成 ModelConfig。
|
|
19
|
-
* 默认 text 使用 OpenAI-compatible 协议,CityModel 模型流统一由 stream 提供。
|
|
20
|
-
*/
|
|
21
|
-
export class Provider {
|
|
22
|
-
/** Provider 唯一 ID。 */
|
|
23
|
-
id;
|
|
24
|
-
/** 模型所需环境变量说明。 */
|
|
25
|
-
env;
|
|
26
|
-
/** Provider 的 baseURL(用于自动透传)。 */
|
|
27
|
-
baseURL;
|
|
28
|
-
/** Provider 的环境变量 key。 */
|
|
29
|
-
envKey;
|
|
30
|
-
/** 上游 API 实际模型 ID(自动透传时替换 body.model)。 */
|
|
31
|
-
passthroughModel;
|
|
32
|
-
constructor(options) {
|
|
33
|
-
this.id = options.id;
|
|
34
|
-
this.env = options.env ?? (options.envKey ? { [options.envKey]: `${options.id} API Key` } : undefined);
|
|
35
|
-
this.baseURL = options.baseURL;
|
|
36
|
-
this.envKey = options.envKey;
|
|
37
|
-
this.passthroughModel = options.passthroughModel;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* 创建 OpenAI-compatible chat client。
|
|
41
|
-
*
|
|
42
|
-
* 子类需要支持 text 或 CityModel stream 时必须覆盖。
|
|
43
|
-
* 默认抛出错误。
|
|
44
|
-
*/
|
|
45
|
-
createClient(config) {
|
|
46
|
-
throw new Error(`Provider ${this.id} does not support language models`);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 从输入中提取 prompt 文本。
|
|
50
|
-
*
|
|
51
|
-
* 子类可覆盖以支持多模态 messages 转文本。
|
|
52
|
-
*/
|
|
53
|
-
extractPrompt(input) {
|
|
54
|
-
if (typeof input.prompt === "string")
|
|
55
|
-
return input.prompt;
|
|
56
|
-
return input.messages
|
|
57
|
-
?.find((message) => message.role === "user")
|
|
58
|
-
?.parts?.find((part) => part.type === "text")
|
|
59
|
-
?.text ?? "";
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 为一次完成的调用生成扣费草稿。
|
|
63
|
-
*
|
|
64
|
-
* 默认不返回扣费。真正扣款由 AIService 调用 BalanceService 完成。
|
|
65
|
-
*/
|
|
66
|
-
bill(ctx, output) {
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
/** 创建默认 OpenAI-compatible chat model。 */
|
|
70
|
-
create_openai_compatible_model(ctx) {
|
|
71
|
-
if (!this.envKey) {
|
|
72
|
-
throw new Error(`Provider ${this.id} is missing envKey`);
|
|
73
|
-
}
|
|
74
|
-
const api_key = readRequiredEnv(ctx, this.envKey);
|
|
75
|
-
const base_url = this.baseURL ?? "https://api.openai.com/v1";
|
|
76
|
-
const upstream_model = resolveUpstreamModel(ctx, this.passthroughModel ?? "");
|
|
77
|
-
return this.createClient({ apiKey: api_key, baseURL: base_url, name: this.id }).chat(upstream_model);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 执行一次 CityModel 标准模型流。
|
|
81
|
-
*
|
|
82
|
-
* 默认实现把调用交给 OpenAI-compatible chat model。Responses、Claude Messages、
|
|
83
|
-
* Gemini 或自定义上游协议应覆盖此方法,并返回标准 LanguageModelV3 流事件。
|
|
84
|
-
*/
|
|
85
|
-
async stream(ctx, call) {
|
|
86
|
-
const model = this.create_openai_compatible_model(ctx);
|
|
87
|
-
const provider_options = this.build_reasoning_provider_options(ctx, model);
|
|
88
|
-
return model.doStream({
|
|
89
|
-
...call,
|
|
90
|
-
...(provider_options ? { providerOptions: provider_options } : {}),
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* 将输入解析成 prompt 或 messages。
|
|
95
|
-
*/
|
|
96
|
-
async resolveActionInput(input) {
|
|
97
|
-
const tools = buildToolSet(input.tools);
|
|
98
|
-
if (Array.isArray(input.messages) && input.messages.length > 0) {
|
|
99
|
-
const messages = tools
|
|
100
|
-
? await convertToModelMessages(input.messages, { tools })
|
|
101
|
-
: await convertToModelMessages(input.messages);
|
|
102
|
-
return tools ? { tools, messages } : { messages };
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
prompt: this.extractPrompt(input),
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* 将 AIService 已解析的推理强度转换为当前 AI SDK Provider 的 providerOptions。
|
|
110
|
-
*
|
|
111
|
-
* 默认实现适用于 OpenAI-compatible Provider。Anthropic、Gemini 等字段结构不同的
|
|
112
|
-
* Provider 应覆盖该方法,但不能重新读取或校验原始 reasoning_effort。
|
|
113
|
-
*/
|
|
114
|
-
build_reasoning_provider_options(ctx, model) {
|
|
115
|
-
const reasoning = read_resolved_reasoning(ctx);
|
|
116
|
-
if (!reasoning)
|
|
117
|
-
return undefined;
|
|
118
|
-
const provider = typeof model === "object" && model !== null && "provider" in model
|
|
119
|
-
? model.provider
|
|
120
|
-
: undefined;
|
|
121
|
-
const provider_id = typeof provider === "string"
|
|
122
|
-
? provider.split(".")[0]?.trim()
|
|
123
|
-
: undefined;
|
|
124
|
-
if (!provider_id) {
|
|
125
|
-
throw new Error(`Provider ${this.id} cannot resolve AI SDK provider id`);
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
[provider_id]: {
|
|
129
|
-
reasoningEffort: reasoning.effort,
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* 文本生成 action(OpenAI-compatible 默认实现)。
|
|
135
|
-
*/
|
|
136
|
-
async text(ctx) {
|
|
137
|
-
const input = ctx.input;
|
|
138
|
-
const resolved_input = await this.resolveActionInput(input);
|
|
139
|
-
const model = this.create_openai_compatible_model(ctx);
|
|
140
|
-
const provider_options = this.build_reasoning_provider_options(ctx, model);
|
|
141
|
-
if ("messages" in resolved_input) {
|
|
142
|
-
const result = await generateText({
|
|
143
|
-
model,
|
|
144
|
-
messages: resolved_input.messages,
|
|
145
|
-
...("tools" in resolved_input ? { tools: resolved_input.tools } : {}),
|
|
146
|
-
...(provider_options ? { providerOptions: provider_options } : {}),
|
|
147
|
-
});
|
|
148
|
-
return buildAssistantMessage(result.text, ctx, {
|
|
149
|
-
finishReason: result.finishReason,
|
|
150
|
-
usage: result.usage,
|
|
151
|
-
...("tools" in resolved_input ? { toolCalls: result.toolCalls } : {}),
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
const result = await generateText({
|
|
155
|
-
model,
|
|
156
|
-
prompt: resolved_input.prompt,
|
|
157
|
-
...(provider_options ? { providerOptions: provider_options } : {}),
|
|
158
|
-
});
|
|
159
|
-
return buildAssistantMessage(result.text, ctx, {
|
|
160
|
-
finishReason: result.finishReason,
|
|
161
|
-
usage: result.usage,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* 生成模型配置。
|
|
166
|
-
*
|
|
167
|
-
* 自动收集当前 Provider 实例上定义的 action 方法。
|
|
168
|
-
*/
|
|
169
|
-
model(spec) {
|
|
170
|
-
const actions = {};
|
|
171
|
-
const has_language_model = this.stream !== Provider.prototype.stream ||
|
|
172
|
-
this.createClient !== Provider.prototype.createClient;
|
|
173
|
-
const all_modalities = [
|
|
174
|
-
"text",
|
|
175
|
-
"image_create",
|
|
176
|
-
"image_fetch",
|
|
177
|
-
"image_result",
|
|
178
|
-
"video",
|
|
179
|
-
"tts",
|
|
180
|
-
"asr",
|
|
181
|
-
"openai",
|
|
182
|
-
];
|
|
183
|
-
for (const modality of all_modalities) {
|
|
184
|
-
const fn = this[modality];
|
|
185
|
-
if (typeof fn !== "function")
|
|
186
|
-
continue;
|
|
187
|
-
// text 默认由基类实现,只有子类显式覆盖或提供了 createClient 才暴露。
|
|
188
|
-
if (modality === "text") {
|
|
189
|
-
const is_overridden = fn !== Provider.prototype[modality];
|
|
190
|
-
const has_create_client = this.createClient !== Provider.prototype.createClient;
|
|
191
|
-
if (!is_overridden && !has_create_client)
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
actions[modality] = fn.bind(this);
|
|
195
|
-
}
|
|
196
|
-
return {
|
|
197
|
-
id: spec.id,
|
|
198
|
-
provider_id: this.id,
|
|
199
|
-
name: spec.name,
|
|
200
|
-
description: spec.description,
|
|
201
|
-
context_window: spec.context_window,
|
|
202
|
-
tags: spec.tags,
|
|
203
|
-
...(spec.price ? { price: [...spec.price] } : {}),
|
|
204
|
-
meta: spec.meta,
|
|
205
|
-
reasoning: spec.reasoning,
|
|
206
|
-
env: this.env,
|
|
207
|
-
baseURL: this.baseURL,
|
|
208
|
-
envKey: this.envKey,
|
|
209
|
-
passthroughModel: this.passthroughModel,
|
|
210
|
-
fallback: spec.fallback,
|
|
211
|
-
actions,
|
|
212
|
-
...(has_language_model ? {
|
|
213
|
-
language_model: {
|
|
214
|
-
stream: (ctx, call) => this.stream(ctx, call),
|
|
215
|
-
},
|
|
216
|
-
} : {}),
|
|
217
|
-
bill: spec.bill ?? this.bill.bind(this),
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/service/ai/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI Service 类型模块。
|
|
3
|
-
*
|
|
4
|
-
* 包含模型配置、action 映射、运行时模型和执行上下文类型。
|
|
5
|
-
*/
|
|
6
|
-
import type { ActionFn } from "../action.js";
|
|
7
|
-
import type { AIBalanceBridge, AIProviderBillFn } from "./charge.js";
|
|
8
|
-
import type { CityModelDescriptor, CityModelEnvRequirement, CityModelReasoning } from "@downcity/type";
|
|
9
|
-
import type { LanguageModel } from "ai";
|
|
10
|
-
import type { CityProviderStreamCall, CityProviderStreamResult } from "../../types/CityLanguageModelRuntime.js";
|
|
11
|
-
/**
|
|
12
|
-
* Provider 构造选项。
|
|
13
|
-
*/
|
|
14
|
-
export interface ProviderOptions {
|
|
15
|
-
/** Provider 唯一 ID。 */
|
|
16
|
-
id: string;
|
|
17
|
-
/** 模型所需环境变量说明。 */
|
|
18
|
-
env?: Record<string, string>;
|
|
19
|
-
/** Provider 的 baseURL(用于自动透传)。 */
|
|
20
|
-
baseURL?: string;
|
|
21
|
-
/** Provider 的环境变量 key。 */
|
|
22
|
-
envKey?: string;
|
|
23
|
-
/** 上游 API 实际模型 ID(自动透传时替换 body.model)。 */
|
|
24
|
-
passthroughModel?: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* OpenAI-compatible client 工厂入参。
|
|
28
|
-
*/
|
|
29
|
-
export interface OpenAICompatibleClientConfig {
|
|
30
|
-
/** 上游 API Key。 */
|
|
31
|
-
apiKey: string;
|
|
32
|
-
/** 上游 OpenAI-compatible baseURL。 */
|
|
33
|
-
baseURL: string;
|
|
34
|
-
/** Provider 展示名称,通常用于底层 SDK 调试和埋点。 */
|
|
35
|
-
name: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* OpenAI-compatible chat client 最小能力约束。
|
|
39
|
-
*/
|
|
40
|
-
export interface OpenAICompatibleClient {
|
|
41
|
-
/** 根据模型 ID 创建可传给 AI SDK 的 chat model。 */
|
|
42
|
-
chat(modelId: string): CityLanguageModelV3;
|
|
43
|
-
}
|
|
44
|
-
/** 当前 City runtime 支持的 AI SDK LanguageModelV3。 */
|
|
45
|
-
export type CityLanguageModelV3 = Extract<LanguageModel, {
|
|
46
|
-
readonly specificationVersion: "v3";
|
|
47
|
-
}>;
|
|
48
|
-
/** Provider 为 CityModel stream endpoint 暴露的执行运行时。 */
|
|
49
|
-
export interface ModelLanguageRuntime {
|
|
50
|
-
/** 执行一次已解码的标准模型调用,并返回 LanguageModelV3 流事件。 */
|
|
51
|
-
stream(ctx: import("../service.js").Context, call: CityProviderStreamCall): Promise<CityProviderStreamResult>;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* 模型 action 映射,key 为通路名称。
|
|
55
|
-
*
|
|
56
|
-
* 两条独立通路:
|
|
57
|
-
* - SDK action 通路:text / video / tts / asr — 给 User City 用
|
|
58
|
-
* - 模型流通路:由 ModelLanguageRuntime 直接提供,不进入 actions
|
|
59
|
-
* - 图片任务通路:image_create / image_fetch / image_result — 给图片任务创建、后台抓取和用户查询调用
|
|
60
|
-
* - OpenAI 兼容通路:openai — 给 /chat/completions 端点用
|
|
61
|
-
*
|
|
62
|
-
* 每个 action 接收 Context,返回对应通路的结果。
|
|
63
|
-
* Provider 通过方法声明提供 action,通过 model() 方法绑定到模型配置。
|
|
64
|
-
*/
|
|
65
|
-
export interface ModelActions {
|
|
66
|
-
/** 文本生成 action */
|
|
67
|
-
text?: ActionFn;
|
|
68
|
-
/** 图片任务创建 action,负责启动 provider 图片生成任务。 */
|
|
69
|
-
image_create?: ActionFn;
|
|
70
|
-
/** 图片任务抓取 action,负责查询上游状态并返回 provider 图片生成结果。 */
|
|
71
|
-
image_fetch?: ActionFn;
|
|
72
|
-
/** 图片任务查询 action,通常由 AIService 自己实现为读取 async_jobs。 */
|
|
73
|
-
image_result?: ActionFn;
|
|
74
|
-
/** 视频生成 action */
|
|
75
|
-
video?: ActionFn;
|
|
76
|
-
/** 语音合成 action */
|
|
77
|
-
tts?: ActionFn;
|
|
78
|
-
/** 语音识别 action */
|
|
79
|
-
asr?: ActionFn;
|
|
80
|
-
/** OpenAI 兼容 /chat/completions action。未提供时 AIService 自动透传 */
|
|
81
|
-
openai?: ActionFn;
|
|
82
|
-
/** 扩展 modality action */
|
|
83
|
-
[modality: string]: ActionFn | undefined;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 模型级 fallback 媒体输入。
|
|
87
|
-
*
|
|
88
|
-
* AIService 只负责从请求中提取 file 媒体信息,具体是否命中 fallback 由模型配置自行判断。
|
|
89
|
-
*/
|
|
90
|
-
export interface ModelFallbackMedia {
|
|
91
|
-
/** file part 的 IANA 媒体类型,例如 `image/png`、`audio/mpeg` 或 `application/pdf`。 */
|
|
92
|
-
media_type: string;
|
|
93
|
-
/** file part 的文件名;请求未提供文件名时为空。 */
|
|
94
|
-
filename?: string;
|
|
95
|
-
/** file part 的 URL 或 Data URL;请求未提供 URL 时为空。 */
|
|
96
|
-
url?: string;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* 模型级 fallback 规则。
|
|
100
|
-
*
|
|
101
|
-
* 规则按数组顺序执行,第一条匹配且目标模型可用的规则会成为实际执行模型。
|
|
102
|
-
*/
|
|
103
|
-
export interface ModelFallbackRule {
|
|
104
|
-
/** 判断当前媒体输入是否应该使用这条 fallback 规则。 */
|
|
105
|
-
match: (media: ModelFallbackMedia) => boolean;
|
|
106
|
-
/** 规则命中后切换到的目标模型。 */
|
|
107
|
-
model: ModelConfig | string;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* 模型配置(Provider.model() 的返回值)。
|
|
111
|
-
*/
|
|
112
|
-
export interface ModelConfig {
|
|
113
|
-
/** 模型唯一 ID */
|
|
114
|
-
id: string;
|
|
115
|
-
/** Provider 唯一 ID */
|
|
116
|
-
provider_id?: string;
|
|
117
|
-
/** 模型展示名称 */
|
|
118
|
-
name: string;
|
|
119
|
-
/** 模型描述 */
|
|
120
|
-
description?: string;
|
|
121
|
-
/** 模型支持的总上下文窗口长度,单位为 token。 */
|
|
122
|
-
context_window?: number;
|
|
123
|
-
/** 模型标签 */
|
|
124
|
-
tags?: string[];
|
|
125
|
-
/** 面向用户展示的价格说明列表;不参与实际扣费计算。 */
|
|
126
|
-
price?: string[];
|
|
127
|
-
/** 模型元数据 */
|
|
128
|
-
meta?: Record<string, unknown>;
|
|
129
|
-
/** 模型支持的推理强度配置。 */
|
|
130
|
-
reasoning?: CityModelReasoning;
|
|
131
|
-
/** 模型所需环境变量 */
|
|
132
|
-
env?: Record<string, string>;
|
|
133
|
-
/** Provider 的 baseURL(用于自动透传) */
|
|
134
|
-
baseURL?: string;
|
|
135
|
-
/** Provider 的环境变量 key */
|
|
136
|
-
envKey?: string;
|
|
137
|
-
/** 上游 API 实际模型 ID(自动透传时替换 body.model) */
|
|
138
|
-
passthroughModel?: string;
|
|
139
|
-
/** 模型级 fallback 规则列表,按顺序匹配请求中的 file 媒体输入。 */
|
|
140
|
-
fallback?: ModelFallbackRule[];
|
|
141
|
-
/** 各通路 action 绑定 */
|
|
142
|
-
actions: ModelActions;
|
|
143
|
-
/** CityModel `/v1/ai/stream` 使用的 Provider runtime。 */
|
|
144
|
-
language_model?: ModelLanguageRuntime;
|
|
145
|
-
/** 本模型的出账方法,只生成扣费草稿,不直接扣余额。 */
|
|
146
|
-
bill?: AIProviderBillFn;
|
|
147
|
-
}
|
|
148
|
-
export type PublicModel = CityModelDescriptor;
|
|
149
|
-
/**
|
|
150
|
-
* AI 模型环境变量需求。
|
|
151
|
-
*
|
|
152
|
-
* 用于 admin 视角展示某个模型依赖哪些运行时 key,
|
|
153
|
-
* 以及这些 key 当前是否已经配置完成。
|
|
154
|
-
*/
|
|
155
|
-
export type AIModelEnvRequirement = CityModelEnvRequirement;
|
|
156
|
-
/**
|
|
157
|
-
* AIService 配置。
|
|
158
|
-
*/
|
|
159
|
-
export interface AIServiceOptions {
|
|
160
|
-
/**
|
|
161
|
-
* AI 专用余额桥接。
|
|
162
|
-
*
|
|
163
|
-
* Provider 可以直接返回最终扣费金额,AIService 会通过该 bridge 完成扣费。
|
|
164
|
-
*/
|
|
165
|
-
balance?: AIBalanceBridge;
|
|
166
|
-
/**
|
|
167
|
-
* 图片异步任务允许保持 queued/running 的最长时间,单位毫秒。
|
|
168
|
-
*
|
|
169
|
-
* 超过该时间后,AIService 会把任务标记为 failed,并写入 upstream timeout。
|
|
170
|
-
* 设为 0 或负数会回退到默认值。
|
|
171
|
-
*/
|
|
172
|
-
image_max_pending_duration_ms?: number;
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/service/ai/types.ts"],"names":[],"mappings":"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"}
|
package/bin/service/ai/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/service/ai/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|