@zimtsui/brainswitch 0.0.54 → 0.0.56
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/DEVELOPMENT.md +13 -14
- package/README.md +7 -14
- package/build/adaptor.d.ts +5 -5
- package/build/adaptor.js +16 -16
- package/build/adaptor.js.map +1 -1
- package/build/agentloop.d.ts +5 -5
- package/build/agentloop.js +4 -4
- package/build/agentloop.js.map +1 -1
- package/build/api-types/anthropic/billing.d.ts +12 -0
- package/build/api-types/anthropic/billing.js +15 -0
- package/build/api-types/anthropic/billing.js.map +1 -0
- package/build/api-types/anthropic/tool-codec.d.ts +17 -0
- package/build/api-types/anthropic/tool-codec.js +73 -0
- package/build/api-types/anthropic/tool-codec.js.map +1 -0
- package/build/api-types/google/billing.d.ts +12 -0
- package/build/api-types/google/billing.js +24 -0
- package/build/api-types/google/billing.js.map +1 -0
- package/build/api-types/google/restful-request.d.ts +8 -0
- package/build/api-types/google/restful-request.js +2 -0
- package/build/api-types/google/restful-request.js.map +1 -0
- package/build/api-types/google/tool-codec.d.ts +16 -0
- package/build/api-types/{google.js → google/tool-codec.js} +27 -26
- package/build/api-types/google/tool-codec.js.map +1 -0
- package/build/api-types/openai-chatcompletion/billing.d.ts +13 -0
- package/build/api-types/openai-chatcompletion/billing.js +16 -0
- package/build/api-types/openai-chatcompletion/billing.js.map +1 -0
- package/build/api-types/openai-chatcompletion/tool-codec.d.ts +18 -0
- package/build/api-types/openai-chatcompletion/tool-codec.js +86 -0
- package/build/api-types/openai-chatcompletion/tool-codec.js.map +1 -0
- package/build/api-types/openai-responses/billing.d.ts +12 -0
- package/build/api-types/openai-responses/billing.js +15 -0
- package/build/api-types/openai-responses/billing.js.map +1 -0
- package/build/api-types/openai-responses/tool-codec.d.ts +16 -0
- package/build/api-types/openai-responses/tool-codec.js +72 -0
- package/build/api-types/openai-responses/tool-codec.js.map +1 -0
- package/build/compatible/engine.d/aliyun.d.ts +23 -0
- package/build/compatible/engine.d/aliyun.js +44 -0
- package/build/compatible/engine.d/aliyun.js.map +1 -0
- package/build/compatible/engine.d/anthropic.d.ts +23 -0
- package/build/compatible/engine.d/anthropic.js +41 -0
- package/build/compatible/engine.d/anthropic.js.map +1 -0
- package/build/compatible/engine.d/google.d.ts +23 -0
- package/build/compatible/engine.d/google.js +45 -0
- package/build/compatible/engine.d/google.js.map +1 -0
- package/build/compatible/engine.d/openai-responses.d.ts +23 -0
- package/build/compatible/engine.d/openai-responses.js +41 -0
- package/build/compatible/engine.d/openai-responses.js.map +1 -0
- package/build/compatible/engine.d.ts +18 -0
- package/build/compatible/engine.js +21 -0
- package/build/compatible/engine.js.map +1 -0
- package/build/compatible/session.d.ts +78 -0
- package/build/compatible/session.js +138 -0
- package/build/compatible/session.js.map +1 -0
- package/build/compatible/tool-call-validator.d.ts +11 -0
- package/build/compatible/tool-call-validator.js +12 -0
- package/build/compatible/tool-call-validator.js.map +1 -0
- package/build/compatible.d/aliyun/transport.d.ts +11 -0
- package/build/compatible.d/aliyun/transport.js +9 -0
- package/build/compatible.d/aliyun/transport.js.map +1 -0
- package/build/compatible.d/anthropic/message-codec.d.ts +31 -0
- package/build/compatible.d/anthropic/message-codec.js +88 -0
- package/build/compatible.d/anthropic/message-codec.js.map +1 -0
- package/build/compatible.d/anthropic/transport.d.ts +31 -0
- package/build/compatible.d/anthropic/transport.js +137 -0
- package/build/compatible.d/anthropic/transport.js.map +1 -0
- package/build/compatible.d/google/message-codec.d.ts +31 -0
- package/build/compatible.d/google/message-codec.js +98 -0
- package/build/compatible.d/google/message-codec.js.map +1 -0
- package/build/compatible.d/google/transport.d.ts +28 -0
- package/build/compatible.d/google/transport.js +74 -0
- package/build/compatible.d/google/transport.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions/message-codec.d.ts +19 -0
- package/build/compatible.d/openai-chatcompletions/message-codec.js +66 -0
- package/build/compatible.d/openai-chatcompletions/message-codec.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions/transport.d.ts +9 -0
- package/build/compatible.d/openai-chatcompletions/transport.js +25 -0
- package/build/compatible.d/openai-chatcompletions/transport.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions.d/monolith.d.ts +36 -0
- package/build/compatible.d/openai-chatcompletions.d/monolith.js +74 -0
- package/build/compatible.d/openai-chatcompletions.d/monolith.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions.d/stream.d.ts +35 -0
- package/build/{compatible-engines.d → compatible.d}/openai-chatcompletions.d/stream.js +52 -42
- package/build/compatible.d/openai-chatcompletions.d/stream.js.map +1 -0
- package/build/compatible.d/openai-responses/message-codec.d.ts +32 -0
- package/build/compatible.d/openai-responses/message-codec.js +105 -0
- package/build/compatible.d/openai-responses/message-codec.js.map +1 -0
- package/build/compatible.d/openai-responses/transport.d.ts +33 -0
- package/build/compatible.d/openai-responses/transport.js +88 -0
- package/build/compatible.d/openai-responses/transport.js.map +1 -0
- package/build/config.js +1 -1
- package/build/config.js.map +1 -1
- package/build/engine.d.ts +48 -26
- package/build/engine.js +78 -29
- package/build/engine.js.map +1 -1
- package/build/exports.d.ts +14 -13
- package/build/exports.js +14 -13
- package/build/exports.js.map +1 -1
- package/build/function.d.ts +25 -13
- package/build/function.js +2 -1
- package/build/function.js.map +1 -1
- package/build/inference-context.d.ts +1 -1
- package/build/native-engines.d/google/agentloop.d.ts +6 -6
- package/build/native-engines.d/google/agentloop.js +5 -5
- package/build/native-engines.d/google/agentloop.js.map +1 -1
- package/build/native-engines.d/google/engine.d.ts +28 -103
- package/build/native-engines.d/google/engine.js +63 -304
- package/build/native-engines.d/google/engine.js.map +1 -1
- package/build/native-engines.d/google/exports.d.ts +5 -5
- package/build/native-engines.d/google/exports.js +5 -5
- package/build/native-engines.d/google/exports.js.map +1 -1
- package/build/native-engines.d/google/message-codec.d.ts +21 -0
- package/build/native-engines.d/google/message-codec.js +69 -0
- package/build/native-engines.d/google/message-codec.js.map +1 -0
- package/build/native-engines.d/google/session.d.ts +16 -15
- package/build/native-engines.d/google/session.js +2 -2
- package/build/native-engines.d/google/session.js.map +1 -1
- package/build/native-engines.d/google/transport.d.ts +31 -0
- package/build/native-engines.d/google/transport.js +81 -0
- package/build/native-engines.d/google/transport.js.map +1 -0
- package/build/native-engines.d/openai-responses/agentloop.d.ts +7 -7
- package/build/native-engines.d/openai-responses/agentloop.js +6 -6
- package/build/native-engines.d/openai-responses/agentloop.js.map +1 -1
- package/build/native-engines.d/openai-responses/engine.d.ts +26 -106
- package/build/native-engines.d/openai-responses/engine.js +53 -334
- package/build/native-engines.d/openai-responses/engine.js.map +1 -1
- package/build/native-engines.d/openai-responses/exports.d.ts +6 -7
- package/build/native-engines.d/openai-responses/exports.js +6 -7
- package/build/native-engines.d/openai-responses/exports.js.map +1 -1
- package/build/native-engines.d/openai-responses/message-codec.d.ts +21 -0
- package/build/native-engines.d/openai-responses/message-codec.js +69 -0
- package/build/native-engines.d/openai-responses/message-codec.js.map +1 -0
- package/build/native-engines.d/openai-responses/session.d.ts +27 -26
- package/build/native-engines.d/openai-responses/session.js +3 -3
- package/build/native-engines.d/openai-responses/session.js.map +1 -1
- package/build/native-engines.d/openai-responses/tool-call-validator.d.ts +12 -0
- package/build/native-engines.d/openai-responses/tool-call-validator.js +33 -0
- package/build/native-engines.d/openai-responses/tool-call-validator.js.map +1 -0
- package/build/native-engines.d/openai-responses/tool.d.ts +3 -3
- package/build/native-engines.d/openai-responses/tool.js +1 -1
- package/build/native-engines.d/openai-responses/tool.js.map +1 -1
- package/build/native-engines.d/openai-responses/transport.d.ts +36 -0
- package/build/native-engines.d/openai-responses/transport.js +104 -0
- package/build/native-engines.d/openai-responses/transport.js.map +1 -0
- package/build/session.d.ts +5 -75
- package/build/session.js +0 -136
- package/build/session.js.map +1 -1
- package/build/throttle.d.ts +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/test/build/test-codecs.js +230 -0
- package/test/build/test-codecs.js.map +1 -0
- package/test/build/test-compatible-engine.d.ts +1 -0
- package/test/build/test-compatible-engine.js +27 -0
- package/test/build/test-compatible-engine.js.map +1 -0
- package/test/build/test-compatible-engines.d.ts +1 -0
- package/test/build/test-compatible-engines.js +112 -0
- package/test/build/test-compatible-engines.js.map +1 -0
- package/test/build/test-engine.d.ts +1 -0
- package/test/build/test-engine.js +97 -0
- package/test/build/test-engine.js.map +1 -0
- package/test/build/test-helpers.d.ts +46 -0
- package/test/build/test-helpers.js +45 -0
- package/test/build/test-helpers.js.map +1 -0
- package/test/build/test-native-engines.d.ts +1 -0
- package/test/build/test-native-engines.js +64 -0
- package/test/build/test-native-engines.js.map +1 -0
- package/test/build/test.d.ts +5 -0
- package/test/build/test.js +6 -0
- package/test/build/test.js.map +1 -0
- package/test/build/tsconfig.tsbuildinfo +1 -0
- package/test/src/test-codecs.ts +256 -0
- package/test/src/test-compatible-engine.ts +45 -0
- package/test/src/test-compatible-engines.ts +129 -0
- package/test/src/test-engine.ts +144 -0
- package/test/src/test-helpers.ts +53 -0
- package/test/src/test-native-engines.ts +75 -0
- package/test/src/test.ts +5 -0
- package/test/src/tsconfig.json +30 -0
- package/build/api-types/anthropic.d.ts +0 -29
- package/build/api-types/anthropic.js +0 -93
- package/build/api-types/anthropic.js.map +0 -1
- package/build/api-types/google.d.ts +0 -28
- package/build/api-types/google.js.map +0 -1
- package/build/api-types/openai-chat-completions.d.ts +0 -31
- package/build/api-types/openai-chat-completions.js +0 -113
- package/build/api-types/openai-chat-completions.js.map +0 -1
- package/build/api-types/openai-responses.d.ts +0 -23
- package/build/api-types/openai-responses.js +0 -71
- package/build/api-types/openai-responses.js.map +0 -1
- package/build/compatible-engine.d.ts +0 -51
- package/build/compatible-engine.js +0 -67
- package/build/compatible-engine.js.map +0 -1
- package/build/compatible-engines.d/aliyun.d.ts +0 -69
- package/build/compatible-engines.d/aliyun.js +0 -149
- package/build/compatible-engines.d/aliyun.js.map +0 -1
- package/build/compatible-engines.d/anthropic.d.ts +0 -78
- package/build/compatible-engines.d/anthropic.js +0 -312
- package/build/compatible-engines.d/anthropic.js.map +0 -1
- package/build/compatible-engines.d/google.d.ts +0 -83
- package/build/compatible-engines.d/google.js +0 -279
- package/build/compatible-engines.d/google.js.map +0 -1
- package/build/compatible-engines.d/openai-chatcompletions.d/monolith.d.ts +0 -15
- package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js +0 -75
- package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js.map +0 -1
- package/build/compatible-engines.d/openai-chatcompletions.d/stream.d.ts +0 -21
- package/build/compatible-engines.d/openai-chatcompletions.d/stream.js.map +0 -1
- package/build/compatible-engines.d/openai-chatcompletions.d.ts +0 -27
- package/build/compatible-engines.d/openai-chatcompletions.js +0 -76
- package/build/compatible-engines.d/openai-chatcompletions.js.map +0 -1
- package/build/compatible-engines.d/openai-responses.d.ts +0 -93
- package/build/compatible-engines.d/openai-responses.js +0 -300
- package/build/compatible-engines.d/openai-responses.js.map +0 -1
- package/build/test.js +0 -198
- package/build/test.js.map +0 -1
- /package/{build/test.d.ts → test/build/test-codecs.d.ts} +0 -0
|
@@ -1,33 +1,47 @@
|
|
|
1
|
-
import { RoleMessage } from
|
|
2
|
-
import { Function } from
|
|
3
|
-
import
|
|
4
|
-
import {} from
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { RoleMessage } from '#@/compatible/session.ts';
|
|
2
|
+
import { Function } from '#@/function.ts';
|
|
3
|
+
import OpenAI from 'openai';
|
|
4
|
+
import { OpenAIChatCompletionsCompatibleTransport } from '#@/compatible.d/openai-chatcompletions/transport.ts';
|
|
5
|
+
import {} from '#@/inference-context.ts';
|
|
6
|
+
import { ResponseInvalid } from '#@/engine.ts';
|
|
7
|
+
import { logger } from '#@/telemetry.ts';
|
|
8
|
+
import { Throttle } from '#@/throttle.ts';
|
|
9
|
+
import * as Undici from 'undici';
|
|
10
|
+
import {} from '#@/compatible.d/openai-chatcompletions/message-codec.ts';
|
|
11
|
+
export class OpenAIChatCompletionsCompatibleStream extends OpenAIChatCompletionsCompatibleTransport {
|
|
12
|
+
ctx;
|
|
13
|
+
client;
|
|
14
|
+
constructor(ctx) {
|
|
15
|
+
super();
|
|
16
|
+
this.ctx = ctx;
|
|
17
|
+
this.client = new OpenAI({
|
|
18
|
+
baseURL: this.ctx.providerSpec.baseUrl,
|
|
19
|
+
apiKey: this.ctx.providerSpec.apiKey,
|
|
20
|
+
fetchOptions: {
|
|
21
|
+
dispatcher: this.ctx.providerSpec.proxyAgent,
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
makeParams(session) {
|
|
26
|
+
const tools = this.ctx.toolCodec.convertFromFunctionDeclarationMap(this.ctx.fdm);
|
|
12
27
|
return {
|
|
13
|
-
model: this.model,
|
|
28
|
+
model: this.ctx.inferenceParams.model,
|
|
14
29
|
messages: [
|
|
15
|
-
...(session.developerMessage ? this.convertFromRoleMessage(session.developerMessage) : []),
|
|
16
|
-
...
|
|
30
|
+
...(session.developerMessage ? this.ctx.messageCodec.convertFromRoleMessage(session.developerMessage) : []),
|
|
31
|
+
...this.ctx.messageCodec.convertFromChatMessages(session.chatMessages),
|
|
17
32
|
],
|
|
18
33
|
tools: tools.length ? tools : undefined,
|
|
19
|
-
tool_choice: tools.length ? this.convertFromToolChoice(this.toolChoice) : undefined,
|
|
20
|
-
parallel_tool_calls: tools.length ? this.parallelToolCall : undefined,
|
|
34
|
+
tool_choice: tools.length ? this.ctx.toolCodec.convertFromToolChoice(this.ctx.toolChoice) : undefined,
|
|
35
|
+
parallel_tool_calls: tools.length ? this.ctx.parallelToolCall : undefined,
|
|
21
36
|
stream: true,
|
|
22
37
|
stream_options: {
|
|
23
38
|
include_usage: true
|
|
24
39
|
},
|
|
25
|
-
max_completion_tokens: this.maxTokens ?? undefined,
|
|
26
|
-
...this.additionalOptions,
|
|
40
|
+
max_completion_tokens: this.ctx.inferenceParams.maxTokens ?? undefined,
|
|
41
|
+
...this.ctx.inferenceParams.additionalOptions,
|
|
27
42
|
};
|
|
28
43
|
}
|
|
29
|
-
|
|
30
|
-
function convertToFunctionCallFromDelta(apifc) {
|
|
44
|
+
convertToFunctionCallFromDelta(apifc) {
|
|
31
45
|
if (apifc.id) { }
|
|
32
46
|
else
|
|
33
47
|
throw new Error();
|
|
@@ -37,10 +51,9 @@ export var OpenAIChatCompletionsCompatibleStreamEngine;
|
|
|
37
51
|
if (apifc.function?.arguments) { }
|
|
38
52
|
else
|
|
39
53
|
throw new Error();
|
|
40
|
-
return this.convertToFunctionCall(apifc);
|
|
54
|
+
return this.ctx.toolCodec.convertToFunctionCall(apifc);
|
|
41
55
|
}
|
|
42
|
-
|
|
43
|
-
function convertCompletionStockToCompletion(stock) {
|
|
56
|
+
convertCompletionStockToCompletion(stock) {
|
|
44
57
|
const stockChoice = stock?.choices[0];
|
|
45
58
|
if (stockChoice?.finish_reason) { }
|
|
46
59
|
else
|
|
@@ -83,11 +96,10 @@ export var OpenAIChatCompletionsCompatibleStreamEngine;
|
|
|
83
96
|
};
|
|
84
97
|
return completion;
|
|
85
98
|
}
|
|
86
|
-
|
|
87
|
-
async function fetchRaw(wfctx, session, signal) {
|
|
99
|
+
async fetchRaw(wfctx, session, signal) {
|
|
88
100
|
const params = this.makeParams(session);
|
|
89
|
-
logger.message
|
|
90
|
-
await this.throttle.requests(wfctx);
|
|
101
|
+
logger.message.trace(params);
|
|
102
|
+
await this.ctx.throttle.requests(wfctx);
|
|
91
103
|
const stream = await this.client.chat.completions.create(params, { signal });
|
|
92
104
|
let stock = null;
|
|
93
105
|
let thoughts = null, thinking = false;
|
|
@@ -113,9 +125,9 @@ export var OpenAIChatCompletionsCompatibleStreamEngine;
|
|
|
113
125
|
if (deltaThoughts) {
|
|
114
126
|
if (!thinking) {
|
|
115
127
|
thinking = true;
|
|
116
|
-
logger.inference
|
|
128
|
+
logger.inference.trace('<think>\n');
|
|
117
129
|
}
|
|
118
|
-
logger.inference
|
|
130
|
+
logger.inference.trace(deltaThoughts);
|
|
119
131
|
thoughts ??= '';
|
|
120
132
|
thoughts += deltaThoughts;
|
|
121
133
|
}
|
|
@@ -123,9 +135,9 @@ export var OpenAIChatCompletionsCompatibleStreamEngine;
|
|
|
123
135
|
if (deltaChoice.delta.content) {
|
|
124
136
|
if (thinking) {
|
|
125
137
|
thinking = false;
|
|
126
|
-
logger.inference
|
|
138
|
+
logger.inference.trace('\n</think>\n');
|
|
127
139
|
}
|
|
128
|
-
logger.inference
|
|
140
|
+
logger.inference.debug(deltaChoice.delta.content);
|
|
129
141
|
stock.choices[0].delta.content ??= '';
|
|
130
142
|
stock.choices[0].delta.content += deltaChoice.delta.content;
|
|
131
143
|
}
|
|
@@ -133,7 +145,7 @@ export var OpenAIChatCompletionsCompatibleStreamEngine;
|
|
|
133
145
|
if (deltaChoice.delta.tool_calls) {
|
|
134
146
|
if (thinking) {
|
|
135
147
|
thinking = false;
|
|
136
|
-
logger.inference
|
|
148
|
+
logger.inference.trace('\n</think>\n');
|
|
137
149
|
}
|
|
138
150
|
stock.choices[0].delta.tool_calls ??= [];
|
|
139
151
|
for (const deltaToolCall of deltaChoice.delta.tool_calls) {
|
|
@@ -165,22 +177,20 @@ export var OpenAIChatCompletionsCompatibleStreamEngine;
|
|
|
165
177
|
else
|
|
166
178
|
throw new ResponseInvalid('Content missing', { cause: completion });
|
|
167
179
|
if (choice.message.content)
|
|
168
|
-
logger.inference
|
|
180
|
+
logger.inference.debug('\n');
|
|
169
181
|
this.handleFinishReason(completion, choice.finish_reason);
|
|
170
182
|
if (completion.usage) { }
|
|
171
183
|
else
|
|
172
184
|
throw new Error();
|
|
173
|
-
const cost = this.
|
|
174
|
-
|
|
175
|
-
const aiMessage = this.convertToAiMessage(choice.message);
|
|
176
|
-
// logging
|
|
185
|
+
const cost = this.ctx.billing.charge(completion.usage);
|
|
186
|
+
const aiMessage = this.ctx.messageCodec.convertToAiMessage(choice.message);
|
|
177
187
|
const apifcs = choice.message.tool_calls;
|
|
178
188
|
if (apifcs?.length)
|
|
179
|
-
logger.message
|
|
180
|
-
logger.message
|
|
181
|
-
|
|
189
|
+
logger.message.debug(apifcs);
|
|
190
|
+
logger.message.debug(completion.usage);
|
|
191
|
+
wfctx.cost?.(cost);
|
|
192
|
+
this.ctx.toolCallValidator.validate(aiMessage.getFunctionCalls());
|
|
182
193
|
return aiMessage;
|
|
183
194
|
}
|
|
184
|
-
|
|
185
|
-
})(OpenAIChatCompletionsCompatibleStreamEngine || (OpenAIChatCompletionsCompatibleStreamEngine = {}));
|
|
195
|
+
}
|
|
186
196
|
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/compatible.d/openai-chatcompletions.d/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { RoleMessage, type Session } from '#@/compatible/session.ts';
|
|
2
|
+
import { Function } from '#@/function.ts';
|
|
3
|
+
import OpenAI from 'openai';
|
|
4
|
+
import type { OpenAIResponsesToolCodec } from '#@/api-types/openai-responses/tool-codec.ts';
|
|
5
|
+
export declare class OpenAIResponsesCompatibleMessageCodec<in out fdm extends Function.Declaration.Map> {
|
|
6
|
+
protected ctx: OpenAIResponsesCompatibleMessageCodec.Context<fdm>;
|
|
7
|
+
constructor(ctx: OpenAIResponsesCompatibleMessageCodec.Context<fdm>);
|
|
8
|
+
convertToAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): OpenAIResponsesCompatibleMessageCodec.Message.Ai<fdm>;
|
|
9
|
+
convertFromFunctionCall(fc: Function.Call.From<fdm>): OpenAI.Responses.ResponseFunctionToolCall;
|
|
10
|
+
convertFromUserMessage(userMessage: RoleMessage.User<fdm>): OpenAI.Responses.ResponseInput;
|
|
11
|
+
convertFromAiMessage(aiMessage: RoleMessage.Ai<fdm>): OpenAI.Responses.ResponseInput;
|
|
12
|
+
convertFromDeveloperMessage(developerMessage: RoleMessage.Developer): string;
|
|
13
|
+
convertFromChatMessage(chatMessage: Session.ChatMessage<fdm>): OpenAI.Responses.ResponseInput;
|
|
14
|
+
}
|
|
15
|
+
export declare namespace OpenAIResponsesCompatibleMessageCodec {
|
|
16
|
+
interface Context<in out fdm extends Function.Declaration.Map> {
|
|
17
|
+
toolCodec: OpenAIResponsesToolCodec<fdm>;
|
|
18
|
+
}
|
|
19
|
+
namespace Message {
|
|
20
|
+
type Ai<fdm extends Function.Declaration.Map> = Ai.Instance<fdm>;
|
|
21
|
+
namespace Ai {
|
|
22
|
+
function create<fdm extends Function.Declaration.Map>(parts: RoleMessage.Ai.Part<fdm>[], raw: OpenAI.Responses.ResponseOutputItem[]): Ai<fdm>;
|
|
23
|
+
const NOMINAL: unique symbol;
|
|
24
|
+
class Instance<in out fdm extends Function.Declaration.Map> extends RoleMessage.Ai.Instance<fdm> {
|
|
25
|
+
protected raw: OpenAI.Responses.ResponseOutputItem[];
|
|
26
|
+
readonly [NOMINAL]: void;
|
|
27
|
+
constructor(parts: RoleMessage.Ai.Part<fdm>[], raw: OpenAI.Responses.ResponseOutputItem[]);
|
|
28
|
+
getRaw(): OpenAI.Responses.ResponseOutputItem[];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ResponseInvalid } from '#@/engine.ts';
|
|
2
|
+
import { RoleMessage } from '#@/compatible/session.ts';
|
|
3
|
+
import { Function } from '#@/function.ts';
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
export class OpenAIResponsesCompatibleMessageCodec {
|
|
6
|
+
ctx;
|
|
7
|
+
constructor(ctx) {
|
|
8
|
+
this.ctx = ctx;
|
|
9
|
+
}
|
|
10
|
+
convertToAiMessage(output) {
|
|
11
|
+
const parts = output.flatMap((item) => {
|
|
12
|
+
if (item.type === 'message') {
|
|
13
|
+
if (item.content.every(part => part.type === 'output_text')) { }
|
|
14
|
+
else
|
|
15
|
+
throw new Error();
|
|
16
|
+
return [RoleMessage.Part.Text.create(item.content.map(part => part.text).join(''))];
|
|
17
|
+
}
|
|
18
|
+
else if (item.type === 'function_call')
|
|
19
|
+
return [this.ctx.toolCodec.convertToFunctionCall(item)];
|
|
20
|
+
else if (item.type === 'reasoning')
|
|
21
|
+
return [];
|
|
22
|
+
else
|
|
23
|
+
throw new Error();
|
|
24
|
+
});
|
|
25
|
+
return OpenAIResponsesCompatibleMessageCodec.Message.Ai.create(parts, output);
|
|
26
|
+
}
|
|
27
|
+
convertFromFunctionCall(fc) {
|
|
28
|
+
if (fc.id) { }
|
|
29
|
+
else
|
|
30
|
+
throw new Error();
|
|
31
|
+
return {
|
|
32
|
+
type: 'function_call',
|
|
33
|
+
call_id: fc.id,
|
|
34
|
+
name: fc.name,
|
|
35
|
+
arguments: JSON.stringify(fc.args),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
convertFromUserMessage(userMessage) {
|
|
39
|
+
return userMessage.getParts().map(part => {
|
|
40
|
+
if (part instanceof RoleMessage.Part.Text.Instance)
|
|
41
|
+
return {
|
|
42
|
+
type: 'message',
|
|
43
|
+
role: 'user',
|
|
44
|
+
content: part.text,
|
|
45
|
+
};
|
|
46
|
+
else if (part instanceof Function.Response)
|
|
47
|
+
return this.ctx.toolCodec.convertFromFunctionResponse(part);
|
|
48
|
+
else
|
|
49
|
+
throw new Error();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
convertFromAiMessage(aiMessage) {
|
|
53
|
+
if (aiMessage instanceof OpenAIResponsesCompatibleMessageCodec.Message.Ai.Instance)
|
|
54
|
+
return aiMessage.getRaw();
|
|
55
|
+
else {
|
|
56
|
+
return aiMessage.getParts().map(part => {
|
|
57
|
+
if (part instanceof RoleMessage.Part.Text.Instance)
|
|
58
|
+
return {
|
|
59
|
+
role: 'assistant',
|
|
60
|
+
content: part.text,
|
|
61
|
+
};
|
|
62
|
+
else if (part instanceof Function.Call)
|
|
63
|
+
return this.convertFromFunctionCall(part);
|
|
64
|
+
else
|
|
65
|
+
throw new Error();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
convertFromDeveloperMessage(developerMessage) {
|
|
70
|
+
return developerMessage.getOnlyText();
|
|
71
|
+
}
|
|
72
|
+
convertFromChatMessage(chatMessage) {
|
|
73
|
+
if (chatMessage instanceof RoleMessage.User.Instance)
|
|
74
|
+
return this.convertFromUserMessage(chatMessage);
|
|
75
|
+
else if (chatMessage instanceof RoleMessage.Ai.Instance)
|
|
76
|
+
return this.convertFromAiMessage(chatMessage);
|
|
77
|
+
else
|
|
78
|
+
throw new Error();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
(function (OpenAIResponsesCompatibleMessageCodec) {
|
|
82
|
+
let Message;
|
|
83
|
+
(function (Message) {
|
|
84
|
+
let Ai;
|
|
85
|
+
(function (Ai) {
|
|
86
|
+
function create(parts, raw) {
|
|
87
|
+
return new Instance(parts, raw);
|
|
88
|
+
}
|
|
89
|
+
Ai.create = create;
|
|
90
|
+
Ai.NOMINAL = Symbol();
|
|
91
|
+
class Instance extends RoleMessage.Ai.Instance {
|
|
92
|
+
raw;
|
|
93
|
+
constructor(parts, raw) {
|
|
94
|
+
super(parts);
|
|
95
|
+
this.raw = raw;
|
|
96
|
+
}
|
|
97
|
+
getRaw() {
|
|
98
|
+
return this.raw;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
Ai.Instance = Instance;
|
|
102
|
+
})(Ai = Message.Ai || (Message.Ai = {}));
|
|
103
|
+
})(Message = OpenAIResponsesCompatibleMessageCodec.Message || (OpenAIResponsesCompatibleMessageCodec.Message = {}));
|
|
104
|
+
})(OpenAIResponsesCompatibleMessageCodec || (OpenAIResponsesCompatibleMessageCodec = {}));
|
|
105
|
+
//# sourceMappingURL=message-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible.d/openai-responses/message-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type InferenceParams, type ProviderSpec } from '#@/engine.ts';
|
|
2
|
+
import { RoleMessage, type Session } from '#@/compatible/session.ts';
|
|
3
|
+
import { Function } from '#@/function.ts';
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
import { type InferenceContext } from '#@/inference-context.ts';
|
|
6
|
+
import { Throttle } from '#@/throttle.ts';
|
|
7
|
+
import type { OpenAIResponsesCompatibleMessageCodec } from '#@/compatible.d/openai-responses/message-codec.ts';
|
|
8
|
+
import type { OpenAIResponsesToolCodec } from '#@/api-types/openai-responses/tool-codec.ts';
|
|
9
|
+
import type { OpenAIResponsesBilling } from '#@/api-types/openai-responses/billing.ts';
|
|
10
|
+
import type { ToolCallValidator } from '#@/compatible/tool-call-validator.ts';
|
|
11
|
+
export declare class OpenAIResponsesCompatibleTransport<in out fdm extends Function.Declaration.Map> {
|
|
12
|
+
protected ctx: OpenAIResponsesCompatibleTransport.Context<fdm>;
|
|
13
|
+
protected apiURL: URL;
|
|
14
|
+
constructor(ctx: OpenAIResponsesCompatibleTransport.Context<fdm>);
|
|
15
|
+
protected makeParams(session: Session<fdm>): OpenAI.Responses.ResponseCreateParamsNonStreaming;
|
|
16
|
+
protected logAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): void;
|
|
17
|
+
protected fetchRaw(wfctx: InferenceContext, session: Session<fdm>, signal?: AbortSignal): Promise<OpenAIResponsesCompatibleMessageCodec.Message.Ai<fdm>>;
|
|
18
|
+
fetch(wfctx: InferenceContext, session: Session<fdm>, signal?: AbortSignal): Promise<RoleMessage.Ai<fdm>>;
|
|
19
|
+
}
|
|
20
|
+
export declare namespace OpenAIResponsesCompatibleTransport {
|
|
21
|
+
interface Context<in out fdm extends Function.Declaration.Map> {
|
|
22
|
+
inferenceSpec: InferenceParams;
|
|
23
|
+
providerSpec: ProviderSpec;
|
|
24
|
+
fdm: fdm;
|
|
25
|
+
throttle: Throttle;
|
|
26
|
+
toolChoice: Function.ToolChoice<fdm>;
|
|
27
|
+
parallelToolCall: boolean;
|
|
28
|
+
messageCodec: OpenAIResponsesCompatibleMessageCodec<fdm>;
|
|
29
|
+
toolCodec: OpenAIResponsesToolCodec<fdm>;
|
|
30
|
+
billing: OpenAIResponsesBilling;
|
|
31
|
+
toolCallValidator: ToolCallValidator<fdm>;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ResponseInvalid } from '#@/engine.ts';
|
|
2
|
+
import { RoleMessage } from '#@/compatible/session.ts';
|
|
3
|
+
import { Function } from '#@/function.ts';
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
import * as Undici from 'undici';
|
|
6
|
+
import {} from '#@/inference-context.ts';
|
|
7
|
+
import { Throttle } from '#@/throttle.ts';
|
|
8
|
+
import { logger } from '#@/telemetry.ts';
|
|
9
|
+
export class OpenAIResponsesCompatibleTransport {
|
|
10
|
+
ctx;
|
|
11
|
+
apiURL;
|
|
12
|
+
constructor(ctx) {
|
|
13
|
+
this.ctx = ctx;
|
|
14
|
+
this.apiURL = new URL(`${this.ctx.providerSpec.baseUrl}/responses`);
|
|
15
|
+
}
|
|
16
|
+
makeParams(session) {
|
|
17
|
+
const tools = this.ctx.toolCodec.convertFromFunctionDeclarationMap(this.ctx.fdm);
|
|
18
|
+
return {
|
|
19
|
+
model: this.ctx.inferenceSpec.model,
|
|
20
|
+
include: ['reasoning.encrypted_content'],
|
|
21
|
+
store: false,
|
|
22
|
+
input: session.chatMessages.flatMap(chatMessage => this.ctx.messageCodec.convertFromChatMessage(chatMessage)),
|
|
23
|
+
instructions: session.developerMessage && this.ctx.messageCodec.convertFromDeveloperMessage(session.developerMessage),
|
|
24
|
+
tools: tools.length ? tools : undefined,
|
|
25
|
+
tool_choice: tools.length ? this.ctx.toolCodec.convertFromToolChoice(this.ctx.toolChoice) : undefined,
|
|
26
|
+
parallel_tool_calls: tools.length ? this.ctx.parallelToolCall : undefined,
|
|
27
|
+
max_output_tokens: this.ctx.inferenceSpec.maxTokens,
|
|
28
|
+
...this.ctx.inferenceSpec.additionalOptions,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
logAiMessage(output) {
|
|
32
|
+
for (const item of output)
|
|
33
|
+
if (item.type === 'message') {
|
|
34
|
+
if (item.content.every(part => part.type === 'output_text')) { }
|
|
35
|
+
else
|
|
36
|
+
throw new Error();
|
|
37
|
+
logger.inference.debug(item.content.map(part => part.text).join(''));
|
|
38
|
+
}
|
|
39
|
+
else if (item.type === 'function_call')
|
|
40
|
+
logger.message.debug(item);
|
|
41
|
+
}
|
|
42
|
+
async fetchRaw(wfctx, session, signal) {
|
|
43
|
+
const params = this.makeParams(session);
|
|
44
|
+
logger.message.trace(params);
|
|
45
|
+
await this.ctx.throttle.requests(wfctx);
|
|
46
|
+
const res = await Undici.fetch(this.apiURL, {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
headers: new Headers({
|
|
49
|
+
'Content-Type': 'application/json',
|
|
50
|
+
'Authorization': `Bearer ${this.ctx.providerSpec.apiKey}`,
|
|
51
|
+
}),
|
|
52
|
+
body: JSON.stringify(params),
|
|
53
|
+
dispatcher: this.ctx.providerSpec.proxyAgent,
|
|
54
|
+
signal,
|
|
55
|
+
});
|
|
56
|
+
if (res.ok) { }
|
|
57
|
+
else
|
|
58
|
+
throw new Error(undefined, { cause: res });
|
|
59
|
+
const response = await res.json();
|
|
60
|
+
logger.message.trace(response);
|
|
61
|
+
if (response.status === 'incomplete' && response.incomplete_details?.reason === 'max_output_tokens')
|
|
62
|
+
throw new ResponseInvalid('Token limit exceeded.', { cause: response });
|
|
63
|
+
if (response.status === 'completed') { }
|
|
64
|
+
else
|
|
65
|
+
throw new ResponseInvalid('Abnormal response status', { cause: response });
|
|
66
|
+
this.logAiMessage(response.output);
|
|
67
|
+
if (response.usage) { }
|
|
68
|
+
else
|
|
69
|
+
throw new Error();
|
|
70
|
+
logger.message.debug(response.usage);
|
|
71
|
+
wfctx.cost?.(this.ctx.billing.charge(response.usage));
|
|
72
|
+
const aiMessage = this.ctx.messageCodec.convertToAiMessage(response.output);
|
|
73
|
+
this.ctx.toolCallValidator.validate(aiMessage.getFunctionCalls());
|
|
74
|
+
return aiMessage;
|
|
75
|
+
}
|
|
76
|
+
async fetch(wfctx, session, signal) {
|
|
77
|
+
try {
|
|
78
|
+
return await this.fetchRaw(wfctx, session, signal);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
if (e instanceof OpenAI.APIError)
|
|
82
|
+
throw new ResponseInvalid(undefined, { cause: e });
|
|
83
|
+
else
|
|
84
|
+
throw e;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible.d/openai-responses/transport.ts"],"names":[],"mappings":"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"}
|
package/build/config.js
CHANGED
package/build/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAIhD,MAAM,KAAW,MAAM,CAMtB;AAND,WAAiB,MAAM;IACN,aAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC;SAC7D,CAAC;KACL,CAAC,CAAC;AACP,CAAC,EANgB,MAAM,KAAN,MAAM,QAMtB"}
|
package/build/engine.d.ts
CHANGED
|
@@ -1,9 +1,51 @@
|
|
|
1
|
-
import { Function } from '
|
|
2
|
-
import { EndpointSpec } from '
|
|
3
|
-
import { Throttle } from '
|
|
1
|
+
import { Function } from '#@/function.ts';
|
|
2
|
+
import { EndpointSpec } from '#@/endpoint-spec.ts';
|
|
3
|
+
import { Throttle } from '#@/throttle.ts';
|
|
4
4
|
import { ProxyAgent } from 'undici';
|
|
5
|
-
|
|
5
|
+
import { type InferenceContext } from '#@/inference-context.ts';
|
|
6
|
+
import { type GenericSession } from '#@/session.ts';
|
|
7
|
+
export interface Pricing {
|
|
8
|
+
inputPrice: number;
|
|
9
|
+
cachePrice: number;
|
|
10
|
+
outputPrice: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ProviderSpec {
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
proxyAgent?: ProxyAgent;
|
|
16
|
+
}
|
|
17
|
+
export interface InferenceParams {
|
|
18
|
+
model: string;
|
|
19
|
+
additionalOptions?: Record<string, unknown>;
|
|
20
|
+
maxTokens?: number;
|
|
21
|
+
timeout?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class Engine<in out fdm extends Function.Declaration.Map, userm, aim, devm, session extends GenericSession<userm, aim, devm>> {
|
|
24
|
+
protected providerSpec: ProviderSpec;
|
|
25
|
+
protected inferenceParams: InferenceParams;
|
|
6
26
|
name: string;
|
|
27
|
+
pricing: Pricing;
|
|
28
|
+
fdm: fdm;
|
|
29
|
+
protected throttle: Throttle;
|
|
30
|
+
protected abstract parallelToolCall: boolean;
|
|
31
|
+
constructor(options: Engine.Options<fdm>);
|
|
32
|
+
protected abstract infer(wfctx: InferenceContext, session: session, signal?: AbortSignal): Promise<aim>;
|
|
33
|
+
/**
|
|
34
|
+
* @throws {@link UserAbortion} 用户中止
|
|
35
|
+
* @throws {@link InferenceTimeout} 推理超时
|
|
36
|
+
* @throws {@link ResponseInvalid} 模型抽风
|
|
37
|
+
* @throws {TypeError} 网络故障
|
|
38
|
+
*/
|
|
39
|
+
stateless(wfctx: InferenceContext, session: session): Promise<aim>;
|
|
40
|
+
/**
|
|
41
|
+
* @param session mutable
|
|
42
|
+
*/
|
|
43
|
+
stateful(wfctx: InferenceContext, session: session): Promise<aim>;
|
|
44
|
+
abstract appendUserMessage(session: session, message: userm): session;
|
|
45
|
+
/**
|
|
46
|
+
* @param session mutable
|
|
47
|
+
*/
|
|
48
|
+
abstract pushUserMessage(session: session, message: userm): session;
|
|
7
49
|
}
|
|
8
50
|
export declare namespace Engine {
|
|
9
51
|
interface Options<in out fdm extends Function.Declaration.Map> extends EndpointSpec, Options.Tools<fdm> {
|
|
@@ -15,31 +57,11 @@ export declare namespace Engine {
|
|
|
15
57
|
parallelToolCall?: boolean;
|
|
16
58
|
}
|
|
17
59
|
}
|
|
18
|
-
interface OwnProps<in out fdm extends Function.Declaration.Map> {
|
|
19
|
-
baseUrl: string;
|
|
20
|
-
apiKey: string;
|
|
21
|
-
model: string;
|
|
22
|
-
name: string;
|
|
23
|
-
inputPrice: number;
|
|
24
|
-
outputPrice: number;
|
|
25
|
-
cachePrice: number;
|
|
26
|
-
fdm: fdm;
|
|
27
|
-
additionalOptions?: Record<string, unknown>;
|
|
28
|
-
throttle: Throttle;
|
|
29
|
-
timeout?: number;
|
|
30
|
-
maxTokens?: number;
|
|
31
|
-
proxyAgent?: ProxyAgent;
|
|
32
|
-
}
|
|
33
|
-
namespace OwnProps {
|
|
34
|
-
function init<fdm extends Function.Declaration.Map>(options: Options<fdm>): OwnProps<fdm>;
|
|
35
|
-
}
|
|
36
|
-
interface Underhood<in out fdm extends Function.Declaration.Map> extends Engine, OwnProps<fdm> {
|
|
37
|
-
parallelToolCall: boolean;
|
|
38
|
-
}
|
|
39
60
|
}
|
|
40
61
|
export declare class ResponseInvalid extends Error {
|
|
41
62
|
}
|
|
42
|
-
export declare
|
|
63
|
+
export declare class UserAbortion {
|
|
64
|
+
}
|
|
43
65
|
export declare class InferenceTimeout extends Error {
|
|
44
66
|
}
|
|
45
67
|
declare global {
|