@zimtsui/typechat 0.0.94 → 0.0.95
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 +0 -6
- package/README.md +26 -36
- package/assets/verbatim/instruction.md +27 -25
- package/assets/verbatim/quotation.handlebars +1 -1
- package/assets/verbatim/system.handlebars +1 -0
- package/build/adaptor.d.ts +5 -23
- package/build/adaptor.js +14 -25
- package/build/adaptor.js.map +1 -1
- package/build/api-types/anthropic/billing.d.ts +3 -3
- package/build/api-types/anthropic/billing.js +6 -6
- package/build/api-types/anthropic/billing.js.map +1 -1
- package/build/api-types/anthropic/tool-codec.d.ts +3 -3
- package/build/api-types/anthropic/tool-codec.js +15 -11
- package/build/api-types/anthropic/tool-codec.js.map +1 -1
- package/build/api-types/google/billing.d.ts +3 -3
- package/build/api-types/google/billing.js +7 -7
- package/build/api-types/google/billing.js.map +1 -1
- package/build/api-types/google/tool-codec.d.ts +3 -3
- package/build/api-types/google/tool-codec.js +16 -34
- package/build/api-types/google/tool-codec.js.map +1 -1
- package/build/api-types/openai-chatcompletions/billing.d.ts +5 -5
- package/build/api-types/openai-chatcompletions/billing.js +7 -7
- package/build/api-types/openai-chatcompletions/billing.js.map +1 -1
- package/build/api-types/openai-chatcompletions/tool-codec.d.ts +5 -5
- package/build/api-types/openai-chatcompletions/tool-codec.js +17 -13
- package/build/api-types/openai-chatcompletions/tool-codec.js.map +1 -1
- package/build/api-types/openai-responses/billing.d.ts +3 -3
- package/build/api-types/openai-responses/billing.js +6 -6
- package/build/api-types/openai-responses/billing.js.map +1 -1
- package/build/api-types/openai-responses/tool-codec.d.ts +3 -3
- package/build/api-types/openai-responses/tool-codec.js +16 -12
- package/build/api-types/openai-responses/tool-codec.js.map +1 -1
- package/build/assets.d.ts +1 -1
- package/build/assets.js +6 -5
- package/build/assets.js.map +1 -1
- package/build/compatible-engine/session.d.ts +4 -16
- package/build/compatible-engine/session.js +8 -15
- package/build/compatible-engine/session.js.map +1 -1
- package/build/compatible-engine/validation.d.ts +7 -7
- package/build/compatible-engine/validation.js +33 -34
- package/build/compatible-engine/validation.js.map +1 -1
- package/build/compatible-engine.d/anthropic/message-codec.d.ts +4 -3
- package/build/compatible-engine.d/anthropic/message-codec.js +16 -22
- package/build/compatible-engine.d/anthropic/message-codec.js.map +1 -1
- package/build/compatible-engine.d/anthropic/transport.d.ts +10 -3
- package/build/compatible-engine.d/anthropic/transport.js +105 -101
- package/build/compatible-engine.d/anthropic/transport.js.map +1 -1
- package/build/compatible-engine.d/anthropic.d.ts +2 -0
- package/build/compatible-engine.d/anthropic.js +9 -1
- package/build/compatible-engine.d/anthropic.js.map +1 -1
- package/build/compatible-engine.d/google/message-codec.d.ts +4 -3
- package/build/compatible-engine.d/google/message-codec.js +16 -22
- package/build/compatible-engine.d/google/message-codec.js.map +1 -1
- package/build/compatible-engine.d/google/transport.d.ts +10 -3
- package/build/compatible-engine.d/google/transport.js +32 -24
- package/build/compatible-engine.d/google/transport.js.map +1 -1
- package/build/compatible-engine.d/google.d.ts +2 -0
- package/build/compatible-engine.d/google.js +23 -2
- package/build/compatible-engine.d/google.js.map +1 -1
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.d.ts +6 -5
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.js +17 -24
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.js.map +1 -1
- package/build/compatible-engine.d/openai-chatcompletions/transport.d.ts +33 -3
- package/build/compatible-engine.d/openai-chatcompletions/transport.js +182 -6
- package/build/compatible-engine.d/openai-chatcompletions/transport.js.map +1 -1
- package/build/compatible-engine.d/openai-chatcompletions.d.ts +10 -2
- package/build/compatible-engine.d/openai-chatcompletions.js +35 -0
- package/build/compatible-engine.d/openai-chatcompletions.js.map +1 -1
- package/build/compatible-engine.d/openai-responses/message-codec.d.ts +4 -6
- package/build/compatible-engine.d/openai-responses/message-codec.js +70 -74
- package/build/compatible-engine.d/openai-responses/message-codec.js.map +1 -1
- package/build/compatible-engine.d/openai-responses/transport.d.ts +14 -8
- package/build/compatible-engine.d/openai-responses/transport.js +64 -64
- package/build/compatible-engine.d/openai-responses/transport.js.map +1 -1
- package/build/compatible-engine.d/openai-responses.d.ts +2 -0
- package/build/compatible-engine.d/openai-responses.js +10 -2
- package/build/compatible-engine.d/openai-responses.js.map +1 -1
- package/build/compatible-engine.d.ts +2 -1
- package/build/compatible-engine.js +3 -3
- package/build/compatible-engine.js.map +1 -1
- package/build/config.d.ts +17 -19
- package/build/config.js +2 -4
- package/build/config.js.map +1 -1
- package/build/endpoint-spec.d.ts +15 -15
- package/build/endpoint-spec.js +2 -2
- package/build/endpoint-spec.js.map +1 -1
- package/build/engine/session.d.ts +31 -0
- package/build/engine/session.js +19 -0
- package/build/engine/session.js.map +1 -1
- package/build/engine/validation.d.ts +1 -7
- package/build/engine.d.ts +37 -20
- package/build/engine.js +154 -87
- package/build/engine.js.map +1 -1
- package/build/function.d.ts +1 -1
- package/build/native-engines.d/google/message-codec.d.ts +6 -3
- package/build/native-engines.d/google/message-codec.js +23 -27
- package/build/native-engines.d/google/message-codec.js.map +1 -1
- package/build/native-engines.d/google/transport.d.ts +13 -3
- package/build/native-engines.d/google/transport.js +41 -27
- package/build/native-engines.d/google/transport.js.map +1 -1
- package/build/native-engines.d/google/validation.d.ts +5 -6
- package/build/native-engines.d/google/validation.js +3 -6
- package/build/native-engines.d/google/validation.js.map +1 -1
- package/build/native-engines.d/google.d.ts +2 -2
- package/build/native-engines.d/google.js +22 -4
- package/build/native-engines.d/google.js.map +1 -1
- package/build/native-engines.d/openai-responses/choice-codec.d.ts +1 -1
- package/build/native-engines.d/openai-responses/choice-codec.js +12 -12
- package/build/native-engines.d/openai-responses/choice-codec.js.map +1 -1
- package/build/native-engines.d/openai-responses/message-codec.d.ts +5 -3
- package/build/native-engines.d/openai-responses/message-codec.js +59 -48
- package/build/native-engines.d/openai-responses/message-codec.js.map +1 -1
- package/build/native-engines.d/openai-responses/transport.d.ts +14 -6
- package/build/native-engines.d/openai-responses/transport.js +56 -54
- package/build/native-engines.d/openai-responses/transport.js.map +1 -1
- package/build/native-engines.d/openai-responses/validation.d.ts +7 -7
- package/build/native-engines.d/openai-responses/validation.js +31 -32
- package/build/native-engines.d/openai-responses/validation.js.map +1 -1
- package/build/native-engines.d/openai-responses.d.ts +2 -2
- package/build/native-engines.d/openai-responses.js +9 -4
- package/build/native-engines.d/openai-responses.js.map +1 -1
- package/build/repetition.d.ts +2 -1
- package/build/repetition.js +7 -42
- package/build/repetition.js.map +1 -1
- package/build/telemetry.d.ts +1 -0
- package/build/telemetry.js +1 -0
- package/build/telemetry.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/verbatim/codec/declarations.d.ts +0 -1
- package/build/verbatim/codec/declarations.js +1 -2
- package/build/verbatim/codec/declarations.js.map +1 -1
- package/build/verbatim/codec/helpers.d.ts +2 -0
- package/build/verbatim/codec/{escape.js → helpers.js} +5 -1
- package/build/verbatim/codec/helpers.js.map +1 -0
- package/build/verbatim/codec/quotation.d.ts +1 -2
- package/build/verbatim/codec/quotation.js +3 -4
- package/build/verbatim/codec/quotation.js.map +1 -1
- package/build/verbatim/codec/response.d.ts +0 -1
- package/build/verbatim/codec/response.js +1 -2
- package/build/verbatim/codec/response.js.map +1 -1
- package/build/verbatim/codec/{meta.d.ts → system.d.ts} +0 -1
- package/build/verbatim/codec/system.js +7 -0
- package/build/verbatim/codec/system.js.map +1 -0
- package/build/verbatim/codec.d.ts +1 -1
- package/build/verbatim/codec.js +1 -1
- package/build/verbatim/codec.js.map +1 -1
- package/package.json +8 -9
- package/assets/verbatim/meta.handlebars +0 -1
- package/build/compatible-engine.d/aliyun/transport.d.ts +0 -12
- package/build/compatible-engine.d/aliyun/transport.js +0 -7
- package/build/compatible-engine.d/aliyun/transport.js.map +0 -1
- package/build/compatible-engine.d/aliyun.d.ts +0 -21
- package/build/compatible-engine.d/aliyun.js +0 -38
- package/build/compatible-engine.d/aliyun.js.map +0 -1
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.d.ts +0 -31
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js +0 -88
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js.map +0 -1
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.d.ts +0 -34
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js +0 -190
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js.map +0 -1
- package/build/verbatim/codec/escape.d.ts +0 -1
- package/build/verbatim/codec/escape.js.map +0 -1
- package/build/verbatim/codec/meta.js +0 -8
- package/build/verbatim/codec/meta.js.map +0 -1
|
@@ -1,11 +1,187 @@
|
|
|
1
|
-
import
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { loggers } from "../../telemetry.js";
|
|
3
|
+
import * as ChoiceCodec from "./choice-codec.js";
|
|
4
|
+
import * as Undici from 'undici';
|
|
2
5
|
export class Transport {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
client;
|
|
7
|
+
inferenceParams;
|
|
8
|
+
providerSpec;
|
|
9
|
+
fdm;
|
|
10
|
+
throttle;
|
|
11
|
+
choice;
|
|
12
|
+
messageCodec;
|
|
13
|
+
toolCodec;
|
|
14
|
+
billing;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.client = new OpenAI({
|
|
17
|
+
baseURL: options.providerSpec.baseUrl,
|
|
18
|
+
apiKey: options.providerSpec.apiKey,
|
|
19
|
+
fetch: Undici.fetch,
|
|
20
|
+
fetchOptions: { dispatcher: options.providerSpec.dispatcher },
|
|
21
|
+
});
|
|
22
|
+
this.inferenceParams = options.inferenceParams;
|
|
23
|
+
this.providerSpec = options.providerSpec;
|
|
24
|
+
this.fdm = options.fdm;
|
|
25
|
+
this.throttle = options.throttle;
|
|
26
|
+
this.choice = options.choice;
|
|
27
|
+
this.messageCodec = options.messageCodec;
|
|
28
|
+
this.toolCodec = options.toolCodec;
|
|
29
|
+
this.billing = options.billing;
|
|
30
|
+
}
|
|
31
|
+
makeParams(session) {
|
|
32
|
+
const tools = this.toolCodec.encodeFunctionDeclarationMap(this.fdm);
|
|
33
|
+
const messages = [];
|
|
34
|
+
if (session.developerMessage)
|
|
35
|
+
messages.push(...this.messageCodec.encodeRoleMessage(session.developerMessage));
|
|
36
|
+
messages.push(...this.messageCodec.encodeRoleMessages(session.chatMessages));
|
|
37
|
+
return {
|
|
38
|
+
model: this.inferenceParams.model,
|
|
39
|
+
messages,
|
|
40
|
+
tools: tools.length ? tools : undefined,
|
|
41
|
+
tool_choice: tools.length ? ChoiceCodec.encode(this.choice) : undefined,
|
|
42
|
+
parallel_tool_calls: tools.length ? this.inferenceParams.parallelToolCall : undefined,
|
|
43
|
+
stream: true,
|
|
44
|
+
stream_options: {
|
|
45
|
+
include_usage: true,
|
|
46
|
+
},
|
|
47
|
+
...this.inferenceParams.additionalOptions,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
mergeToolCall(apifc) {
|
|
51
|
+
if (apifc.id) { }
|
|
52
|
+
else
|
|
53
|
+
throw new Error();
|
|
54
|
+
if (apifc.function?.name) { }
|
|
55
|
+
else
|
|
56
|
+
throw new Error();
|
|
57
|
+
if (apifc.function?.arguments) { }
|
|
7
58
|
else
|
|
8
|
-
throw new
|
|
59
|
+
throw new Error();
|
|
60
|
+
return {
|
|
61
|
+
id: apifc.id,
|
|
62
|
+
type: 'function',
|
|
63
|
+
function: {
|
|
64
|
+
name: apifc.function.name,
|
|
65
|
+
arguments: apifc.function.arguments,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
mergeCompletion(stock) {
|
|
70
|
+
const stockChoice = stock?.choices[0];
|
|
71
|
+
if (stockChoice?.finish_reason) { }
|
|
72
|
+
else
|
|
73
|
+
throw new SyntaxError('Finish reason missing', { cause: stock });
|
|
74
|
+
const completion = {
|
|
75
|
+
id: stock.id,
|
|
76
|
+
object: 'chat.completion',
|
|
77
|
+
created: stock.created,
|
|
78
|
+
model: stock.model,
|
|
79
|
+
choices: [{
|
|
80
|
+
index: 0,
|
|
81
|
+
finish_reason: stockChoice.finish_reason,
|
|
82
|
+
message: {
|
|
83
|
+
role: 'assistant',
|
|
84
|
+
content: stockChoice.delta.content ?? null,
|
|
85
|
+
tool_calls: stockChoice.delta.tool_calls?.map(apifc => this.mergeToolCall(apifc)),
|
|
86
|
+
refusal: stockChoice.delta.refusal ?? null,
|
|
87
|
+
},
|
|
88
|
+
logprobs: stockChoice.logprobs ?? null,
|
|
89
|
+
}],
|
|
90
|
+
usage: stock.usage ?? undefined,
|
|
91
|
+
};
|
|
92
|
+
return completion;
|
|
93
|
+
}
|
|
94
|
+
async fetch(wfctx, session, signal) {
|
|
95
|
+
try {
|
|
96
|
+
await this.throttle.requests(wfctx);
|
|
97
|
+
// Prepare request
|
|
98
|
+
const params = this.makeParams(session);
|
|
99
|
+
loggers.message.debug(params);
|
|
100
|
+
// Send request
|
|
101
|
+
const stream = await this.client.chat.completions.create(params, { signal });
|
|
102
|
+
// Get response
|
|
103
|
+
let stock = null;
|
|
104
|
+
for await (const chunk of stream) {
|
|
105
|
+
loggers.stream.trace(chunk);
|
|
106
|
+
stock ??= {
|
|
107
|
+
id: chunk.id,
|
|
108
|
+
created: chunk.created,
|
|
109
|
+
model: chunk.model,
|
|
110
|
+
choices: [],
|
|
111
|
+
object: 'chat.completion.chunk',
|
|
112
|
+
};
|
|
113
|
+
// choice
|
|
114
|
+
const deltaChoice = chunk.choices[0];
|
|
115
|
+
if (deltaChoice) {
|
|
116
|
+
if (!stock.choices.length)
|
|
117
|
+
stock.choices.push({
|
|
118
|
+
index: 0,
|
|
119
|
+
finish_reason: null,
|
|
120
|
+
delta: {},
|
|
121
|
+
});
|
|
122
|
+
// content
|
|
123
|
+
if (deltaChoice.delta.content) {
|
|
124
|
+
stock.choices[0].delta.content ??= '';
|
|
125
|
+
stock.choices[0].delta.content += deltaChoice.delta.content;
|
|
126
|
+
}
|
|
127
|
+
// function calls
|
|
128
|
+
if (deltaChoice.delta.tool_calls) {
|
|
129
|
+
stock.choices[0].delta.tool_calls ??= [];
|
|
130
|
+
for (const deltaToolCall of deltaChoice.delta.tool_calls) {
|
|
131
|
+
const toolCalls = stock.choices[0].delta.tool_calls;
|
|
132
|
+
toolCalls[deltaToolCall.index] ??= { index: deltaToolCall.index };
|
|
133
|
+
toolCalls[deltaToolCall.index].id ??= deltaToolCall.id;
|
|
134
|
+
if (deltaToolCall.function) {
|
|
135
|
+
toolCalls[deltaToolCall.index].function ??= {};
|
|
136
|
+
toolCalls[deltaToolCall.index].function.name ??= deltaToolCall.function.name;
|
|
137
|
+
if (deltaToolCall.function.arguments) {
|
|
138
|
+
toolCalls[deltaToolCall.index].function.arguments ??= '';
|
|
139
|
+
toolCalls[deltaToolCall.index].function.arguments += deltaToolCall.function?.arguments || '';
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// finish reason
|
|
145
|
+
stock.choices[0].finish_reason ??= deltaChoice.finish_reason;
|
|
146
|
+
}
|
|
147
|
+
// usage
|
|
148
|
+
stock.usage ??= chunk.usage;
|
|
149
|
+
}
|
|
150
|
+
// Validate response
|
|
151
|
+
if (stock) { }
|
|
152
|
+
else
|
|
153
|
+
throw new Error();
|
|
154
|
+
const completion = this.mergeCompletion(stock);
|
|
155
|
+
loggers.message.debug(completion);
|
|
156
|
+
const choice = completion.choices[0];
|
|
157
|
+
if (choice) { }
|
|
158
|
+
else
|
|
159
|
+
throw new SyntaxError('Content missing', { cause: completion });
|
|
160
|
+
if (choice.message.content)
|
|
161
|
+
loggers.inference.info(choice.message.content);
|
|
162
|
+
if (choice.finish_reason === 'length')
|
|
163
|
+
throw new SyntaxError('Token limit exceeded.', { cause: completion });
|
|
164
|
+
if (['stop', 'tool_calls'].includes(choice.finish_reason)) { }
|
|
165
|
+
else
|
|
166
|
+
throw new SyntaxError('Abnormal finish reason', { cause: choice.finish_reason });
|
|
167
|
+
if (completion.usage) { }
|
|
168
|
+
else
|
|
169
|
+
throw new Error();
|
|
170
|
+
const cost = this.billing.charge(completion.usage);
|
|
171
|
+
if (choice.message.tool_calls)
|
|
172
|
+
loggers.message.info(choice.message.tool_calls);
|
|
173
|
+
loggers.message.info(completion.usage);
|
|
174
|
+
wfctx.cost?.(cost);
|
|
175
|
+
return this.messageCodec.decodeAiMessage(choice.message);
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
if (e instanceof OpenAI.InternalServerError)
|
|
179
|
+
throw new TypeError('OpenAI internal server error', { cause: e });
|
|
180
|
+
else if (e instanceof OpenAI.APIConnectionError)
|
|
181
|
+
throw new TypeError('OpenAI API connection error', { cause: e });
|
|
182
|
+
else
|
|
183
|
+
throw e;
|
|
184
|
+
}
|
|
9
185
|
}
|
|
10
186
|
}
|
|
11
187
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-chatcompletions/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-chatcompletions/transport.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAK5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAM7C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC,MAAM,OAAO,SAAS;IASR,MAAM,CAAS;IACf,eAAe,CAAkB;IACjC,YAAY,CAAe;IAC3B,GAAG,CAAM;IACT,QAAQ,CAAW;IACnB,MAAM,CAAoC;IAC1C,YAAY,CAAyB;IACrC,SAAS,CAAiB;IAC1B,OAAO,CAAU;IAC3B,YAAmB,OAAoC;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACrB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO;YACrC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM;YACnC,KAAK,EAAE,MAAM,CAAC,KAAgC;YAC9C,YAAY,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE;SAChE,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,CAAC;IAES,UAAU,CAChB,OAA+B;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAwC,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,gBAAgB;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC9G,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7E,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACjC,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACvE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YACrF,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE;gBACZ,aAAa,EAAE,IAAI;aACtB;YACD,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB;SAC5C,CAAC;IACN,CAAC;IAEM,aAAa,CAChB,KAAuD;QAEvD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACzD,OAAO;YACH,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACN,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;gBACzB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;aACtC;SACJ,CAAC;IACN,CAAC;IAEM,eAAe,CAClB,KAAiC;QAEjC,MAAM,WAAW,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,WAAW,EAAE,aAAa,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzG,MAAM,UAAU,GAA0B;YACtC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,CAAC;oBACN,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,WAAW,CAAC,aAAa;oBACxC,OAAO,EAAE;wBACL,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;wBAC1C,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CACzC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CACrC;wBACD,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;qBAC7C;oBACD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,IAAI;iBACzC,CAAC;YACF,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;SAClC,CAAC;QACF,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CACd,KAAuB,EACvB,OAA+B,EAC/B,MAAoB;QAEpB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEpC,kBAAkB;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE9B,eAAe;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAE7E,eAAe;YACf,IAAI,KAAK,GAAsC,IAAI,CAAC;YACpD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAE5B,KAAK,KAAK;oBACN,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,uBAAuB;iBAClC,CAAC;gBAEF,SAAS;gBACT,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;wBACrB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;4BACf,KAAK,EAAE,CAAC;4BACR,aAAa,EAAE,IAAI;4BACnB,KAAK,EAAE,EAAE;yBACZ,CAAC,CAAC;oBAEP,UAAU;oBACV,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC;wBACvC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,OAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;oBAClE,CAAC;oBAED,iBAAiB;oBACjB,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC;wBAC1C,KAAK,MAAM,aAAa,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BACvD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,UAAW,CAAC;4BACtD,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;4BAClE,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC;4BACxD,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gCACzB,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAQ,KAAK,EAAE,CAAC;gCAChD,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAS,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;gCAC/E,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oCACnC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAS,CAAC,SAAS,KAAK,EAAE,CAAC;oCAC3D,SAAS,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,QAAS,CAAC,SAAU,IAAI,aAAa,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;gCACpG,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,gBAAgB;oBAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,aAAa,KAAK,WAAW,CAAC,aAAa,CAAC;gBAClE,CAAC;gBAED,QAAQ;gBACR,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;YAChC,CAAC;YAED,oBAAoB;YACpB,IAAI,KAAK,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,MAAM,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACpF,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE3E,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ;gBAAE,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7G,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA,CAAC;;gBACxD,MAAM,IAAI,WAAW,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YAEtF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;YAEnB,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,YAAY,MAAM,CAAC,mBAAmB;gBACvC,MAAM,IAAI,SAAS,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjE,IAAI,CAAC,YAAY,MAAM,CAAC,kBAAkB;gBAC3C,MAAM,IAAI,SAAS,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;;gBAChE,MAAM,CAAC,CAAC;QACjB,CAAC;IACL,CAAC;CAEJ"}
|
|
@@ -4,10 +4,18 @@ import * as MessageCodecModule from './openai-chatcompletions/message-codec.ts';
|
|
|
4
4
|
import * as TransportModule from './openai-chatcompletions/transport.ts';
|
|
5
5
|
import type { Verbatim } from '../verbatim.ts';
|
|
6
6
|
import * as ChoiceCodecModule from './openai-chatcompletions/choice-codec.ts';
|
|
7
|
+
import { ToolCodec } from '../api-types/openai-chatcompletions/tool-codec.ts';
|
|
8
|
+
import { Billing } from '../api-types/openai-chatcompletions/billing.ts';
|
|
7
9
|
export type OpenAIChatCompletionsCompatibleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = OpenAIChatCompletionsCompatibleEngine.Instance<fdm, vdm>;
|
|
8
10
|
export declare namespace OpenAIChatCompletionsCompatibleEngine {
|
|
9
|
-
|
|
10
|
-
protected
|
|
11
|
+
class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Instance<fdm, vdm> {
|
|
12
|
+
protected options: OpenAIChatCompletionsCompatibleEngine.Options<fdm, vdm>;
|
|
13
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
14
|
+
protected messageCodec: MessageCodec<fdm, vdm>;
|
|
15
|
+
protected billing: Billing;
|
|
16
|
+
protected transport: Transport<fdm, vdm>;
|
|
17
|
+
constructor(options: OpenAIChatCompletionsCompatibleEngine.Options<fdm, vdm>);
|
|
18
|
+
clone(): OpenAIChatCompletionsCompatibleEngine<fdm, vdm>;
|
|
11
19
|
}
|
|
12
20
|
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Options<fdm, vdm> {
|
|
13
21
|
}
|
|
@@ -2,9 +2,44 @@ import { CompatibleEngine } from "../compatible-engine.js";
|
|
|
2
2
|
import * as MessageCodecModule from "./openai-chatcompletions/message-codec.js";
|
|
3
3
|
import * as TransportModule from "./openai-chatcompletions/transport.js";
|
|
4
4
|
import * as ChoiceCodecModule from "./openai-chatcompletions/choice-codec.js";
|
|
5
|
+
import { ToolCodec } from "../api-types/openai-chatcompletions/tool-codec.js";
|
|
6
|
+
import { Billing } from "../api-types/openai-chatcompletions/billing.js";
|
|
5
7
|
export var OpenAIChatCompletionsCompatibleEngine;
|
|
6
8
|
(function (OpenAIChatCompletionsCompatibleEngine) {
|
|
7
9
|
class Instance extends CompatibleEngine.Instance {
|
|
10
|
+
options;
|
|
11
|
+
toolCodec;
|
|
12
|
+
messageCodec;
|
|
13
|
+
billing;
|
|
14
|
+
transport;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
super(options);
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.toolCodec = new ToolCodec({
|
|
19
|
+
fdm: this.fdm,
|
|
20
|
+
});
|
|
21
|
+
this.messageCodec = new OpenAIChatCompletionsCompatibleEngine.MessageCodec({
|
|
22
|
+
toolCodec: this.toolCodec,
|
|
23
|
+
vdm: this.vdm,
|
|
24
|
+
});
|
|
25
|
+
this.billing = new Billing({ pricing: this.pricing });
|
|
26
|
+
this.transport = new OpenAIChatCompletionsCompatibleEngine.Transport({
|
|
27
|
+
inferenceParams: this.inferenceParams,
|
|
28
|
+
providerSpec: this.providerSpec,
|
|
29
|
+
fdm: this.fdm,
|
|
30
|
+
throttle: this.throttle,
|
|
31
|
+
choice: this.structuringChoice,
|
|
32
|
+
messageCodec: this.messageCodec,
|
|
33
|
+
toolCodec: this.toolCodec,
|
|
34
|
+
billing: this.billing,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
clone() {
|
|
38
|
+
const engine = new OpenAIChatCompletionsCompatibleEngine.Instance(this.options);
|
|
39
|
+
engine.middlewares = [...this.middlewares];
|
|
40
|
+
engine.statefulMiddlewares = [...this.statefulMiddlewares];
|
|
41
|
+
return engine;
|
|
42
|
+
}
|
|
8
43
|
}
|
|
9
44
|
OpenAIChatCompletionsCompatibleEngine.Instance = Instance;
|
|
10
45
|
OpenAIChatCompletionsCompatibleEngine.Transport = TransportModule.Transport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-chatcompletions.js","sourceRoot":"","sources":["../../src/compatible-engine.d/openai-chatcompletions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AAEzE,OAAO,KAAK,iBAAiB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-chatcompletions.js","sourceRoot":"","sources":["../../src/compatible-engine.d/openai-chatcompletions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AAEzE,OAAO,KAAK,iBAAiB,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAQzE,MAAM,KAAW,qCAAqC,CAiDrD;AAjDD,WAAiB,qCAAqC;IAClD,MAAa,QAGX,SAAQ,gBAAgB,CAAC,QAAkB;QAMZ;QALnB,SAAS,CAAiB;QAC1B,YAAY,CAAyB;QACrC,OAAO,CAAU;QACR,SAAS,CAAsB;QAElD,YAA6B,OAAgE;YACzF,KAAK,CAAC,OAAO,CAAC,CAAC;YADU,YAAO,GAAP,OAAO,CAAyD;YAEzF,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;gBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,sCAAA,YAAY,CAAC;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,qCAAqC,CAAC,SAAS,CAAC;gBACjE,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,iBAAiB;gBAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;QACP,CAAC;QAEe,KAAK;YACjB,MAAM,MAAM,GAAG,IAAI,qCAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAClB,CAAC;KAEJ;IAtCY,8CAAQ,WAsCpB,CAAA;IAOa,+CAAS,GAAG,eAAe,CAAC,SAAS,CAAC;IACtC,kDAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAC/C,iDAAW,GAAG,iBAAiB,CAAC;AAClD,CAAC,EAjDgB,qCAAqC,KAArC,qCAAqC,QAiDrD"}
|
|
@@ -6,11 +6,9 @@ import type { Verbatim } from '../../verbatim.ts';
|
|
|
6
6
|
import { Media } from '../../media.ts';
|
|
7
7
|
declare const NOMINAL: unique symbol;
|
|
8
8
|
export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
9
|
-
protected
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* @throws {@link VerbatimCodec.Request.Invalid}
|
|
13
|
-
*/
|
|
9
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
10
|
+
protected vdm: vdm;
|
|
11
|
+
constructor(options: MessageCodec.Options<fdm, vdm>);
|
|
14
12
|
decodeAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): MessageCodec.Message.Ai.From<fdm, vdm>;
|
|
15
13
|
protected encodeImageResolution(resolution: Media.Image.Resolution): OpenAI.Responses.ResponseInputImage['detail'];
|
|
16
14
|
encodeUserMessage(userMessage: RoleMessage.User.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
@@ -19,7 +17,7 @@ export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in
|
|
|
19
17
|
encodeChatMessage(chatMessage: Session.ChatMessage.From<fdm, vdm>): OpenAI.Responses.ResponseInput;
|
|
20
18
|
}
|
|
21
19
|
export declare namespace MessageCodec {
|
|
22
|
-
interface
|
|
20
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
23
21
|
toolCodec: ToolCodec<fdm>;
|
|
24
22
|
vdm: vdm;
|
|
25
23
|
}
|
|
@@ -1,45 +1,33 @@
|
|
|
1
1
|
import { RoleMessage } from "../../compatible-engine/session.js";
|
|
2
2
|
import { Function } from "../../function.js";
|
|
3
3
|
import * as VerbatimCodec from "../../verbatim/codec.js";
|
|
4
|
-
import { ResponseInvalid } from "../../engine.js";
|
|
5
4
|
import { Media } from "../../media.js";
|
|
6
5
|
const NOMINAL = Symbol();
|
|
7
6
|
export class MessageCodec {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
toolCodec;
|
|
8
|
+
vdm;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.toolCodec = options.toolCodec;
|
|
11
|
+
this.vdm = options.vdm;
|
|
11
12
|
}
|
|
12
|
-
/**
|
|
13
|
-
* @throws {@link VerbatimCodec.Request.Invalid}
|
|
14
|
-
*/
|
|
15
13
|
decodeAiMessage(output) {
|
|
16
|
-
const parts =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
const vrs = VerbatimCodec.Request.decode(text, this.ctx.vdm);
|
|
25
|
-
return [new RoleMessage.Part.Text(text, vrs)];
|
|
14
|
+
const parts = [];
|
|
15
|
+
for (const item of output)
|
|
16
|
+
if (item.type === 'message')
|
|
17
|
+
for (const part of item.content)
|
|
18
|
+
if (part.type === 'output_text') {
|
|
19
|
+
const vrs = VerbatimCodec.Request.decode(part.text, this.vdm);
|
|
20
|
+
parts.push(new RoleMessage.Part.Text(part.text, vrs));
|
|
26
21
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
throw e;
|
|
32
|
-
}
|
|
33
|
-
else
|
|
34
|
-
return [];
|
|
35
|
-
}
|
|
22
|
+
else if (part.type === 'refusal')
|
|
23
|
+
throw new SyntaxError('Refusal', { cause: output });
|
|
24
|
+
else
|
|
25
|
+
throw new Error();
|
|
36
26
|
else if (item.type === 'function_call')
|
|
37
|
-
|
|
38
|
-
else if (item.type === 'reasoning')
|
|
39
|
-
return [];
|
|
27
|
+
parts.push(this.toolCodec.decodeFunctionCall(item));
|
|
28
|
+
else if (item.type === 'reasoning') { }
|
|
40
29
|
else
|
|
41
30
|
throw new Error();
|
|
42
|
-
});
|
|
43
31
|
return new MessageCodec.Message.Ai(parts, output);
|
|
44
32
|
}
|
|
45
33
|
encodeImageResolution(resolution) {
|
|
@@ -56,58 +44,66 @@ export class MessageCodec {
|
|
|
56
44
|
}
|
|
57
45
|
encodeUserMessage(userMessage) {
|
|
58
46
|
const responseInput = [];
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
let content = [];
|
|
48
|
+
function flush() {
|
|
49
|
+
if (content.length) {
|
|
50
|
+
responseInput.push({
|
|
51
|
+
type: 'message',
|
|
52
|
+
role: 'user',
|
|
53
|
+
content,
|
|
54
|
+
});
|
|
55
|
+
content = [];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const part of userMessage.getParts()) {
|
|
62
59
|
if (part instanceof RoleMessage.Part.Text)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
else if (part instanceof Function.Response)
|
|
68
|
-
return [];
|
|
60
|
+
content.push({
|
|
61
|
+
type: 'input_text',
|
|
62
|
+
text: part.text,
|
|
63
|
+
});
|
|
69
64
|
else if (part instanceof Media.Image)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
content.push({
|
|
66
|
+
type: 'input_image',
|
|
67
|
+
image_url: `data:${part.mimeType};base64,${part.base64}`,
|
|
68
|
+
detail: this.encodeImageResolution(part.resolution),
|
|
69
|
+
});
|
|
75
70
|
else if (part instanceof Media.Pdf)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
content.push({
|
|
72
|
+
type: 'input_file',
|
|
73
|
+
file_data: `data:${part.mimeType};base64,${part.base64}`,
|
|
74
|
+
});
|
|
75
|
+
else if (part instanceof Function.Response) {
|
|
76
|
+
flush();
|
|
77
|
+
responseInput.push(this.toolCodec.encodeFunctionResponse(part));
|
|
78
|
+
}
|
|
80
79
|
else
|
|
81
80
|
throw new Error();
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
responseInput.push({
|
|
85
|
-
type: 'message',
|
|
86
|
-
role: 'user',
|
|
87
|
-
content,
|
|
88
|
-
});
|
|
81
|
+
}
|
|
82
|
+
flush();
|
|
89
83
|
return responseInput;
|
|
90
84
|
}
|
|
91
85
|
encodeAiMessage(aiMessage) {
|
|
92
|
-
if (aiMessage instanceof MessageCodec.Message.Ai)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
86
|
+
if (aiMessage instanceof MessageCodec.Message.Ai) {
|
|
87
|
+
const responseInput = aiMessage.getRaw();
|
|
88
|
+
if (responseInput.every(item => item.type !== 'computer_call_output')) { }
|
|
89
|
+
else
|
|
90
|
+
throw new Error('Computer calls are not supported yet.');
|
|
91
|
+
return responseInput;
|
|
92
|
+
}
|
|
93
|
+
const responseInput = [];
|
|
94
|
+
for (const part of aiMessage.getParts()) {
|
|
95
|
+
if (part instanceof RoleMessage.Part.Text)
|
|
96
|
+
responseInput.push({
|
|
97
|
+
role: 'assistant',
|
|
98
|
+
content: part.text,
|
|
99
|
+
});
|
|
100
|
+
else if (part instanceof Function.Call)
|
|
101
|
+
responseInput.push(this.toolCodec.encodeFunctionCall(part));
|
|
102
|
+
else
|
|
103
|
+
throw new Error();
|
|
104
|
+
}
|
|
105
|
+
;
|
|
106
|
+
return responseInput;
|
|
111
107
|
}
|
|
112
108
|
encodeDeveloperMessage(developerMessage) {
|
|
113
109
|
return developerMessage.getText();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-responses/message-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/openai-responses/message-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type InferenceParams, type ProviderSpec } from '../../engine.ts';
|
|
2
2
|
import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
|
|
3
3
|
import { Function } from '../../function.ts';
|
|
4
|
-
import
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
5
|
import { type InferenceContext } from '../../inference-context.ts';
|
|
6
6
|
import { Throttle } from '../../throttle.ts';
|
|
7
7
|
import type { MessageCodec } from './message-codec.ts';
|
|
@@ -11,16 +11,22 @@ import type { Verbatim } from '../../verbatim.ts';
|
|
|
11
11
|
import type { Structuring } from '../../compatible-engine/structuring.ts';
|
|
12
12
|
import type { Engine } from '../../engine.ts';
|
|
13
13
|
export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<RoleMessage.User.From<fdm>, RoleMessage.Ai.From<fdm, vdm>, RoleMessage.Developer, Session.From<fdm, vdm>> {
|
|
14
|
-
protected
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
protected
|
|
18
|
-
protected
|
|
14
|
+
protected client: OpenAI;
|
|
15
|
+
inferenceParams: InferenceParams;
|
|
16
|
+
protected providerSpec: ProviderSpec;
|
|
17
|
+
protected fdm: fdm;
|
|
18
|
+
protected throttle: Throttle;
|
|
19
|
+
protected choice: Structuring.Choice.From<fdm, vdm>;
|
|
20
|
+
protected messageCodec: MessageCodec<fdm, vdm>;
|
|
21
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
22
|
+
protected billing: Billing;
|
|
23
|
+
constructor(options: Transport.Options<fdm, vdm>);
|
|
24
|
+
protected makeParams(session: Session.From<fdm, vdm>): OpenAI.Responses.ResponseCreateParamsStreaming;
|
|
19
25
|
fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
20
26
|
}
|
|
21
27
|
export declare namespace Transport {
|
|
22
|
-
interface
|
|
23
|
-
|
|
28
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
29
|
+
inferenceParams: InferenceParams;
|
|
24
30
|
providerSpec: ProviderSpec;
|
|
25
31
|
fdm: fdm;
|
|
26
32
|
throttle: Throttle;
|