@zimtsui/brainswitch 0.0.1 → 0.0.2
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 +98 -83
- package/build/adaptor.d.ts +1 -1
- package/build/adaptor.js +8 -8
- package/build/adaptor.js.map +1 -1
- package/build/agentloop.d.ts +1 -1
- package/build/agentloop.js +21 -21
- package/build/agentloop.js.map +1 -1
- package/build/api-types/base.d.ts +0 -2
- package/build/api-types/base.js +0 -2
- package/build/api-types/base.js.map +1 -1
- package/build/api-types/google-base.d.ts +15 -3
- package/build/api-types/google-base.js +33 -13
- package/build/api-types/google-base.js.map +1 -1
- package/build/api-types/google-rest.d.ts +13 -9
- package/build/api-types/google-rest.js +102 -89
- package/build/api-types/google-rest.js.map +1 -1
- package/build/api-types/huggingface-cerebras-qwen3-thinking.d.ts +9 -7
- package/build/api-types/huggingface-cerebras-qwen3-thinking.js +46 -41
- package/build/api-types/huggingface-cerebras-qwen3-thinking.js.map +1 -1
- package/build/api-types/openai-chatcompletions-base.d.ts +2 -6
- package/build/api-types/openai-chatcompletions-base.js +5 -12
- package/build/api-types/openai-chatcompletions-base.js.map +1 -1
- package/build/api-types/openai-chatcompletions-monolith-base.d.ts +1 -1
- package/build/api-types/openai-chatcompletions-monolith-base.js +12 -16
- package/build/api-types/openai-chatcompletions-monolith-base.js.map +1 -1
- package/build/api-types/openai-chatcompletions-stream-base.d.ts +1 -1
- package/build/api-types/openai-chatcompletions-stream-base.js +13 -16
- package/build/api-types/openai-chatcompletions-stream-base.js.map +1 -1
- package/build/api-types/openai-chatcompletions.d.ts +4 -2
- package/build/api-types/openai-chatcompletions.js +9 -4
- package/build/api-types/openai-chatcompletions.js.map +1 -1
- package/build/api-types/openai-responses.d.ts +35 -21
- package/build/api-types/openai-responses.js +211 -188
- package/build/api-types/openai-responses.js.map +1 -1
- package/build/api-types/openrouter-monolith.d.ts +8 -8
- package/build/api-types/openrouter-monolith.js +39 -44
- package/build/api-types/openrouter-monolith.js.map +1 -1
- package/build/api-types/openrouter-stream.d.ts +10 -10
- package/build/api-types/openrouter-stream.js +49 -54
- package/build/api-types/openrouter-stream.js.map +1 -1
- package/build/api-types/qwen.d.ts +5 -3
- package/build/api-types/qwen.js +11 -6
- package/build/api-types/qwen.js.map +1 -1
- package/build/config.js.map +1 -1
- package/build/endpoint-spec.js.map +1 -1
- package/build/engine.d.ts +1 -1
- package/build/engine.js +2 -2
- package/build/engine.js.map +1 -1
- package/build/function.d.ts +14 -2
- package/build/function.js +12 -0
- package/build/function.js.map +1 -1
- package/build/session.d.ts +105 -38
- package/build/session.js +212 -60
- package/build/session.js.map +1 -1
- package/build/throttle.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/build/test.d.ts +0 -1
- package/build/test.js +0 -23
- package/build/test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- 本文档由 GPT-5
|
|
1
|
+
<!-- 本文档由 GPT-5 辅助生成 -->
|
|
2
2
|
|
|
3
3
|
# Brainswitch
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ Brainswitch 是一个为 AI 工作流设计的 LLM 推理 API 适配器,支持
|
|
|
8
8
|
|
|
9
9
|
## Motivation
|
|
10
10
|
|
|
11
|
-
大多数 LLM 推理服务商不支持[严格函数调用](https://platform.openai.com/docs/guides/function-calling#strict-mode),在 AI 批处理工作流中难以达到生产级的可靠性。如果仅使用 OpenAI
|
|
11
|
+
大多数 LLM 推理服务商不支持[严格函数调用](https://platform.openai.com/docs/guides/function-calling#strict-mode),在 AI 批处理工作流中难以达到生产级的可靠性。如果仅使用 OpenAI 等支持严格函数调用的服务商,那么可选的模型型号会大幅受限。
|
|
12
12
|
|
|
13
13
|
Brainswitch 支持在一次会话中途切换模型并保持对话上下文,包括 OpenAI、Google 的深度思考模型的加密思考内容。有了 Brainswitch 就可以在会话的大量推理阶段使用最合适的模型生成自然语言结果,在最后的总结阶段切换成支持严格函数调用的模型进行结构化提交。
|
|
14
14
|
|
|
@@ -17,7 +17,7 @@ Brainswitch 支持在一次会话中途切换模型并保持对话上下文,
|
|
|
17
17
|
- OpenAI Chat Completions
|
|
18
18
|
- OpenAI Responses
|
|
19
19
|
- Google
|
|
20
|
-
-
|
|
20
|
+
- 百炼/火山引擎 OpenAI 兼容
|
|
21
21
|
- OpenRouter
|
|
22
22
|
- HuggingFace Cerebras Qwen3 Thinking
|
|
23
23
|
|
|
@@ -43,23 +43,23 @@ npm i @zimtsui/brainswitch
|
|
|
43
43
|
|
|
44
44
|
```ts
|
|
45
45
|
export type Config = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
46
|
+
brainswitch: {
|
|
47
|
+
endpoints: Record<string, {
|
|
48
|
+
baseUrl: string;
|
|
49
|
+
apiKey: string;
|
|
50
|
+
model: string;
|
|
51
|
+
name: string;
|
|
52
|
+
apiType: 'openai-chatcompletions' | 'openai-responses' | 'google' | 'qwen' | 'openrouter-monolith' | 'openrouter-stream' | 'huggingface-cerebras-qwen3-thinking';
|
|
53
|
+
proxy?: string;
|
|
54
|
+
inputPrice?: number; // 每百万输入 Token 人民币成本
|
|
55
|
+
outputPrice?: number; // 每百万输出 Token 人民币成本
|
|
56
|
+
cachedPrice?: number; // 每百万缓存命中 Token 人民币成本
|
|
57
|
+
customOptions?: Record<string, unknown>; // 直通服务商的自定义参数
|
|
58
|
+
rpm?: number; // 每分钟请求次数上限
|
|
59
|
+
tpm?: number; // 每分钟 Token 上限
|
|
60
|
+
timeout?: number; // 单次请求超时(毫秒)
|
|
61
|
+
}>;
|
|
62
|
+
};
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
@@ -72,7 +72,7 @@ export type Config = {
|
|
|
72
72
|
下面演示:定义一个工具函数,先用 Google 做推理与工具调用,再在同一会话中切换到 OpenAI Responses 做最终的结构化总结。
|
|
73
73
|
|
|
74
74
|
```ts
|
|
75
|
-
import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext } from '@zimtsui/brainswitch';
|
|
75
|
+
import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext, type Config, Session } from '@zimtsui/brainswitch';
|
|
76
76
|
import { Type } from '@sinclair/typebox';
|
|
77
77
|
import { RWLock } from '@zimtsui/coroutine-locks';
|
|
78
78
|
import { Channel } from '@zimtsui/typelog';
|
|
@@ -80,85 +80,100 @@ import * as Presets from '@zimtsui/typelog/presets';
|
|
|
80
80
|
|
|
81
81
|
// 配置
|
|
82
82
|
const config: Config = {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
83
|
+
brainswitch: {
|
|
84
|
+
endpoints: {
|
|
85
|
+
'gpt-4o-mini': {
|
|
86
|
+
name: 'GPT-4o mini',
|
|
87
|
+
apiType: 'openai-chatcompletions',
|
|
88
|
+
baseUrl: 'https://api.openai.com/v1',
|
|
89
|
+
apiKey: process.env.OPENAI_API_KEY!,
|
|
90
|
+
model: 'gpt-4o-mini',
|
|
91
|
+
inputPrice: 5, outputPrice: 15, cachedPrice: 1,
|
|
92
|
+
rpm: 3000, tpm: 1_000_000, timeout: 60_000,
|
|
93
|
+
},
|
|
94
|
+
'o4-mini': {
|
|
95
|
+
name: 'o4 mini',
|
|
96
|
+
apiType: 'openai-responses',
|
|
97
|
+
baseUrl: 'https://api.openai.com/v1',
|
|
98
|
+
apiKey: process.env.OPENAI_API_KEY!,
|
|
99
|
+
model: 'o4-mini',
|
|
100
|
+
},
|
|
101
|
+
'gemini-2.5-flash': {
|
|
102
|
+
name: 'Gemini 2.5 Flash',
|
|
103
|
+
apiType: 'google',
|
|
104
|
+
baseUrl: 'https://generativelanguage.googleapis.com',
|
|
105
|
+
apiKey: process.env.GOOGLE_API_KEY!,
|
|
106
|
+
model: 'gemini-2.5-flash',
|
|
107
|
+
},
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
// 声明函数工具
|
|
113
113
|
const fdm = {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
get_weather: {
|
|
115
|
+
description: '获取某城市的天气',
|
|
116
|
+
paraschema: Type.Object({
|
|
117
|
+
city: Type.String(),
|
|
118
|
+
unit: Type.Optional(Type.Union([Type.Literal('C'), Type.Literal('F')]))
|
|
119
|
+
}),
|
|
120
|
+
},
|
|
121
|
+
submit_result: {
|
|
122
|
+
description: '提交最终结果',
|
|
123
|
+
paraschema: Type.Object({
|
|
124
|
+
weather: Type.String(),
|
|
125
|
+
advice: Type.String(),
|
|
126
|
+
}),
|
|
127
|
+
},
|
|
121
128
|
} satisfies Function.Declaration.Map;
|
|
122
129
|
type fdm = typeof fdm;
|
|
130
|
+
type fdu = Function.Declaration.From<fdm>;
|
|
123
131
|
|
|
132
|
+
export class Submission extends Error {
|
|
133
|
+
public constructor(public weather: string, public advice: string) {
|
|
134
|
+
super(undefined);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
124
137
|
const fnm: Function.Map<fdm> = {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
138
|
+
async get_weather({ city, unit }) {
|
|
139
|
+
// 实际项目中此处调用真实 API,这里仅示例
|
|
140
|
+
const data = { city, unit: unit ?? 'C', temperature: 26, sky: 'sunny' };
|
|
141
|
+
return JSON.stringify(data);
|
|
142
|
+
},
|
|
143
|
+
async submit_result({ weather, advice }) {
|
|
144
|
+
throw new Submission(weather, advice);
|
|
145
|
+
},
|
|
130
146
|
};
|
|
131
147
|
|
|
132
148
|
// 初始化工作流上下文
|
|
133
149
|
const ctx: InferenceContext = {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
150
|
+
busy: new RWLock(),
|
|
151
|
+
logger: {
|
|
152
|
+
message: Channel.create(Presets.Level, message => console.log(message)),
|
|
153
|
+
cost(deltaCost) { console.log((-deltaCost).toFixed(2)); },
|
|
154
|
+
},
|
|
139
155
|
};
|
|
140
156
|
|
|
141
157
|
// 创建会话
|
|
142
|
-
const session = {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
158
|
+
const session: Session<fdu> = {
|
|
159
|
+
developerMessage: RoleMessage.Developer.create([
|
|
160
|
+
RoleMessage.Part.Text.create('你的工作是为用户查询天气,并给出穿衣建议。'),
|
|
161
|
+
]),
|
|
162
|
+
chatMessages: [
|
|
163
|
+
RoleMessage.User.create([ RoleMessage.Part.Text.create('请查询现在北京的天气,并给穿衣建议。') ]),
|
|
164
|
+
],
|
|
149
165
|
};
|
|
150
166
|
|
|
151
167
|
// 选择推理引擎
|
|
152
168
|
const adaptor = Adaptor.create(config);
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
// 使用 agentloop
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
for await (const text of agentloop(ctx, session, engineStrict, fnm, 4)) console.log(text);
|
|
169
|
+
const engine = adaptor.makeEngine('gpt-4o-mini', fdm, Function.ToolChoice.REQUIRED);
|
|
170
|
+
|
|
171
|
+
// 使用 agentloop 驱动智能体循环,最多 8 轮对话
|
|
172
|
+
try {
|
|
173
|
+
for await (const text of agentloop(ctx, session, engine, fnm, 8)) console.log(text);
|
|
174
|
+
} catch (e) {
|
|
175
|
+
if (e instanceof Submission) {} else throw e;
|
|
176
|
+
console.log(e.weather);
|
|
177
|
+
console.log(e.advice);
|
|
178
|
+
}
|
|
164
179
|
```
|
package/build/adaptor.d.ts
CHANGED
|
@@ -8,5 +8,5 @@ export declare class Adaptor {
|
|
|
8
8
|
protected constructor(config: Config);
|
|
9
9
|
private throttles;
|
|
10
10
|
getThrottle(endpointId: string): Throttle;
|
|
11
|
-
|
|
11
|
+
makeEngine<fdm extends Function.Declaration.Map = {}>(endpoint: string, functionDeclarationMap: fdm, functionCallMode?: Function.ToolChoice<fdm>): Engine<Function.Declaration.From<fdm>>;
|
|
12
12
|
}
|
package/build/adaptor.js
CHANGED
|
@@ -31,7 +31,7 @@ export class Adaptor {
|
|
|
31
31
|
this.throttles.get(baseUrl).set(model, new Throttle(rpm, tpm));
|
|
32
32
|
return this.throttles.get(baseUrl).get(model);
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
makeEngine(endpoint, functionDeclarationMap, functionCallMode) {
|
|
35
35
|
assert(endpoint in this.config.brainswitch.endpoints);
|
|
36
36
|
const endpointSpec = this.config.brainswitch.endpoints[endpoint];
|
|
37
37
|
const throttle = this.getThrottle(endpoint);
|
|
@@ -42,19 +42,19 @@ export class Adaptor {
|
|
|
42
42
|
throttle,
|
|
43
43
|
};
|
|
44
44
|
if (endpointSpec.apiType === 'openai-responses')
|
|
45
|
-
return OpenAIResponsesAPI.
|
|
45
|
+
return OpenAIResponsesAPI.makeEngine(options);
|
|
46
46
|
else if (endpointSpec.apiType === 'openai-chatcompletions')
|
|
47
|
-
return OpenAIChatCompletionsAPI.
|
|
47
|
+
return OpenAIChatCompletionsAPI.makeEngine(options);
|
|
48
48
|
else if (endpointSpec.apiType === 'google')
|
|
49
|
-
return GoogleRESTfulAPI.
|
|
49
|
+
return GoogleRESTfulAPI.makeEngine(options);
|
|
50
50
|
else if (endpointSpec.apiType === 'qwen')
|
|
51
|
-
return QwenAPI.
|
|
51
|
+
return QwenAPI.makeEngine(options);
|
|
52
52
|
else if (endpointSpec.apiType === 'openrouter-monolith')
|
|
53
|
-
return OpenRouterMonolithAPI.
|
|
53
|
+
return OpenRouterMonolithAPI.makeEngine(options);
|
|
54
54
|
else if (endpointSpec.apiType === 'openrouter-stream')
|
|
55
|
-
return OpenRouterStreamAPI.
|
|
55
|
+
return OpenRouterStreamAPI.makeEngine(options);
|
|
56
56
|
else if (endpointSpec.apiType === 'huggingface-cerebras-qwen3-thinking')
|
|
57
|
-
return HuggingFaceCerebrasQwen3ThinkingAPI.
|
|
57
|
+
return HuggingFaceCerebrasQwen3ThinkingAPI.makeEngine(options);
|
|
58
58
|
else
|
|
59
59
|
throw new Error();
|
|
60
60
|
}
|
package/build/adaptor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mCAAmC,EAAE,MAAM,oDAAoD,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,OAAO,OAAO;
|
|
1
|
+
{"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"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"}
|
package/build/agentloop.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Engine } from './engine.ts';
|
|
|
5
5
|
/**
|
|
6
6
|
* @param session mutable
|
|
7
7
|
*/
|
|
8
|
-
export declare function agentloop<fdm extends Function.Declaration.Map>(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, engine: Engine<Function.Declaration.From<fdm>>, functionMap: Function.Map<fdm>, limit?: number): AsyncGenerator<string,
|
|
8
|
+
export declare function agentloop<fdm extends Function.Declaration.Map>(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, engine: Engine<Function.Declaration.From<fdm>>, functionMap: Function.Map<fdm>, limit?: number): AsyncGenerator<string, string, void>;
|
|
9
9
|
export declare namespace agentloop {
|
|
10
10
|
class FunctionCallLimitExceeded extends Error {
|
|
11
11
|
}
|
package/build/agentloop.js
CHANGED
|
@@ -10,32 +10,32 @@ export async function* agentloop(ctx, session, engine, functionMap, limit = Numb
|
|
|
10
10
|
for (let i = 0; i < limit; i++) {
|
|
11
11
|
const response = await Engine.apply(ctx, session, engine);
|
|
12
12
|
const fcs = response.getFunctionCalls();
|
|
13
|
-
if (fcs.length)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
13
|
+
if (!fcs.length)
|
|
14
|
+
return response.getOnlyText();
|
|
15
|
+
const pfrs = [];
|
|
16
|
+
for (const part of response.parts) {
|
|
17
|
+
if (part instanceof RoleMessage.Part.Text.Constructor) {
|
|
18
|
+
yield part.text;
|
|
19
|
+
}
|
|
20
|
+
else if (part instanceof Function.Call) {
|
|
21
|
+
const fc = part;
|
|
22
|
+
const f = functionMap[fc.name];
|
|
23
|
+
assert(f);
|
|
24
|
+
pfrs.push((async () => {
|
|
25
|
+
const rv = await f(fc.args);
|
|
26
|
+
ctx.logger.message?.debug('\n' + rv);
|
|
27
|
+
return Function.Response.create({
|
|
26
28
|
id: fc.id,
|
|
27
29
|
name: fc.name,
|
|
28
|
-
text,
|
|
30
|
+
text: rv,
|
|
29
31
|
});
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
else
|
|
33
|
-
throw new Error();
|
|
32
|
+
})());
|
|
34
33
|
}
|
|
35
|
-
|
|
34
|
+
else
|
|
35
|
+
throw new Error();
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const frs = await Promise.all(pfrs);
|
|
38
|
+
session.chatMessages.push(RoleMessage.User.create(frs));
|
|
39
39
|
}
|
|
40
40
|
throw new agentloop.FunctionCallLimitExceeded('Function call limit exceeded.');
|
|
41
41
|
}
|
package/build/agentloop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,
|
|
1
|
+
{"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,CAC5B,GAAqB,EACrB,OAAgD,EAChD,MAA8C,EAC9C,WAA8B,EAC9B,KAAK,GAAG,MAAM,CAAC,iBAAiB;IAGhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAmD,EAAE,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,IAAuC,CAAC;gBACnD,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBAClB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC5B,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,GAAC,EAAE,CAAC,CAAC;oBACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAM;wBACjC,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,EAAE;qBAC8B,CAAC,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAM,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,CAAC;AACnF,CAAC;AAED,WAAiB,SAAS;IACtB,MAAa,yBAA0B,SAAQ,KAAK;KAAG;IAA1C,mCAAyB,4BAAiB,CAAA;AAC3D,CAAC,EAFgB,SAAS,KAAT,SAAS,QAEzB"}
|
package/build/api-types/base.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api-types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAgB,OAAO;IAClB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,sBAAsB,CAAM;IAC5B,UAAU,CAA2B;IACrC,aAAa,CAA2B;IACxC,QAAQ,CAAW;IACnB,OAAO,CAAU;IAE3B,YAAmB,OAA4B;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM;YAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;;YACnE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;CACD;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api-types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAgB,OAAO;IAClB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,sBAAsB,CAAM;IAC5B,UAAU,CAA2B;IACrC,aAAa,CAA2B;IACxC,QAAQ,CAAW;IACnB,OAAO,CAAU;IAE3B,YAAmB,OAA4B;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM;YAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;;YACnE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;CACD;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG"}
|
|
@@ -16,7 +16,19 @@ export declare abstract class GoogleAPIBase<in out fdm extends Function.Declarat
|
|
|
16
16
|
protected convertFromFunctionCallMode(mode: Function.ToolChoice<fdm>): Google.FunctionCallingConfig;
|
|
17
17
|
protected validateFunctionCallByToolChoice(aiMessage: RoleMessage.AI<Function.Declaration.From<fdm>>): void;
|
|
18
18
|
}
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
export type GoogleAIMessage<fdu extends Function.Declaration> = GoogleAIMessage.Constructor<fdu>;
|
|
20
|
+
export declare namespace GoogleAIMessage {
|
|
21
|
+
function create<fdu extends Function.Declaration>(parts: RoleMessage.AI.Part<fdu>[], raw: Google.Content): GoogleAIMessage<fdu>;
|
|
22
|
+
const NOMINAL: unique symbol;
|
|
23
|
+
class Constructor<out fdu extends Function.Declaration> extends RoleMessage.AI.Constructor<fdu> {
|
|
24
|
+
raw: Google.Content;
|
|
25
|
+
readonly [NOMINAL]: void;
|
|
26
|
+
constructor(parts: RoleMessage.AI.Part<fdu>[], raw: Google.Content);
|
|
27
|
+
}
|
|
28
|
+
interface Snapshot<in out fdu extends Function.Declaration = never> {
|
|
29
|
+
parts: RoleMessage.AI.Part.Snapshot<fdu>[];
|
|
30
|
+
raw: Google.Content;
|
|
31
|
+
}
|
|
32
|
+
function restore<fdu extends Function.Declaration>(snapshot: GoogleAIMessage.Snapshot<fdu>): GoogleAIMessage<fdu>;
|
|
33
|
+
function capture<fdu extends Function.Declaration>(message: GoogleAIMessage<fdu>): GoogleAIMessage.Snapshot<fdu>;
|
|
22
34
|
}
|
|
@@ -30,7 +30,7 @@ export class GoogleAPIBase extends APIBase {
|
|
|
30
30
|
}
|
|
31
31
|
convertFromUserMessage(userMessage) {
|
|
32
32
|
const parts = userMessage.parts.map(part => {
|
|
33
|
-
if (part instanceof RoleMessage.Text)
|
|
33
|
+
if (part instanceof RoleMessage.Part.Text.Constructor)
|
|
34
34
|
return Google.createPartFromText(part.text);
|
|
35
35
|
else if (part instanceof Function.Response)
|
|
36
36
|
return {
|
|
@@ -42,11 +42,11 @@ export class GoogleAPIBase extends APIBase {
|
|
|
42
42
|
return Google.createUserContent(parts);
|
|
43
43
|
}
|
|
44
44
|
convertFromAIMessage(aiMessage) {
|
|
45
|
-
if (aiMessage instanceof GoogleAIMessage)
|
|
45
|
+
if (aiMessage instanceof GoogleAIMessage.Constructor)
|
|
46
46
|
return aiMessage.raw;
|
|
47
47
|
else {
|
|
48
48
|
const parts = aiMessage.parts.map(part => {
|
|
49
|
-
if (part instanceof RoleMessage.Text)
|
|
49
|
+
if (part instanceof RoleMessage.Part.Text.Constructor)
|
|
50
50
|
return Google.createPartFromText(part.text);
|
|
51
51
|
else if (part instanceof Function.Call) {
|
|
52
52
|
assert(part.args instanceof Object);
|
|
@@ -64,9 +64,9 @@ export class GoogleAPIBase extends APIBase {
|
|
|
64
64
|
}
|
|
65
65
|
convertFromChatMessages(chatMessages) {
|
|
66
66
|
return chatMessages.map(chatMessage => {
|
|
67
|
-
if (chatMessage instanceof RoleMessage.User)
|
|
67
|
+
if (chatMessage instanceof RoleMessage.User.Constructor)
|
|
68
68
|
return this.convertFromUserMessage(chatMessage);
|
|
69
|
-
else if (chatMessage instanceof RoleMessage.AI)
|
|
69
|
+
else if (chatMessage instanceof RoleMessage.AI.Constructor)
|
|
70
70
|
return this.convertFromAIMessage(chatMessage);
|
|
71
71
|
else
|
|
72
72
|
throw new Error();
|
|
@@ -74,10 +74,10 @@ export class GoogleAPIBase extends APIBase {
|
|
|
74
74
|
}
|
|
75
75
|
convertToAIMessage(content) {
|
|
76
76
|
assert(content.parts);
|
|
77
|
-
return
|
|
77
|
+
return GoogleAIMessage.create(content.parts.flatMap(part => {
|
|
78
78
|
const parts = [];
|
|
79
79
|
if (part.text)
|
|
80
|
-
parts.push(
|
|
80
|
+
parts.push(RoleMessage.Part.Text.create(part.text));
|
|
81
81
|
if (part.functionCall)
|
|
82
82
|
parts.push(this.convertToFunctionCall(part.functionCall));
|
|
83
83
|
return parts;
|
|
@@ -132,11 +132,31 @@ export class GoogleAPIBase extends APIBase {
|
|
|
132
132
|
assert(!functionCalls.length, new TransientError('No function should be called.'));
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
export
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.raw = raw;
|
|
135
|
+
export var GoogleAIMessage;
|
|
136
|
+
(function (GoogleAIMessage) {
|
|
137
|
+
function create(parts, raw) {
|
|
138
|
+
return new Constructor(parts, raw);
|
|
140
139
|
}
|
|
141
|
-
|
|
140
|
+
GoogleAIMessage.create = create;
|
|
141
|
+
GoogleAIMessage.NOMINAL = Symbol();
|
|
142
|
+
class Constructor extends RoleMessage.AI.Constructor {
|
|
143
|
+
raw;
|
|
144
|
+
constructor(parts, raw) {
|
|
145
|
+
super(parts);
|
|
146
|
+
this.raw = raw;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
GoogleAIMessage.Constructor = Constructor;
|
|
150
|
+
function restore(snapshot) {
|
|
151
|
+
return new Constructor(RoleMessage.AI.restore(snapshot.parts).parts, snapshot.raw);
|
|
152
|
+
}
|
|
153
|
+
GoogleAIMessage.restore = restore;
|
|
154
|
+
function capture(message) {
|
|
155
|
+
return {
|
|
156
|
+
parts: RoleMessage.AI.capture(message),
|
|
157
|
+
raw: message.raw,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
GoogleAIMessage.capture = capture;
|
|
161
|
+
})(GoogleAIMessage || (GoogleAIMessage = {}));
|
|
142
162
|
//# sourceMappingURL=google-base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-base.js","sourceRoot":"","sources":["../../src/api-types/google-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAoB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAEtB,MAAM,OAAgB,aAAgE,SAAQ,OAAY;IACzG,YAAsB,OAA4B;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;IAChB,CAAC;IAES,uBAAuB,CAAC,EAA8D;QAC/F,OAAO;YACN,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI,EAAE,EAAE,CAAC,IAA+B;SACxC,CAAC;IACH,CAAC;IACS,qBAAqB,CAAC,QAA6B;QAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAoD,CAAC;QAC7G,MAAM,CAAC,MAAM,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,cAAc,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzH,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;SAC6C,CAAC,CAAC;IACpE,CAAC;IAES,sBAAsB,CAAC,WAA6D;QAC7F,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1C,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"google-base.js","sourceRoot":"","sources":["../../src/api-types/google-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Engine } from '../engine.ts';
|
|
2
|
+
import { type Session } from '../session.ts';
|
|
2
3
|
import { Function } from '../function.ts';
|
|
3
4
|
import * as Google from '@google/genai';
|
|
4
|
-
import { GoogleAPIBase } from './google-base.ts';
|
|
5
|
+
import { GoogleAIMessage, GoogleAPIBase } from './google-base.ts';
|
|
6
|
+
import { type InferenceContext } from '../inference-context.ts';
|
|
5
7
|
export interface GoogleRESTfulRequest {
|
|
6
8
|
contents: Google.Content[];
|
|
7
9
|
tools?: Google.Tool[];
|
|
@@ -9,12 +11,14 @@ export interface GoogleRESTfulRequest {
|
|
|
9
11
|
systemInstruction?: Google.Content;
|
|
10
12
|
generationConfig?: Google.GenerationConfig;
|
|
11
13
|
}
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
export declare namespace GoogleRESTfulAPI {
|
|
15
|
+
function makeEngine<fdm extends Function.Declaration.Map = {}>(options: Engine.Options<fdm>): Engine<Function.Declaration.From<fdm>>;
|
|
16
|
+
class Constructor<in out fdm extends Function.Declaration.Map = {}> extends GoogleAPIBase<fdm> {
|
|
17
|
+
private proxyAgent?;
|
|
18
|
+
private apiURL;
|
|
19
|
+
private tokenizerURL;
|
|
20
|
+
constructor(options: Engine.Options<fdm>);
|
|
21
|
+
private tokenize;
|
|
22
|
+
monolith(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, retry?: number): Promise<GoogleAIMessage<Function.Declaration.From<fdm>>>;
|
|
23
|
+
}
|
|
20
24
|
}
|