@downcity/city 0.2.191 → 0.2.194
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/bin/index.d.ts +3 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +1 -0
- package/bin/index.js.map +1 -1
- package/bin/pact/http.d.ts +4 -0
- package/bin/pact/http.d.ts.map +1 -1
- package/bin/pact/http.js.map +1 -1
- package/bin/pact/invoker/ai/CityModel.d.ts +38 -0
- package/bin/pact/invoker/ai/CityModel.d.ts.map +1 -0
- package/bin/pact/invoker/ai/CityModel.js +215 -0
- package/bin/pact/invoker/ai/CityModel.js.map +1 -0
- package/bin/pact/invoker/ai/client-stream.d.ts +14 -0
- package/bin/pact/invoker/ai/client-stream.d.ts.map +1 -0
- package/bin/pact/invoker/ai/client-stream.js +129 -0
- package/bin/pact/invoker/ai/client-stream.js.map +1 -0
- package/bin/pact/invoker/ai/index.d.ts +13 -13
- package/bin/pact/invoker/ai/index.d.ts.map +1 -1
- package/bin/pact/invoker/ai/index.js +42 -42
- package/bin/pact/invoker/ai/index.js.map +1 -1
- package/bin/pact/invoker/ai/types.d.ts +3 -2
- package/bin/pact/invoker/ai/types.d.ts.map +1 -1
- package/bin/pact/invoker/ai/types.js +1 -1
- package/bin/service/ai/ai-service-values.d.ts +73 -0
- package/bin/service/ai/ai-service-values.d.ts.map +1 -0
- package/bin/service/ai/ai-service-values.js +177 -0
- package/bin/service/ai/ai-service-values.js.map +1 -0
- package/bin/service/ai/ai-service.d.ts +8 -1
- package/bin/service/ai/ai-service.d.ts.map +1 -1
- package/bin/service/ai/ai-service.js +67 -232
- package/bin/service/ai/ai-service.js.map +1 -1
- package/bin/service/ai/helpers.d.ts +1 -0
- package/bin/service/ai/helpers.d.ts.map +1 -1
- package/bin/service/ai/helpers.js +22 -13
- package/bin/service/ai/helpers.js.map +1 -1
- package/bin/service/ai/language-model-stream.d.ts +12 -0
- package/bin/service/ai/language-model-stream.d.ts.map +1 -0
- package/bin/service/ai/language-model-stream.js +129 -0
- package/bin/service/ai/language-model-stream.js.map +1 -0
- package/bin/service/ai/model-routing.js +34 -0
- package/bin/service/ai/model-routing.js.map +1 -1
- package/bin/service/ai/provider.d.ts +12 -13
- package/bin/service/ai/provider.d.ts.map +1 -1
- package/bin/service/ai/provider.js +22 -40
- package/bin/service/ai/provider.js.map +1 -1
- package/bin/service/ai/types.d.ts +16 -4
- package/bin/service/ai/types.d.ts.map +1 -1
- package/bin/types/CityLanguageModelRuntime.d.ts +49 -0
- package/bin/types/CityLanguageModelRuntime.d.ts.map +1 -0
- package/bin/types/CityLanguageModelRuntime.js +8 -0
- package/bin/types/CityLanguageModelRuntime.js.map +1 -0
- package/bin/types/CityLanguageModelTransport.d.ts +49 -0
- package/bin/types/CityLanguageModelTransport.d.ts.map +1 -0
- package/bin/types/CityLanguageModelTransport.js +9 -0
- package/bin/types/CityLanguageModelTransport.js.map +1 -0
- package/bin/types/CityModelRuntime.d.ts +17 -0
- package/bin/types/CityModelRuntime.d.ts.map +1 -0
- package/bin/types/CityModelRuntime.js +8 -0
- package/bin/types/CityModelRuntime.js.map +1 -0
- package/bin/types/Metering.d.ts +4 -0
- package/bin/types/Metering.d.ts.map +1 -1
- package/bin/utils/CityLanguageModelCodec.d.ts +14 -0
- package/bin/utils/CityLanguageModelCodec.d.ts.map +1 -0
- package/bin/utils/CityLanguageModelCodec.js +108 -0
- package/bin/utils/CityLanguageModelCodec.js.map +1 -0
- package/package.json +2 -2
- package/bin/pact/invoker/ai/stream.d.ts +0 -8
- package/bin/pact/invoker/ai/stream.d.ts.map +0 -1
- package/bin/pact/invoker/ai/stream.js +0 -17
- package/bin/pact/invoker/ai/stream.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-model-stream.d.ts","sourceRoot":"","sources":["../../../src/service/ai/language-model-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EACV,gCAAgC,EAGhC,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAYjD,oCAAoC;AACpC,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,2BAA2B,GACjC,+BAA+B,CAsBjC;AAED,2DAA2D;AAC3D,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,kCAAkC,GACxC,OAAO,CAAC,gCAAgC,CAAC,CA2D3C"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federation City LanguageModel Transport 流模块。
|
|
3
|
+
*
|
|
4
|
+
* 负责请求协议校验、LanguageModelV3 调用和 SSE 编码。模型路由、reasoning、
|
|
5
|
+
* 计费与鉴权仍由 AIService 负责。
|
|
6
|
+
*/
|
|
7
|
+
import { CITY_LANGUAGE_MODEL_PROTOCOL_V1, } from "../../types/CityLanguageModelTransport.js";
|
|
8
|
+
import { decode_city_transport_value, encode_city_transport_object, } from "../../utils/CityLanguageModelCodec.js";
|
|
9
|
+
const SSE_HEADERS = {
|
|
10
|
+
"content-type": "text/event-stream; charset=utf-8",
|
|
11
|
+
"cache-control": "no-cache, no-transform",
|
|
12
|
+
connection: "keep-alive",
|
|
13
|
+
};
|
|
14
|
+
/** 校验并解码 CityModel transport 请求。 */
|
|
15
|
+
export function decode_city_language_model_request(input) {
|
|
16
|
+
if (input.protocol !== CITY_LANGUAGE_MODEL_PROTOCOL_V1) {
|
|
17
|
+
throw create_protocol_error(`Unsupported City language model protocol: ${String(input.protocol)}`);
|
|
18
|
+
}
|
|
19
|
+
const model_id = read_required_string(input.model_id, "model_id");
|
|
20
|
+
if (!is_json_object(input.call))
|
|
21
|
+
throw create_protocol_error("call must be a JSON object");
|
|
22
|
+
const decoded = decode_city_transport_value(input.call);
|
|
23
|
+
if (!decoded || typeof decoded !== "object" || Array.isArray(decoded)) {
|
|
24
|
+
throw create_protocol_error("decoded call must be an object");
|
|
25
|
+
}
|
|
26
|
+
const call = decoded;
|
|
27
|
+
if (!Array.isArray(call.prompt))
|
|
28
|
+
throw create_protocol_error("call.prompt must be an array");
|
|
29
|
+
if (call.tools?.some((tool) => tool.type === "provider")) {
|
|
30
|
+
throw create_protocol_error("Provider-defined tools are not supported by City transport v1");
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
model_id,
|
|
34
|
+
call,
|
|
35
|
+
...(read_optional_string(input.reasoning_effort)
|
|
36
|
+
? { reasoning_effort: read_optional_string(input.reasoning_effort) }
|
|
37
|
+
: {}),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** 调用 Provider LanguageModelV3 并编码为 City transport SSE。 */
|
|
41
|
+
export async function create_city_language_model_stream(input) {
|
|
42
|
+
const { abortSignal: _abort_signal, headers: _headers, includeRawChunks: _include_raw_chunks, providerOptions: _provider_options, ...safe_call } = input.call;
|
|
43
|
+
const call = {
|
|
44
|
+
...safe_call,
|
|
45
|
+
abortSignal: input.signal,
|
|
46
|
+
providerOptions: input.provider_options,
|
|
47
|
+
};
|
|
48
|
+
const result = await input.model.doStream(call);
|
|
49
|
+
const reader = result.stream.getReader();
|
|
50
|
+
const encoder = new TextEncoder();
|
|
51
|
+
let resolve_completion = () => undefined;
|
|
52
|
+
const completion = new Promise((resolve) => {
|
|
53
|
+
resolve_completion = resolve;
|
|
54
|
+
});
|
|
55
|
+
let completed = false;
|
|
56
|
+
const body = new ReadableStream({
|
|
57
|
+
async pull(controller) {
|
|
58
|
+
try {
|
|
59
|
+
const chunk = await reader.read();
|
|
60
|
+
if (chunk.done) {
|
|
61
|
+
complete(undefined);
|
|
62
|
+
controller.close();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (is_finish_part(chunk.value))
|
|
66
|
+
complete(chunk.value);
|
|
67
|
+
controller.enqueue(encoder.encode(serialize_stream_part(chunk.value)));
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
controller.enqueue(encoder.encode(serialize_stream_part({ type: "error", error })));
|
|
71
|
+
complete(undefined);
|
|
72
|
+
controller.close();
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
async cancel(reason) {
|
|
76
|
+
try {
|
|
77
|
+
await reader.cancel(reason);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
complete(undefined);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
response: new Response(body, { status: 200, headers: SSE_HEADERS }),
|
|
86
|
+
completion,
|
|
87
|
+
};
|
|
88
|
+
/** 只完成一次 completion promise。 */
|
|
89
|
+
function complete(part) {
|
|
90
|
+
if (completed)
|
|
91
|
+
return;
|
|
92
|
+
completed = true;
|
|
93
|
+
resolve_completion(part);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** 把标准 LanguageModelV3 事件编码成一个 SSE event。 */
|
|
97
|
+
function serialize_stream_part(part) {
|
|
98
|
+
const event = {
|
|
99
|
+
protocol: CITY_LANGUAGE_MODEL_PROTOCOL_V1,
|
|
100
|
+
part: encode_city_transport_object(part),
|
|
101
|
+
};
|
|
102
|
+
return `data: ${JSON.stringify(event)}\n\n`;
|
|
103
|
+
}
|
|
104
|
+
/** 判断流事件是否为包含可信 usage 的 finish。 */
|
|
105
|
+
function is_finish_part(part) {
|
|
106
|
+
return part.type === "finish";
|
|
107
|
+
}
|
|
108
|
+
/** 判断输入是否为 transport JSON 对象。 */
|
|
109
|
+
function is_json_object(value) {
|
|
110
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
111
|
+
}
|
|
112
|
+
/** 读取必填非空字符串。 */
|
|
113
|
+
function read_required_string(value, field) {
|
|
114
|
+
const output = read_optional_string(value);
|
|
115
|
+
if (!output)
|
|
116
|
+
throw create_protocol_error(`${field} is required`);
|
|
117
|
+
return output;
|
|
118
|
+
}
|
|
119
|
+
/** 读取可选非空字符串。 */
|
|
120
|
+
function read_optional_string(value) {
|
|
121
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
122
|
+
}
|
|
123
|
+
/** 创建会被 Federation 映射为 422 的协议错误。 */
|
|
124
|
+
function create_protocol_error(message) {
|
|
125
|
+
const error = new Error(message);
|
|
126
|
+
error.statusCode = 422;
|
|
127
|
+
return error;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=language-model-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-model-stream.js","sourceRoot":"","sources":["../../../src/service/ai/language-model-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,10 +50,44 @@ function matches_fallback_rule(rule, media) {
|
|
|
50
50
|
}
|
|
51
51
|
/** 从 SDK 或 OpenAI-compatible 请求中提取媒体输入。 */
|
|
52
52
|
function extract_media_inputs(input, mode) {
|
|
53
|
+
if (mode === "language_model")
|
|
54
|
+
return extract_language_model_media_inputs(input.call);
|
|
53
55
|
return mode === "openai"
|
|
54
56
|
? extract_openai_media_inputs(input.messages)
|
|
55
57
|
: extract_ui_media_inputs(input.messages);
|
|
56
58
|
}
|
|
59
|
+
/** 扫描 City LanguageModelV3 prompt 中的文件输入。 */
|
|
60
|
+
function extract_language_model_media_inputs(call) {
|
|
61
|
+
if (!isRecord(call) || !Array.isArray(call.prompt))
|
|
62
|
+
return [];
|
|
63
|
+
const media_inputs = [];
|
|
64
|
+
for (const message of call.prompt) {
|
|
65
|
+
if (!isRecord(message) || !Array.isArray(message.content))
|
|
66
|
+
continue;
|
|
67
|
+
for (const part of message.content) {
|
|
68
|
+
if (!isRecord(part) || part.type !== "file")
|
|
69
|
+
continue;
|
|
70
|
+
const media_type = read_part_media_type(part);
|
|
71
|
+
if (!media_type)
|
|
72
|
+
continue;
|
|
73
|
+
media_inputs.push(build_fallback_media(media_type, {
|
|
74
|
+
filename: read_optional_string(part.filename),
|
|
75
|
+
url: read_language_model_file_url(part.data),
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return media_inputs;
|
|
80
|
+
}
|
|
81
|
+
/** 从 transport 编码前后的 file data 中读取可选 URL。 */
|
|
82
|
+
function read_language_model_file_url(value) {
|
|
83
|
+
if (typeof value === "string" && /^https?:\/\//iu.test(value))
|
|
84
|
+
return value;
|
|
85
|
+
if (!isRecord(value))
|
|
86
|
+
return undefined;
|
|
87
|
+
if (value.__downcity_transport_type !== "url")
|
|
88
|
+
return undefined;
|
|
89
|
+
return read_optional_string(value.value);
|
|
90
|
+
}
|
|
57
91
|
/** 扫描 OpenAI-compatible messages 的媒体输入。 */
|
|
58
92
|
function extract_openai_media_inputs(messages) {
|
|
59
93
|
if (!Array.isArray(messages))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../../../src/service/ai/model-routing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../../../src/service/ai/model-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* AI Provider 模块。
|
|
3
3
|
*
|
|
4
4
|
* Provider 是第三方 AI 提供商的基类。
|
|
5
|
-
* - 默认提供 OpenAI-compatible 的 text
|
|
5
|
+
* - 默认提供 OpenAI-compatible 的 text 实现。
|
|
6
6
|
* - 子类通过覆盖 createClient 来绑定不同的 AI SDK provider。
|
|
7
7
|
* - 需要其它模态(image / video / tts / asr)或自定义 openai 透传时,覆盖对应方法。
|
|
8
8
|
*/
|
|
9
|
-
import type {
|
|
9
|
+
import type { UIMessage } from "ai";
|
|
10
10
|
import type { CityModelReasoning } from "@downcity/type";
|
|
11
11
|
import type { Context } from "../service.js";
|
|
12
12
|
import type { AIProviderBillFn, AIProviderChargedOutput, AIProviderChargedResponse, AIProviderChargeLine } from "./charge.js";
|
|
13
13
|
import type { AIImageProviderCreateResult, AIImageProviderFetchResult, AIImageProviderResult } from "./job-types.js";
|
|
14
|
-
import type { ModelConfig, ModelFallbackRule, OpenAICompatibleClient, OpenAICompatibleClientConfig, ProviderOptions } from "./types.js";
|
|
14
|
+
import type { ModelConfig, CityLanguageModelV3, ModelFallbackRule, OpenAICompatibleClient, OpenAICompatibleClientConfig, ProviderOptions } from "./types.js";
|
|
15
15
|
import type { AIProviderOptions } from "../../types/AIReasoning.js";
|
|
16
16
|
interface OpenAIActionInput {
|
|
17
17
|
/** 多轮 UIMessage。 */
|
|
@@ -25,7 +25,7 @@ interface OpenAIActionInput {
|
|
|
25
25
|
* AI Provider 基类。
|
|
26
26
|
*
|
|
27
27
|
* 子类通过覆盖方法声明 action,model() 会自动收集并生成 ModelConfig。
|
|
28
|
-
|
|
28
|
+
* 默认 text 使用 OpenAI-compatible 协议,模型流统一由 create_language_model 提供。
|
|
29
29
|
*/
|
|
30
30
|
export declare abstract class Provider {
|
|
31
31
|
/** Provider 唯一 ID。 */
|
|
@@ -42,7 +42,7 @@ export declare abstract class Provider {
|
|
|
42
42
|
/**
|
|
43
43
|
* 创建 OpenAI-compatible chat client。
|
|
44
44
|
*
|
|
45
|
-
* 子类需要支持 text
|
|
45
|
+
* 子类需要支持 text 或 CityModel stream 时必须覆盖。
|
|
46
46
|
* 默认抛出错误。
|
|
47
47
|
*/
|
|
48
48
|
protected createClient(config: OpenAICompatibleClientConfig): OpenAICompatibleClient;
|
|
@@ -59,9 +59,12 @@ export declare abstract class Provider {
|
|
|
59
59
|
*/
|
|
60
60
|
protected bill(ctx: Context, output: unknown): AIProviderChargeLine | undefined;
|
|
61
61
|
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
* 创建当前请求实际使用的 LanguageModelV3。
|
|
63
|
+
*
|
|
64
|
+
* 子类可以覆盖该方法,让不同模型选择 Responses、Claude Messages 或 Gemini
|
|
65
|
+
* 原生实现。现有 text 与 CityModel `/v1/ai/stream` 都复用这里的结果。
|
|
66
|
+
*/
|
|
67
|
+
protected create_language_model(ctx: Context): CityLanguageModelV3;
|
|
65
68
|
/**
|
|
66
69
|
* 将输入解析成 prompt 或 messages。
|
|
67
70
|
*/
|
|
@@ -72,15 +75,11 @@ export declare abstract class Provider {
|
|
|
72
75
|
* 默认实现适用于 OpenAI-compatible Provider。Anthropic、Gemini 等字段结构不同的
|
|
73
76
|
* Provider 应覆盖该方法,但不能重新读取或校验原始 reasoning_effort。
|
|
74
77
|
*/
|
|
75
|
-
protected build_reasoning_provider_options(ctx: Context, model:
|
|
78
|
+
protected build_reasoning_provider_options(ctx: Context, model: CityLanguageModelV3): AIProviderOptions | undefined;
|
|
76
79
|
/**
|
|
77
80
|
* 文本生成 action(OpenAI-compatible 默认实现)。
|
|
78
81
|
*/
|
|
79
82
|
text(ctx: Context): Promise<AIProviderChargedOutput<UIMessage>>;
|
|
80
|
-
/**
|
|
81
|
-
* 流式生成 action(OpenAI-compatible 默认实现)。
|
|
82
|
-
*/
|
|
83
|
-
stream(ctx: Context): Promise<AIProviderChargedResponse>;
|
|
84
83
|
/**
|
|
85
84
|
* 图片任务创建 action。
|
|
86
85
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/service/ai/provider.ts"],"names":[],"mappings":"AAAC;;;;;;;GAOG;AAGJ,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/service/ai/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* AI Provider 模块。
|
|
3
3
|
*
|
|
4
4
|
* Provider 是第三方 AI 提供商的基类。
|
|
5
|
-
* - 默认提供 OpenAI-compatible 的 text
|
|
5
|
+
* - 默认提供 OpenAI-compatible 的 text 实现。
|
|
6
6
|
* - 子类通过覆盖 createClient 来绑定不同的 AI SDK provider。
|
|
7
7
|
* - 需要其它模态(image / video / tts / asr)或自定义 openai 透传时,覆盖对应方法。
|
|
8
8
|
*/
|
|
9
|
-
import { convertToModelMessages, generateText
|
|
9
|
+
import { convertToModelMessages, generateText } from "ai";
|
|
10
10
|
import { buildAssistantMessage, buildToolSet, readRequiredEnv, resolveUpstreamModel, } from "./helpers.js";
|
|
11
11
|
import { read_resolved_reasoning } from "./reasoning.js";
|
|
12
12
|
// ===========================================================================
|
|
@@ -16,7 +16,7 @@ import { read_resolved_reasoning } from "./reasoning.js";
|
|
|
16
16
|
* AI Provider 基类。
|
|
17
17
|
*
|
|
18
18
|
* 子类通过覆盖方法声明 action,model() 会自动收集并生成 ModelConfig。
|
|
19
|
-
|
|
19
|
+
* 默认 text 使用 OpenAI-compatible 协议,模型流统一由 create_language_model 提供。
|
|
20
20
|
*/
|
|
21
21
|
export class Provider {
|
|
22
22
|
/** Provider 唯一 ID。 */
|
|
@@ -39,11 +39,11 @@ export class Provider {
|
|
|
39
39
|
/**
|
|
40
40
|
* 创建 OpenAI-compatible chat client。
|
|
41
41
|
*
|
|
42
|
-
* 子类需要支持 text
|
|
42
|
+
* 子类需要支持 text 或 CityModel stream 时必须覆盖。
|
|
43
43
|
* 默认抛出错误。
|
|
44
44
|
*/
|
|
45
45
|
createClient(config) {
|
|
46
|
-
throw new Error(`Provider ${this.id} does not support
|
|
46
|
+
throw new Error(`Provider ${this.id} does not support language models`);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* 从输入中提取 prompt 文本。
|
|
@@ -67,9 +67,12 @@ export class Provider {
|
|
|
67
67
|
return undefined;
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
* 创建当前请求实际使用的 LanguageModelV3。
|
|
71
|
+
*
|
|
72
|
+
* 子类可以覆盖该方法,让不同模型选择 Responses、Claude Messages 或 Gemini
|
|
73
|
+
* 原生实现。现有 text 与 CityModel `/v1/ai/stream` 都复用这里的结果。
|
|
74
|
+
*/
|
|
75
|
+
create_language_model(ctx) {
|
|
73
76
|
if (!this.envKey) {
|
|
74
77
|
throw new Error(`Provider ${this.id} is missing envKey`);
|
|
75
78
|
}
|
|
@@ -124,7 +127,7 @@ export class Provider {
|
|
|
124
127
|
async text(ctx) {
|
|
125
128
|
const input = ctx.input;
|
|
126
129
|
const resolved_input = await this.resolveActionInput(input);
|
|
127
|
-
const model = this.
|
|
130
|
+
const model = this.create_language_model(ctx);
|
|
128
131
|
const provider_options = this.build_reasoning_provider_options(ctx, model);
|
|
129
132
|
if ("messages" in resolved_input) {
|
|
130
133
|
const result = await generateText({
|
|
@@ -149,34 +152,6 @@ export class Provider {
|
|
|
149
152
|
usage: result.usage,
|
|
150
153
|
});
|
|
151
154
|
}
|
|
152
|
-
/**
|
|
153
|
-
* 流式生成 action(OpenAI-compatible 默认实现)。
|
|
154
|
-
*/
|
|
155
|
-
async stream(ctx) {
|
|
156
|
-
const input = ctx.input;
|
|
157
|
-
const resolved_input = await this.resolveActionInput(input);
|
|
158
|
-
const model = this.createChatModel(ctx);
|
|
159
|
-
const provider_options = this.build_reasoning_provider_options(ctx, model);
|
|
160
|
-
if ("messages" in resolved_input) {
|
|
161
|
-
const result = streamText({
|
|
162
|
-
model,
|
|
163
|
-
messages: resolved_input.messages,
|
|
164
|
-
...("tools" in resolved_input ? { tools: resolved_input.tools } : {}),
|
|
165
|
-
...(provider_options ? { providerOptions: provider_options } : {}),
|
|
166
|
-
});
|
|
167
|
-
return {
|
|
168
|
-
response: result.toUIMessageStreamResponse(),
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
const result = streamText({
|
|
172
|
-
model,
|
|
173
|
-
prompt: resolved_input.prompt,
|
|
174
|
-
...(provider_options ? { providerOptions: provider_options } : {}),
|
|
175
|
-
});
|
|
176
|
-
return {
|
|
177
|
-
response: result.toUIMessageStreamResponse(),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
155
|
/**
|
|
181
156
|
* 生成模型配置。
|
|
182
157
|
*
|
|
@@ -184,9 +159,10 @@ export class Provider {
|
|
|
184
159
|
*/
|
|
185
160
|
model(spec) {
|
|
186
161
|
const actions = {};
|
|
162
|
+
const has_language_model = this.create_language_model !== Provider.prototype.create_language_model ||
|
|
163
|
+
this.createClient !== Provider.prototype.createClient;
|
|
187
164
|
const all_modalities = [
|
|
188
165
|
"text",
|
|
189
|
-
"stream",
|
|
190
166
|
"image_create",
|
|
191
167
|
"image_fetch",
|
|
192
168
|
"image_result",
|
|
@@ -199,8 +175,8 @@ export class Provider {
|
|
|
199
175
|
const fn = this[modality];
|
|
200
176
|
if (typeof fn !== "function")
|
|
201
177
|
continue;
|
|
202
|
-
// text
|
|
203
|
-
if (modality === "text"
|
|
178
|
+
// text 默认由基类实现,只有子类显式覆盖或提供了 createClient 才暴露。
|
|
179
|
+
if (modality === "text") {
|
|
204
180
|
const is_overridden = fn !== Provider.prototype[modality];
|
|
205
181
|
const has_create_client = this.createClient !== Provider.prototype.createClient;
|
|
206
182
|
if (!is_overridden && !has_create_client)
|
|
@@ -223,6 +199,12 @@ export class Provider {
|
|
|
223
199
|
passthroughModel: this.passthroughModel,
|
|
224
200
|
fallback: spec.fallback,
|
|
225
201
|
actions,
|
|
202
|
+
...(has_language_model ? {
|
|
203
|
+
language_model: {
|
|
204
|
+
create_language_model: (ctx) => this.create_language_model(ctx),
|
|
205
|
+
build_provider_options: (ctx, model) => this.build_reasoning_provider_options(ctx, model),
|
|
206
|
+
},
|
|
207
|
+
} : {}),
|
|
226
208
|
bill: spec.bill ?? this.bill.bind(this),
|
|
227
209
|
};
|
|
228
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/service/ai/provider.ts"],"names":[],"mappings":"AAAC;;;;;;;GAOG;AAEJ,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/service/ai/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,13 +38,25 @@ export interface OpenAICompatibleClientConfig {
|
|
|
38
38
|
*/
|
|
39
39
|
export interface OpenAICompatibleClient {
|
|
40
40
|
/** 根据模型 ID 创建可传给 AI SDK 的 chat model。 */
|
|
41
|
-
chat(modelId: string):
|
|
41
|
+
chat(modelId: string): CityLanguageModelV3;
|
|
42
|
+
}
|
|
43
|
+
/** 当前 City runtime 支持的 AI SDK LanguageModelV3。 */
|
|
44
|
+
export type CityLanguageModelV3 = Extract<LanguageModel, {
|
|
45
|
+
readonly specificationVersion: "v3";
|
|
46
|
+
}>;
|
|
47
|
+
/** Provider 为原生 City endpoint 暴露的模型运行时。 */
|
|
48
|
+
export interface ModelLanguageRuntime {
|
|
49
|
+
/** 根据最终路由 Context 创建实际 Provider LanguageModelV3。 */
|
|
50
|
+
create_language_model(ctx: import("../service.js").Context): CityLanguageModelV3;
|
|
51
|
+
/** 将 Federation 已校验的配置转换成当前 Provider options。 */
|
|
52
|
+
build_provider_options?(ctx: import("../service.js").Context, model: CityLanguageModelV3): import("../../types/AIReasoning.js").AIProviderOptions | undefined;
|
|
42
53
|
}
|
|
43
54
|
/**
|
|
44
55
|
* 模型 action 映射,key 为通路名称。
|
|
45
56
|
*
|
|
46
57
|
* 两条独立通路:
|
|
47
|
-
* - SDK 通路:text /
|
|
58
|
+
* - SDK action 通路:text / video / tts / asr — 给 User City 用
|
|
59
|
+
* - 模型流通路:由 ModelLanguageRuntime 直接提供,不进入 actions
|
|
48
60
|
* - 图片任务通路:image_create / image_fetch / image_result — 给图片任务创建、后台抓取和用户查询调用
|
|
49
61
|
* - OpenAI 兼容通路:openai — 给 /chat/completions 端点用
|
|
50
62
|
*
|
|
@@ -54,8 +66,6 @@ export interface OpenAICompatibleClient {
|
|
|
54
66
|
export interface ModelActions {
|
|
55
67
|
/** 文本生成 action */
|
|
56
68
|
text?: ActionFn;
|
|
57
|
-
/** 流式生成 action */
|
|
58
|
-
stream?: ActionFn;
|
|
59
69
|
/** 图片任务创建 action,负责启动 provider 图片生成任务。 */
|
|
60
70
|
image_create?: ActionFn;
|
|
61
71
|
/** 图片任务抓取 action,负责查询上游状态并返回 provider 图片生成结果。 */
|
|
@@ -129,6 +139,8 @@ export interface ModelConfig {
|
|
|
129
139
|
fallback?: ModelFallbackRule[];
|
|
130
140
|
/** 各通路 action 绑定 */
|
|
131
141
|
actions: ModelActions;
|
|
142
|
+
/** CityModel `/v1/ai/stream` 使用的 Provider runtime。 */
|
|
143
|
+
language_model?: ModelLanguageRuntime;
|
|
132
144
|
/** 本模型的出账方法,只生成扣费草稿,不直接扣余额。 */
|
|
133
145
|
bill?: AIProviderBillFn;
|
|
134
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/service/ai/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAMxC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/service/ai/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federation City LanguageModel 流运行时类型模块。
|
|
3
|
+
*
|
|
4
|
+
* 类型仅描述 AIService 与 transport 流编码器之间的内部边界,避免服务层直接
|
|
5
|
+
* 操作未约束的 unknown 数据。
|
|
6
|
+
*/
|
|
7
|
+
import type { LanguageModel } from "ai";
|
|
8
|
+
import type { AIProviderOptions } from "./AIReasoning.js";
|
|
9
|
+
import type { CityLanguageModelStreamRequestV1 } from "./CityLanguageModelTransport.js";
|
|
10
|
+
/** AI SDK LanguageModelV3。 */
|
|
11
|
+
export type CityRuntimeLanguageModelV3 = Extract<LanguageModel, {
|
|
12
|
+
readonly specificationVersion: "v3";
|
|
13
|
+
}>;
|
|
14
|
+
/** LanguageModelV3 的标准调用参数。 */
|
|
15
|
+
export type CityRuntimeCallOptions = Parameters<CityRuntimeLanguageModelV3["doStream"]>[0];
|
|
16
|
+
/** LanguageModelV3 的标准流结果。 */
|
|
17
|
+
export type CityRuntimeStreamResult = Awaited<ReturnType<CityRuntimeLanguageModelV3["doStream"]>>;
|
|
18
|
+
/** LanguageModelV3 的标准流事件。 */
|
|
19
|
+
export type CityRuntimeStreamPart = CityRuntimeStreamResult["stream"] extends ReadableStream<infer T> ? T : never;
|
|
20
|
+
/** 已校验并解码的 transport 请求。 */
|
|
21
|
+
export interface DecodedCityLanguageModelRequest {
|
|
22
|
+
/** Federation 模型目录中的模型 ID。 */
|
|
23
|
+
model_id: string;
|
|
24
|
+
/** 解码后的标准 LanguageModelV3 调用参数。 */
|
|
25
|
+
call: CityRuntimeCallOptions;
|
|
26
|
+
/** 用户显式选择的推理强度。 */
|
|
27
|
+
reasoning_effort?: string;
|
|
28
|
+
}
|
|
29
|
+
/** 创建 Federation SSE 响应所需的输入。 */
|
|
30
|
+
export interface CreateCityLanguageModelStreamInput {
|
|
31
|
+
/** 已路由到最终 Provider 的 LanguageModelV3。 */
|
|
32
|
+
model: CityRuntimeLanguageModelV3;
|
|
33
|
+
/** 已解码的调用参数。 */
|
|
34
|
+
call: CityRuntimeCallOptions;
|
|
35
|
+
/** Federation 生成并允许传给 Provider 的选项。 */
|
|
36
|
+
provider_options?: AIProviderOptions;
|
|
37
|
+
/** 原始 HTTP 请求的取消信号。 */
|
|
38
|
+
signal?: AbortSignal;
|
|
39
|
+
}
|
|
40
|
+
/** Federation SSE 响应及其最终完成事件。 */
|
|
41
|
+
export interface CityLanguageModelStreamExecution {
|
|
42
|
+
/** 返回给 CityModel 客户端的 SSE Response。 */
|
|
43
|
+
response: Response;
|
|
44
|
+
/** 流结束后解析出的 finish 事件;异常或取消时为空。 */
|
|
45
|
+
completion: Promise<CityRuntimeStreamPart | undefined>;
|
|
46
|
+
}
|
|
47
|
+
/** 供运行时校验的原始 transport 请求输入。 */
|
|
48
|
+
export type RawCityLanguageModelRequest = CityLanguageModelStreamRequestV1 | Record<string, unknown>;
|
|
49
|
+
//# sourceMappingURL=CityLanguageModelRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CityLanguageModelRuntime.d.ts","sourceRoot":"","sources":["../../src/types/CityLanguageModelRuntime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAExF,8BAA8B;AAC9B,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC9C,aAAa,EACb;IAAE,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAA;CAAE,CACxC,CAAC;AAEF,+BAA+B;AAC/B,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F,8BAA8B;AAC9B,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAElG,8BAA8B;AAC9B,MAAM,MAAM,qBAAqB,GAC/B,uBAAuB,CAAC,QAAQ,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEhF,4BAA4B;AAC5B,MAAM,WAAW,+BAA+B;IAC9C,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,mBAAmB;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,iCAAiC;AACjC,MAAM,WAAW,kCAAkC;IACjD,yCAAyC;IACzC,KAAK,EAAE,0BAA0B,CAAC;IAClC,gBAAgB;IAChB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,uBAAuB;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,iCAAiC;AACjC,MAAM,WAAW,gCAAgC;IAC/C,uCAAuC;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;CACxD;AAED,gCAAgC;AAChC,MAAM,MAAM,2BAA2B,GAAG,gCAAgC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CityLanguageModelRuntime.js","sourceRoot":"","sources":["../../src/types/CityLanguageModelRuntime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|