@zimtsui/typechat 0.0.98 → 0.0.100
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 +3 -8
- package/README.md +5 -177
- package/assets/verbatim/instruction.md +10 -6
- package/assets/verbatim/response.handlebars +1 -1
- package/build/adaptor.d.ts +9 -9
- package/build/adaptor.js +15 -17
- package/build/adaptor.js.map +1 -1
- package/build/endpoint-spec.d.ts +1 -1
- package/build/endpoint-spec.js +1 -1
- package/build/engine/message.d.ts +75 -0
- package/build/engine/message.js +165 -0
- package/build/engine/message.js.map +1 -0
- package/build/engine/middleware.d.ts +11 -0
- package/build/engine/middleware.js +1 -0
- package/build/engine/middleware.js.map +1 -0
- package/build/engine/parts-validator.d.ts +9 -0
- package/build/engine/parts-validator.js +11 -0
- package/build/engine/parts-validator.js.map +1 -0
- package/build/engine/recoverable.d.ts +13 -0
- package/build/engine/recoverable.js +29 -0
- package/build/engine/recoverable.js.map +1 -0
- package/build/engine/session.d.ts +8 -32
- package/build/engine/session.js +0 -19
- package/build/engine/session.js.map +1 -1
- package/build/engine/structuring-validator.d.ts +15 -0
- package/build/engine/structuring-validator.js +64 -0
- package/build/engine/structuring-validator.js.map +1 -0
- package/build/engine/transport.d.ts +6 -3
- package/build/engine.d.ts +40 -39
- package/build/engine.js +100 -64
- package/build/engine.js.map +1 -1
- package/build/engines/anthropic/billing.js.map +1 -0
- package/build/engines/anthropic/message-codec.d.ts +22 -0
- package/build/engines/anthropic/message-codec.js +79 -0
- package/build/engines/anthropic/message-codec.js.map +1 -0
- package/build/engines/anthropic/message.d.ts +22 -0
- package/build/engines/anthropic/message.js +25 -0
- package/build/engines/anthropic/message.js.map +1 -0
- package/build/{compatible-engine.d/anthropic/choice-codec.d.ts → engines/anthropic/structuring-choice-codec.d.ts} +2 -2
- package/build/engines/anthropic/structuring-choice-codec.js +23 -0
- package/build/engines/anthropic/structuring-choice-codec.js.map +1 -0
- package/build/{api-types → engines}/anthropic/tool-codec.d.ts +5 -4
- package/build/{api-types → engines}/anthropic/tool-codec.js +16 -14
- package/build/engines/anthropic/tool-codec.js.map +1 -0
- package/build/engines/anthropic/transport.d.ts +37 -0
- package/build/{compatible-engine.d → engines}/anthropic/transport.js +8 -12
- package/build/engines/anthropic/transport.js.map +1 -0
- package/build/engines/anthropic.d.ts +22 -0
- package/build/engines/anthropic.js +46 -0
- package/build/engines/anthropic.js.map +1 -0
- package/build/engines/google/billing.js.map +1 -0
- package/build/engines/google/message-codec.d.ts +24 -0
- package/build/engines/google/message-codec.js +113 -0
- package/build/engines/google/message-codec.js.map +1 -0
- package/build/engines/google/message.d.ts +37 -0
- package/build/engines/google/message.js +58 -0
- package/build/engines/google/message.js.map +1 -0
- package/build/engines/google/restful-request.js.map +1 -0
- package/build/{compatible-engine.d/google/choice-codec.d.ts → engines/google/structuring-choice-codec.d.ts} +2 -2
- package/build/engines/google/structuring-choice-codec.js +23 -0
- package/build/engines/google/structuring-choice-codec.js.map +1 -0
- package/build/{api-types → engines}/google/tool-codec.d.ts +5 -4
- package/build/{api-types → engines}/google/tool-codec.js +15 -13
- package/build/engines/google/tool-codec.js.map +1 -0
- package/build/{native-engines.d → engines}/google/transport.d.ts +13 -14
- package/build/{native-engines.d → engines}/google/transport.js +18 -13
- package/build/engines/google/transport.js.map +1 -0
- package/build/engines/google.d.ts +41 -0
- package/build/engines/google.js +151 -0
- package/build/engines/google.js.map +1 -0
- package/build/engines/openai-chatcompletions/billing.js.map +1 -0
- package/build/engines/openai-chatcompletions/message-codec.d.ts +22 -0
- package/build/engines/openai-chatcompletions/message-codec.js +80 -0
- package/build/engines/openai-chatcompletions/message-codec.js.map +1 -0
- package/build/{compatible-engine.d/openai-chatcompletions/choice-codec.d.ts → engines/openai-chatcompletions/structuring-choice-codec.d.ts} +2 -2
- package/build/engines/openai-chatcompletions/structuring-choice-codec.js +22 -0
- package/build/engines/openai-chatcompletions/structuring-choice-codec.js.map +1 -0
- package/build/engines/openai-chatcompletions/tool-codec.d.ts +17 -0
- package/build/{api-types → engines}/openai-chatcompletions/tool-codec.js +19 -17
- package/build/engines/openai-chatcompletions/tool-codec.js.map +1 -0
- package/build/{compatible-engine.d → engines}/openai-chatcompletions/transport.d.ts +13 -15
- package/build/{compatible-engine.d → engines}/openai-chatcompletions/transport.js +8 -18
- package/build/engines/openai-chatcompletions/transport.js.map +1 -0
- package/build/engines/openai-chatcompletions.d.ts +22 -0
- package/build/engines/openai-chatcompletions.js +48 -0
- package/build/engines/openai-chatcompletions.js.map +1 -0
- package/build/engines/openai-responses/billing.js.map +1 -0
- package/build/engines/openai-responses/message-codec.d.ts +24 -0
- package/build/{compatible-engine.d → engines}/openai-responses/message-codec.js +55 -51
- package/build/engines/openai-responses/message-codec.js.map +1 -0
- package/build/engines/openai-responses/message.d.ts +25 -0
- package/build/engines/openai-responses/message.js +43 -0
- package/build/engines/openai-responses/message.js.map +1 -0
- package/build/engines/openai-responses/structuring-choice-codec.d.ts +3 -0
- package/build/engines/openai-responses/structuring-choice-codec.js +22 -0
- package/build/engines/openai-responses/structuring-choice-codec.js.map +1 -0
- package/build/engines/openai-responses/structuring-validator.d.ts +12 -0
- package/build/engines/openai-responses/structuring-validator.js +64 -0
- package/build/engines/openai-responses/structuring-validator.js.map +1 -0
- package/build/engines/openai-responses/tool-codec.d.ts +17 -0
- package/build/{api-types → engines}/openai-responses/tool-codec.js +19 -17
- package/build/engines/openai-responses/tool-codec.js.map +1 -0
- package/build/{native-engines.d → engines}/openai-responses/tool.d.ts +1 -3
- package/build/{native-engines.d → engines}/openai-responses/tool.js +3 -3
- package/build/engines/openai-responses/tool.js.map +1 -0
- package/build/{compatible-engine.d → engines}/openai-responses/transport.d.ts +16 -12
- package/build/{native-engines.d → engines}/openai-responses/transport.js +11 -9
- package/build/engines/openai-responses/transport.js.map +1 -0
- package/build/engines/openai-responses.d.ts +41 -0
- package/build/engines/openai-responses.js +134 -0
- package/build/engines/openai-responses.js.map +1 -0
- package/build/exports.d.ts +5 -5
- package/build/exports.js +5 -5
- package/build/exports.js.map +1 -1
- package/build/function.d.ts +7 -7
- package/build/function.js +19 -19
- package/build/function.js.map +1 -1
- package/build/repetition.d.ts +2 -2
- package/build/repetition.js +21 -20
- package/build/repetition.js.map +1 -1
- package/build/structuring-choice.d.ts +15 -0
- package/build/structuring-choice.js +18 -0
- package/build/structuring-choice.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/verbatim/codec/declarations.js +0 -2
- package/build/verbatim/codec/declarations.js.map +1 -1
- package/build/verbatim/codec/quotation.js +0 -3
- package/build/verbatim/codec/quotation.js.map +1 -1
- package/build/verbatim/codec/request.js +4 -4
- package/build/verbatim/codec/request.js.map +1 -1
- package/build/verbatim/codec/response.js +0 -3
- package/build/verbatim/codec/response.js.map +1 -1
- package/package.json +2 -4
- package/build/api-types/anthropic/billing.js.map +0 -1
- package/build/api-types/anthropic/tool-codec.js.map +0 -1
- package/build/api-types/google/billing.js.map +0 -1
- package/build/api-types/google/restful-request.js.map +0 -1
- package/build/api-types/google/tool-codec.js.map +0 -1
- package/build/api-types/openai-chatcompletions/billing.js.map +0 -1
- package/build/api-types/openai-chatcompletions/tool-codec.d.ts +0 -16
- package/build/api-types/openai-chatcompletions/tool-codec.js.map +0 -1
- package/build/api-types/openai-responses/billing.js.map +0 -1
- package/build/api-types/openai-responses/tool-codec.d.ts +0 -16
- package/build/api-types/openai-responses/tool-codec.js.map +0 -1
- package/build/compatible-engine/session.d.ts +0 -56
- package/build/compatible-engine/session.js +0 -85
- package/build/compatible-engine/session.js.map +0 -1
- package/build/compatible-engine/structuring.d.ts +0 -36
- package/build/compatible-engine/structuring.js +0 -34
- package/build/compatible-engine/structuring.js.map +0 -1
- package/build/compatible-engine/validation.d.ts +0 -28
- package/build/compatible-engine/validation.js +0 -104
- package/build/compatible-engine/validation.js.map +0 -1
- package/build/compatible-engine.d/agentloop.d.ts +0 -12
- package/build/compatible-engine.d/agentloop.js +0 -52
- package/build/compatible-engine.d/agentloop.js.map +0 -1
- package/build/compatible-engine.d/anthropic/choice-codec.js +0 -27
- package/build/compatible-engine.d/anthropic/choice-codec.js.map +0 -1
- package/build/compatible-engine.d/anthropic/message-codec.d.ts +0 -34
- package/build/compatible-engine.d/anthropic/message-codec.js +0 -85
- package/build/compatible-engine.d/anthropic/message-codec.js.map +0 -1
- package/build/compatible-engine.d/anthropic/transport.d.ts +0 -38
- package/build/compatible-engine.d/anthropic/transport.js.map +0 -1
- package/build/compatible-engine.d/anthropic.d.ts +0 -25
- package/build/compatible-engine.d/anthropic.js +0 -47
- package/build/compatible-engine.d/anthropic.js.map +0 -1
- package/build/compatible-engine.d/google/choice-codec.js +0 -27
- package/build/compatible-engine.d/google/choice-codec.js.map +0 -1
- package/build/compatible-engine.d/google/message-codec.d.ts +0 -34
- package/build/compatible-engine.d/google/message-codec.js +0 -95
- package/build/compatible-engine.d/google/message-codec.js.map +0 -1
- package/build/compatible-engine.d/google/transport.d.ts +0 -35
- package/build/compatible-engine.d/google/transport.js +0 -97
- package/build/compatible-engine.d/google/transport.js.map +0 -1
- package/build/compatible-engine.d/google.d.ts +0 -25
- package/build/compatible-engine.d/google.js +0 -64
- package/build/compatible-engine.d/google.js.map +0 -1
- package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js +0 -31
- package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js.map +0 -1
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.d.ts +0 -22
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.js +0 -68
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.js.map +0 -1
- package/build/compatible-engine.d/openai-chatcompletions/transport.js.map +0 -1
- package/build/compatible-engine.d/openai-chatcompletions.d.ts +0 -25
- package/build/compatible-engine.d/openai-chatcompletions.js +0 -49
- package/build/compatible-engine.d/openai-chatcompletions.js.map +0 -1
- package/build/compatible-engine.d/openai-responses/choice-codec.d.ts +0 -5
- package/build/compatible-engine.d/openai-responses/choice-codec.js +0 -30
- package/build/compatible-engine.d/openai-responses/choice-codec.js.map +0 -1
- package/build/compatible-engine.d/openai-responses/message-codec.d.ts +0 -36
- package/build/compatible-engine.d/openai-responses/message-codec.js.map +0 -1
- package/build/compatible-engine.d/openai-responses/transport.js +0 -91
- package/build/compatible-engine.d/openai-responses/transport.js.map +0 -1
- package/build/compatible-engine.d/openai-responses.d.ts +0 -25
- package/build/compatible-engine.d/openai-responses.js +0 -47
- package/build/compatible-engine.d/openai-responses.js.map +0 -1
- package/build/compatible-engine.d.ts +0 -27
- package/build/compatible-engine.js +0 -34
- package/build/compatible-engine.js.map +0 -1
- package/build/engine/validation.d.ts +0 -6
- package/build/engine/validation.js +0 -1
- package/build/engine/validation.js.map +0 -1
- package/build/native-engines.d/google/message-codec.d.ts +0 -26
- package/build/native-engines.d/google/message-codec.js +0 -70
- package/build/native-engines.d/google/message-codec.js.map +0 -1
- package/build/native-engines.d/google/session.d.ts +0 -58
- package/build/native-engines.d/google/session.js +0 -101
- package/build/native-engines.d/google/session.js.map +0 -1
- package/build/native-engines.d/google/transport.js.map +0 -1
- package/build/native-engines.d/google/validation.d.ts +0 -28
- package/build/native-engines.d/google/validation.js +0 -26
- package/build/native-engines.d/google/validation.js.map +0 -1
- package/build/native-engines.d/google.d/agentloop.d.ts +0 -12
- package/build/native-engines.d/google.d/agentloop.js +0 -57
- package/build/native-engines.d/google.d/agentloop.js.map +0 -1
- package/build/native-engines.d/google.d/exports.d.ts +0 -2
- package/build/native-engines.d/google.d/exports.js +0 -3
- package/build/native-engines.d/google.d/exports.js.map +0 -1
- package/build/native-engines.d/google.d.ts +0 -44
- package/build/native-engines.d/google.js +0 -100
- package/build/native-engines.d/google.js.map +0 -1
- package/build/native-engines.d/openai-responses/choice-codec.d.ts +0 -5
- package/build/native-engines.d/openai-responses/choice-codec.js +0 -30
- package/build/native-engines.d/openai-responses/choice-codec.js.map +0 -1
- package/build/native-engines.d/openai-responses/message-codec.d.ts +0 -25
- package/build/native-engines.d/openai-responses/message-codec.js +0 -99
- package/build/native-engines.d/openai-responses/message-codec.js.map +0 -1
- package/build/native-engines.d/openai-responses/session.d.ts +0 -61
- package/build/native-engines.d/openai-responses/session.js +0 -86
- package/build/native-engines.d/openai-responses/session.js.map +0 -1
- package/build/native-engines.d/openai-responses/structuring.d.ts +0 -19
- package/build/native-engines.d/openai-responses/structuring.js +0 -19
- package/build/native-engines.d/openai-responses/structuring.js.map +0 -1
- package/build/native-engines.d/openai-responses/tool.js.map +0 -1
- package/build/native-engines.d/openai-responses/transport.d.ts +0 -40
- package/build/native-engines.d/openai-responses/transport.js.map +0 -1
- package/build/native-engines.d/openai-responses/validation.d.ts +0 -28
- package/build/native-engines.d/openai-responses/validation.js +0 -101
- package/build/native-engines.d/openai-responses/validation.js.map +0 -1
- package/build/native-engines.d/openai-responses.d/agentloop.d.ts +0 -12
- package/build/native-engines.d/openai-responses.d/agentloop.js +0 -61
- package/build/native-engines.d/openai-responses.d/agentloop.js.map +0 -1
- package/build/native-engines.d/openai-responses.d/exports.d.ts +0 -2
- package/build/native-engines.d/openai-responses.d/exports.js +0 -3
- package/build/native-engines.d/openai-responses.d/exports.js.map +0 -1
- package/build/native-engines.d/openai-responses.d.ts +0 -46
- package/build/native-engines.d/openai-responses.js +0 -82
- package/build/native-engines.d/openai-responses.js.map +0 -1
- /package/build/{api-types → engines}/anthropic/billing.d.ts +0 -0
- /package/build/{api-types → engines}/anthropic/billing.js +0 -0
- /package/build/{api-types → engines}/google/billing.d.ts +0 -0
- /package/build/{api-types → engines}/google/billing.js +0 -0
- /package/build/{api-types → engines}/google/restful-request.d.ts +0 -0
- /package/build/{api-types → engines}/google/restful-request.js +0 -0
- /package/build/{api-types → engines}/openai-chatcompletions/billing.d.ts +0 -0
- /package/build/{api-types → engines}/openai-chatcompletions/billing.js +0 -0
- /package/build/{api-types → engines}/openai-responses/billing.d.ts +0 -0
- /package/build/{api-types → engines}/openai-responses/billing.js +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as Google from '@google/genai';
|
|
2
2
|
import * as Undici from 'undici';
|
|
3
3
|
import { loggers } from "../../telemetry.js";
|
|
4
|
-
import * as ChoiceCodec from "
|
|
4
|
+
import * as ChoiceCodec from "./structuring-choice-codec.js";
|
|
5
5
|
import { MIMEType } from 'whatwg-mimetype';
|
|
6
|
-
export class
|
|
6
|
+
export class Transport {
|
|
7
7
|
apiURL;
|
|
8
8
|
inferenceParams;
|
|
9
9
|
providerSpec;
|
|
10
10
|
fdm;
|
|
11
11
|
throttle;
|
|
12
|
-
|
|
12
|
+
structuringChoice;
|
|
13
13
|
codeExecution;
|
|
14
14
|
urlContext;
|
|
15
15
|
googleSearch;
|
|
@@ -22,7 +22,7 @@ export class GoogleNativeTransport {
|
|
|
22
22
|
this.providerSpec = options.providerSpec;
|
|
23
23
|
this.fdm = options.fdm;
|
|
24
24
|
this.throttle = options.throttle;
|
|
25
|
-
this.
|
|
25
|
+
this.structuringChoice = options.structuringChoice;
|
|
26
26
|
this.codeExecution = options.codeExecution;
|
|
27
27
|
this.urlContext = options.urlContext;
|
|
28
28
|
this.googleSearch = options.googleSearch;
|
|
@@ -31,13 +31,14 @@ export class GoogleNativeTransport {
|
|
|
31
31
|
this.billing = options.billing;
|
|
32
32
|
}
|
|
33
33
|
async fetch(wfctx, session, signal) {
|
|
34
|
+
await this.throttle.requests(wfctx);
|
|
35
|
+
// Prepare request body
|
|
34
36
|
const systemInstruction = session.developerMessage && this.messageCodec.encodeDeveloperMessage(session.developerMessage);
|
|
35
37
|
const contents = this.messageCodec.encodeChatMessages(session.chatMessages);
|
|
36
|
-
|
|
37
|
-
const apifds = this.toolCodec.encodeFunctionDeclarationMap(this.fdm);
|
|
38
|
+
const apiFds = this.toolCodec.encodeFunctionDeclarationMap();
|
|
38
39
|
const apiTools = [];
|
|
39
|
-
if (
|
|
40
|
-
apiTools.push({ functionDeclarations:
|
|
40
|
+
if (apiFds.length)
|
|
41
|
+
apiTools.push({ functionDeclarations: apiFds });
|
|
41
42
|
if (this.urlContext)
|
|
42
43
|
apiTools.push({ urlContext: {} });
|
|
43
44
|
if (this.googleSearch)
|
|
@@ -45,8 +46,8 @@ export class GoogleNativeTransport {
|
|
|
45
46
|
if (this.codeExecution)
|
|
46
47
|
apiTools.push({ codeExecution: {} });
|
|
47
48
|
const apiToolConfig = {};
|
|
48
|
-
if (
|
|
49
|
-
apiToolConfig.functionCallingConfig = ChoiceCodec.encode(this.
|
|
49
|
+
if (apiFds.length)
|
|
50
|
+
apiToolConfig.functionCallingConfig = ChoiceCodec.encode(this.structuringChoice);
|
|
50
51
|
const reqbody = {
|
|
51
52
|
contents,
|
|
52
53
|
tools: apiTools.length ? apiTools : undefined,
|
|
@@ -55,6 +56,7 @@ export class GoogleNativeTransport {
|
|
|
55
56
|
generationConfig: this.inferenceParams.additionalOptions,
|
|
56
57
|
};
|
|
57
58
|
loggers.message.debug(reqbody);
|
|
59
|
+
// Send request
|
|
58
60
|
const res = await Undici.fetch(this.apiURL, {
|
|
59
61
|
method: 'POST',
|
|
60
62
|
headers: {
|
|
@@ -66,6 +68,7 @@ export class GoogleNativeTransport {
|
|
|
66
68
|
signal,
|
|
67
69
|
});
|
|
68
70
|
loggers.message.debug(res);
|
|
71
|
+
// Get response
|
|
69
72
|
if (res.ok) { }
|
|
70
73
|
else {
|
|
71
74
|
const contentType = res.headers.get('Content-Type');
|
|
@@ -81,6 +84,8 @@ export class GoogleNativeTransport {
|
|
|
81
84
|
throw new Error(res.statusText, { cause: res });
|
|
82
85
|
}
|
|
83
86
|
const response = await res.json();
|
|
87
|
+
loggers.message.debug(response);
|
|
88
|
+
// Validate response
|
|
84
89
|
if (response.candidates?.[0]?.content?.parts?.length) { }
|
|
85
90
|
else
|
|
86
91
|
throw new SyntaxError('Content missing', { cause: response });
|
|
@@ -89,15 +94,15 @@ export class GoogleNativeTransport {
|
|
|
89
94
|
if (response.candidates[0].finishReason === Google.FinishReason.STOP) { }
|
|
90
95
|
else
|
|
91
96
|
throw new SyntaxError('Abnormal finish reason', { cause: response });
|
|
97
|
+
if (response.usageMetadata) { }
|
|
98
|
+
else
|
|
99
|
+
throw new SyntaxError('Usage metadata missing', { cause: response });
|
|
92
100
|
for (const part of response.candidates[0].content.parts) {
|
|
93
101
|
if (part.text)
|
|
94
102
|
loggers.inference.info(part.text);
|
|
95
103
|
if (part.functionCall)
|
|
96
104
|
loggers.message.info(part.functionCall);
|
|
97
105
|
}
|
|
98
|
-
if (response.usageMetadata) { }
|
|
99
|
-
else
|
|
100
|
-
throw new SyntaxError('Usage metadata missing', { cause: response });
|
|
101
106
|
wfctx.cost?.(this.billing.charge(response.usageMetadata));
|
|
102
107
|
return this.messageCodec.decodeAiMessage(response.candidates[0].content);
|
|
103
108
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/engines/google/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Engine, Middleware } from '../engine.ts';
|
|
2
|
+
import { Function } from '../function.ts';
|
|
3
|
+
import { Verbatim } from '../verbatim.ts';
|
|
4
|
+
import { MessageCodec } from './google/message-codec.ts';
|
|
5
|
+
import { ToolCodec } from './google/tool-codec.ts';
|
|
6
|
+
import { Billing } from './google/billing.ts';
|
|
7
|
+
import { Transport } from './google/transport.ts';
|
|
8
|
+
import { InferenceContext } from '../inference-context.ts';
|
|
9
|
+
import * as MessageModule from './google/message.ts';
|
|
10
|
+
export type GoogleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = GoogleEngine.Instance<fdm, vdm>;
|
|
11
|
+
export declare namespace GoogleEngine {
|
|
12
|
+
class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends Engine.Instance<fdm, vdm> {
|
|
13
|
+
protected options: GoogleEngine.Options<fdm, vdm>;
|
|
14
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
15
|
+
protected messageCodec: MessageCodec<fdm, vdm>;
|
|
16
|
+
protected billing: Billing;
|
|
17
|
+
protected transport: Transport<fdm, vdm>;
|
|
18
|
+
protected structuringValidator: Engine.StructuringValidator.From<fdm, vdm>;
|
|
19
|
+
protected codeExecution: boolean;
|
|
20
|
+
protected urlContext: boolean;
|
|
21
|
+
protected googleSearch: boolean;
|
|
22
|
+
constructor(options: GoogleEngine.Options<fdm, vdm>);
|
|
23
|
+
clone(): GoogleEngine<fdm, vdm>;
|
|
24
|
+
protected infer(wfctx: InferenceContext, session: Engine.Session.From<fdm, vdm>): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
25
|
+
stateless(wfctx: InferenceContext, session: Engine.Session.From<fdm, vdm>): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
26
|
+
stateful(wfctx: InferenceContext, session: Engine.Session.From<fdm, vdm>): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
27
|
+
useStateless(middleware: Middleware.From<fdm, vdm>): GoogleEngine<fdm, vdm>;
|
|
28
|
+
useStateful(middleware: Middleware.From<fdm, vdm>): GoogleEngine<fdm, vdm>;
|
|
29
|
+
/**
|
|
30
|
+
* @param session mutable
|
|
31
|
+
*/
|
|
32
|
+
agentloop(wfctx: InferenceContext, session: Engine.Session.From<fdm, vdm>, fnm: Function.Map<fdm>, vhm: Verbatim.Handler.Map<vdm>, limit?: number): AsyncGenerator<string, string, void>;
|
|
33
|
+
}
|
|
34
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends Engine.Options<fdm, vdm> {
|
|
35
|
+
codeExecution?: boolean;
|
|
36
|
+
urlContext?: boolean;
|
|
37
|
+
googleSearch?: boolean;
|
|
38
|
+
}
|
|
39
|
+
const create: Engine.Create;
|
|
40
|
+
export import RoleMessage = MessageModule.RoleMessage;
|
|
41
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Engine } from "../engine.js";
|
|
2
|
+
import { Function } from "../function.js";
|
|
3
|
+
import { MessageCodec } from "./google/message-codec.js";
|
|
4
|
+
import { ToolCodec } from "./google/tool-codec.js";
|
|
5
|
+
import { Billing } from "./google/billing.js";
|
|
6
|
+
import { env } from 'node:process';
|
|
7
|
+
import { Agent, ProxyAgent } from 'undici';
|
|
8
|
+
import { StructuringValidator } from "../engine/structuring-validator.js";
|
|
9
|
+
import { Transport } from "./google/transport.js";
|
|
10
|
+
import * as MessageModule from "./google/message.js";
|
|
11
|
+
export var GoogleEngine;
|
|
12
|
+
(function (GoogleEngine) {
|
|
13
|
+
class Instance extends Engine.Instance {
|
|
14
|
+
options;
|
|
15
|
+
toolCodec;
|
|
16
|
+
messageCodec;
|
|
17
|
+
billing;
|
|
18
|
+
transport;
|
|
19
|
+
structuringValidator;
|
|
20
|
+
codeExecution;
|
|
21
|
+
urlContext;
|
|
22
|
+
googleSearch;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
super(options);
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.codeExecution = options.codeExecution ?? false;
|
|
27
|
+
this.urlContext = options.urlContext ?? false;
|
|
28
|
+
this.googleSearch = options.googleSearch ?? false;
|
|
29
|
+
const proxyUrl = options.endpointSpec.proxy || env.https_proxy || env.HTTPS_PROXY;
|
|
30
|
+
this.providerSpecs.dispatcher = proxyUrl
|
|
31
|
+
? new ProxyAgent({
|
|
32
|
+
uri: proxyUrl,
|
|
33
|
+
headersTimeout: 0,
|
|
34
|
+
bodyTimeout: 0,
|
|
35
|
+
})
|
|
36
|
+
: new Agent({
|
|
37
|
+
headersTimeout: 0,
|
|
38
|
+
bodyTimeout: 0,
|
|
39
|
+
});
|
|
40
|
+
if (options.endpointSpec.parallelToolCall === false)
|
|
41
|
+
throw new Error('Parallel tool calling is required by Google engine.');
|
|
42
|
+
this.toolCodec = new ToolCodec({
|
|
43
|
+
fdm: this.fdm,
|
|
44
|
+
});
|
|
45
|
+
this.messageCodec = new MessageCodec({
|
|
46
|
+
toolCodec: this.toolCodec,
|
|
47
|
+
vdm: this.vdm,
|
|
48
|
+
codeExecution: this.codeExecution,
|
|
49
|
+
});
|
|
50
|
+
this.billing = new Billing({ pricing: this.pricing });
|
|
51
|
+
this.transport = new Transport({
|
|
52
|
+
inferenceParams: this.inferenceOptions,
|
|
53
|
+
providerSpec: this.providerSpecs,
|
|
54
|
+
fdm: this.fdm,
|
|
55
|
+
throttle: this.throttle,
|
|
56
|
+
structuringChoice: this.structuringChoice,
|
|
57
|
+
codeExecution: this.codeExecution,
|
|
58
|
+
urlContext: this.urlContext,
|
|
59
|
+
googleSearch: this.googleSearch,
|
|
60
|
+
messageCodec: this.messageCodec,
|
|
61
|
+
toolCodec: this.toolCodec,
|
|
62
|
+
billing: this.billing,
|
|
63
|
+
});
|
|
64
|
+
this.structuringValidator = new StructuringValidator({ structuringChoice: this.structuringChoice });
|
|
65
|
+
}
|
|
66
|
+
clone() {
|
|
67
|
+
const engine = new GoogleEngine.Instance(this.options);
|
|
68
|
+
engine.middlewaresStateless = [...this.middlewaresStateless];
|
|
69
|
+
engine.middlewaresStateful = [...this.middlewaresStateful];
|
|
70
|
+
return engine;
|
|
71
|
+
}
|
|
72
|
+
async infer(wfctx, session) {
|
|
73
|
+
return await super.infer(wfctx, session);
|
|
74
|
+
}
|
|
75
|
+
async stateless(wfctx, session) {
|
|
76
|
+
return await super.stateless(wfctx, session);
|
|
77
|
+
}
|
|
78
|
+
async stateful(wfctx, session) {
|
|
79
|
+
return await super.stateful(wfctx, session);
|
|
80
|
+
}
|
|
81
|
+
useStateless(middleware) {
|
|
82
|
+
return super.useStateless(middleware);
|
|
83
|
+
}
|
|
84
|
+
useStateful(middleware) {
|
|
85
|
+
return super.useStateful(middleware);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @param session mutable
|
|
89
|
+
*/
|
|
90
|
+
async *agentloop(wfctx, session, fnm, vhm, limit = Number.POSITIVE_INFINITY) {
|
|
91
|
+
for (let i = 0; i < limit; i++) {
|
|
92
|
+
const response = await this.stateful(wfctx, session);
|
|
93
|
+
if (response.allChat())
|
|
94
|
+
return response.getChat();
|
|
95
|
+
const pfress = [];
|
|
96
|
+
const pvress = [];
|
|
97
|
+
for (const part of response.getParts()) {
|
|
98
|
+
if (part instanceof Engine.RoleMessage.Ai.Part.Text) {
|
|
99
|
+
const textPart = part;
|
|
100
|
+
yield textPart.text;
|
|
101
|
+
for (const vreq of textPart.vreqs) {
|
|
102
|
+
const vh = vhm[vreq.name];
|
|
103
|
+
pvress.push((async () => new GoogleEngine.RoleMessage.User.Part.Text(await vh.call(vhm, vreq.args)))());
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (part instanceof Function.Call) {
|
|
107
|
+
const fcall = part;
|
|
108
|
+
const f = fnm[fcall.name];
|
|
109
|
+
pfress.push((async () => {
|
|
110
|
+
try {
|
|
111
|
+
return Function.Response.Successful.of({
|
|
112
|
+
id: fcall.id,
|
|
113
|
+
name: fcall.name,
|
|
114
|
+
text: await f.call(fnm, fcall.args),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
if (e instanceof Function.Error) { }
|
|
119
|
+
else
|
|
120
|
+
throw e;
|
|
121
|
+
return Function.Response.Failed.of({
|
|
122
|
+
id: fcall.id,
|
|
123
|
+
name: fcall.name,
|
|
124
|
+
error: e.message,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
})());
|
|
128
|
+
}
|
|
129
|
+
else if (part instanceof GoogleEngine.RoleMessage.Ai.Part.ExecutableCode) {
|
|
130
|
+
yield GoogleEngine.RoleMessage.Ai.encodeExecutableCodePart(part);
|
|
131
|
+
}
|
|
132
|
+
else if (part instanceof GoogleEngine.RoleMessage.Ai.Part.CodeExecutionResult) {
|
|
133
|
+
yield GoogleEngine.RoleMessage.Ai.encodeCodeExecutionResultPart(part);
|
|
134
|
+
}
|
|
135
|
+
else
|
|
136
|
+
throw new Error();
|
|
137
|
+
}
|
|
138
|
+
const fress = await Promise.all(pfress);
|
|
139
|
+
const vress = await Promise.all(pvress);
|
|
140
|
+
session.chatMessages.push(new GoogleEngine.RoleMessage.User([...fress, ...vress]));
|
|
141
|
+
}
|
|
142
|
+
throw new Engine.FunctionCallLimitExceeded('Function call limit exceeded.');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
GoogleEngine.Instance = Instance;
|
|
146
|
+
GoogleEngine.create = function (options) {
|
|
147
|
+
return new Instance(options);
|
|
148
|
+
};
|
|
149
|
+
GoogleEngine.RoleMessage = MessageModule.RoleMessage;
|
|
150
|
+
})(GoogleEngine || (GoogleEngine = {}));
|
|
151
|
+
//# sourceMappingURL=google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/engines/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/billing.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,OAAO;IACN,OAAO,CAAU;IAC3B,YAAmB,OAAwB;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,KAA6B;QACvC,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,aAAa,IAAI,CAAC,CAAC;QAC3E,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,GAAG,kBAAkB,CAAC;QACrE,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACnD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YAClD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAC3D,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Engine } from '../../engine.ts';
|
|
2
|
+
import { Function } from '../../function.ts';
|
|
3
|
+
import OpenAI from 'openai';
|
|
4
|
+
import type { ToolCodec } from './tool-codec.ts';
|
|
5
|
+
import type { Verbatim } from '../../verbatim.ts';
|
|
6
|
+
export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
7
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
8
|
+
protected vdm: vdm;
|
|
9
|
+
constructor(options: MessageCodec.Options<fdm, vdm>);
|
|
10
|
+
decodeAiMessage(message: OpenAI.ChatCompletionMessage): Engine.RoleMessage.Ai.From<fdm, vdm>;
|
|
11
|
+
encodeDeveloperMessage(developerMessage: Engine.RoleMessage.Developer): OpenAI.ChatCompletionSystemMessageParam;
|
|
12
|
+
encodeUserMessage(userMessage: Engine.RoleMessage.User.From<fdm>): [OpenAI.ChatCompletionUserMessageParam] | OpenAI.ChatCompletionToolMessageParam[];
|
|
13
|
+
encodeAiMessage(aiMessage: Engine.RoleMessage.Ai.From<fdm, vdm>): OpenAI.ChatCompletionAssistantMessageParam;
|
|
14
|
+
encodeRoleMessage(roleMessage: Engine.Session.ChatMessage.From<fdm, vdm> | Engine.RoleMessage.Developer): OpenAI.ChatCompletionMessageParam[];
|
|
15
|
+
encodeRoleMessages(chatMessages: (Engine.Session.ChatMessage.From<fdm, vdm> | Engine.RoleMessage.Developer)[]): OpenAI.ChatCompletionMessageParam[];
|
|
16
|
+
}
|
|
17
|
+
export declare namespace MessageCodec {
|
|
18
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
19
|
+
toolCodec: ToolCodec<fdm>;
|
|
20
|
+
vdm: vdm;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Engine } from "../../engine.js";
|
|
2
|
+
import { Function } from "../../function.js";
|
|
3
|
+
import * as VerbatimCodec from "../../verbatim/codec.js";
|
|
4
|
+
export class MessageCodec {
|
|
5
|
+
toolCodec;
|
|
6
|
+
vdm;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.toolCodec = options.toolCodec;
|
|
9
|
+
this.vdm = options.vdm;
|
|
10
|
+
}
|
|
11
|
+
decodeAiMessage(message) {
|
|
12
|
+
const parts = [];
|
|
13
|
+
if (message.content) {
|
|
14
|
+
const vreqs = VerbatimCodec.Request.decode(message.content, this.vdm);
|
|
15
|
+
parts.push(new Engine.RoleMessage.Ai.Part.Text(message.content, vreqs));
|
|
16
|
+
}
|
|
17
|
+
if (message.tool_calls)
|
|
18
|
+
for (const apifc of message.tool_calls)
|
|
19
|
+
if (apifc.type === 'function')
|
|
20
|
+
parts.push(this.toolCodec.decodeFunctionCall(apifc));
|
|
21
|
+
else
|
|
22
|
+
throw new Error();
|
|
23
|
+
if (parts.length)
|
|
24
|
+
return new Engine.RoleMessage.Ai(parts);
|
|
25
|
+
else
|
|
26
|
+
throw new SyntaxError('Content or tool calls not found in Response', { cause: message });
|
|
27
|
+
}
|
|
28
|
+
encodeDeveloperMessage(developerMessage) {
|
|
29
|
+
return {
|
|
30
|
+
role: 'system',
|
|
31
|
+
content: developerMessage.getOnlyTextParts().map(part => part.text).join(''),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
encodeUserMessage(userMessage) {
|
|
35
|
+
const textParts = userMessage.getTextParts();
|
|
36
|
+
const fress = userMessage.getFunctionResponses();
|
|
37
|
+
if (textParts.length && !fress.length)
|
|
38
|
+
return [{ role: 'user', content: textParts.map(part => ({ type: 'text', text: part.text })) }];
|
|
39
|
+
else if (!textParts.length && fress.length)
|
|
40
|
+
return fress.map(fres => this.toolCodec.encodeFunctionResponse(fres));
|
|
41
|
+
else if (textParts.length && fress.length)
|
|
42
|
+
throw new Error('Mixed text and function response parts in user message are not supported by OpenAI ChatCompletions API.');
|
|
43
|
+
else
|
|
44
|
+
throw new Error('Unsupported user message type.');
|
|
45
|
+
}
|
|
46
|
+
encodeAiMessage(aiMessage) {
|
|
47
|
+
const parts = aiMessage.getParts();
|
|
48
|
+
const textParts = [];
|
|
49
|
+
const fcParts = [];
|
|
50
|
+
for (const part of parts) {
|
|
51
|
+
if (part instanceof Engine.RoleMessage.Ai.Part.Text)
|
|
52
|
+
textParts.push(part);
|
|
53
|
+
else if (part instanceof Function.Call)
|
|
54
|
+
fcParts.push(part);
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
role: 'assistant',
|
|
58
|
+
content: textParts.length ? textParts.map(part => part.text).join('') : undefined,
|
|
59
|
+
tool_calls: fcParts.length ? fcParts.map(fcall => this.toolCodec.encodeFunctionCall(fcall)) : undefined,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
encodeRoleMessage(roleMessage) {
|
|
63
|
+
if (roleMessage instanceof Engine.RoleMessage.Developer)
|
|
64
|
+
return [this.encodeDeveloperMessage(roleMessage)];
|
|
65
|
+
else if (roleMessage instanceof Engine.RoleMessage.User) {
|
|
66
|
+
const userMessage = roleMessage;
|
|
67
|
+
return this.encodeUserMessage(userMessage);
|
|
68
|
+
}
|
|
69
|
+
else if (roleMessage instanceof Engine.RoleMessage.Ai) {
|
|
70
|
+
const aiMessage = roleMessage;
|
|
71
|
+
return [this.encodeAiMessage(aiMessage)];
|
|
72
|
+
}
|
|
73
|
+
else
|
|
74
|
+
throw new Error();
|
|
75
|
+
}
|
|
76
|
+
encodeRoleMessages(chatMessages) {
|
|
77
|
+
return chatMessages.map(chatMessage => this.encodeRoleMessage(chatMessage)).flat();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=message-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/message-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Function } from '../../function.ts';
|
|
2
2
|
import type { Verbatim } from '../../verbatim.ts';
|
|
3
3
|
import OpenAI from 'openai';
|
|
4
|
-
import {
|
|
5
|
-
export declare function encode<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(
|
|
4
|
+
import { StructuringChoice } from '../../structuring-choice.ts';
|
|
5
|
+
export declare function encode<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(structuringChoice: StructuringChoice): OpenAI.ChatCompletionToolChoiceOption;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StructuringChoice } from "../../structuring-choice.js";
|
|
2
|
+
export function encode(structuringChoice) {
|
|
3
|
+
if (structuringChoice === StructuringChoice.NONE)
|
|
4
|
+
return 'none';
|
|
5
|
+
else if (structuringChoice === StructuringChoice.REQUIRED)
|
|
6
|
+
return 'auto';
|
|
7
|
+
else if (structuringChoice === StructuringChoice.ANYONE)
|
|
8
|
+
return 'auto';
|
|
9
|
+
else if (structuringChoice === StructuringChoice.AUTO)
|
|
10
|
+
return 'auto';
|
|
11
|
+
else if (structuringChoice === StructuringChoice.TCall.REQUIRED)
|
|
12
|
+
return 'required';
|
|
13
|
+
else if (structuringChoice === StructuringChoice.TCall.ANYONE)
|
|
14
|
+
return 'required';
|
|
15
|
+
else if (structuringChoice === StructuringChoice.VRequest.REQUIRED)
|
|
16
|
+
return 'none';
|
|
17
|
+
else if (structuringChoice === StructuringChoice.VRequest.ANYONE)
|
|
18
|
+
return 'none';
|
|
19
|
+
else
|
|
20
|
+
throw new Error();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=structuring-choice-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuring-choice-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/structuring-choice-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,UAAU,MAAM,CAIlB,iBAAoC;IAEpC,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SAC3D,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SACpE,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;SAClE,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;SAEhE,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;SAC9E,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;SAE5E,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;SAC7E,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;;QAE3E,MAAM,IAAI,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Function } from '../../function.ts';
|
|
2
|
+
import OpenAI from 'openai';
|
|
3
|
+
export declare class ToolCodec<in out fdm extends Function.Decl.Map.Proto> {
|
|
4
|
+
protected fdm: fdm;
|
|
5
|
+
protected apiFds: OpenAI.ChatCompletionTool[];
|
|
6
|
+
constructor(options: ToolCodec.Options<fdm>);
|
|
7
|
+
encodeFunctionCall(fcall: Function.Call.From<fdm>): OpenAI.ChatCompletionMessageToolCall;
|
|
8
|
+
decodeFunctionCall(apifc: OpenAI.ChatCompletionMessageFunctionToolCall): Function.Call.From<fdm>;
|
|
9
|
+
encodeFunctionResponse(fres: Function.Response.From<fdm>): OpenAI.ChatCompletionToolMessageParam;
|
|
10
|
+
protected static encodeFunctionDeclarationEntry<fdu extends Function.Decl.Proto>(fdentry: Function.Decl.Entry.Of<fdu>): OpenAI.ChatCompletionTool;
|
|
11
|
+
encodeFunctionDeclarationMap(): OpenAI.ChatCompletionTool[];
|
|
12
|
+
}
|
|
13
|
+
export declare namespace ToolCodec {
|
|
14
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto> {
|
|
15
|
+
fdm: fdm;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -2,19 +2,22 @@ import { Parse, ParseError } from 'typebox/schema';
|
|
|
2
2
|
import { Function } from "../../function.js";
|
|
3
3
|
export class ToolCodec {
|
|
4
4
|
fdm;
|
|
5
|
+
apiFds;
|
|
5
6
|
constructor(options) {
|
|
6
7
|
this.fdm = options.fdm;
|
|
8
|
+
const fdentries = Object.entries(this.fdm);
|
|
9
|
+
this.apiFds = fdentries.map(fdentry => ToolCodec.encodeFunctionDeclarationEntry(fdentry));
|
|
7
10
|
}
|
|
8
|
-
encodeFunctionCall(
|
|
9
|
-
if (
|
|
11
|
+
encodeFunctionCall(fcall) {
|
|
12
|
+
if (fcall.id) { }
|
|
10
13
|
else
|
|
11
14
|
throw new Error();
|
|
12
15
|
return {
|
|
13
|
-
id:
|
|
16
|
+
id: fcall.id,
|
|
14
17
|
type: 'function',
|
|
15
18
|
function: {
|
|
16
|
-
name:
|
|
17
|
-
arguments: JSON.stringify(
|
|
19
|
+
name: fcall.name,
|
|
20
|
+
arguments: JSON.stringify(fcall.args),
|
|
18
21
|
},
|
|
19
22
|
};
|
|
20
23
|
}
|
|
@@ -46,26 +49,26 @@ export class ToolCodec {
|
|
|
46
49
|
args,
|
|
47
50
|
});
|
|
48
51
|
}
|
|
49
|
-
encodeFunctionResponse(
|
|
50
|
-
if (
|
|
52
|
+
encodeFunctionResponse(fres) {
|
|
53
|
+
if (fres.id) { }
|
|
51
54
|
else
|
|
52
55
|
throw new Error();
|
|
53
|
-
if (
|
|
56
|
+
if (fres instanceof Function.Response.Successful)
|
|
54
57
|
return {
|
|
55
58
|
role: 'tool',
|
|
56
|
-
tool_call_id:
|
|
57
|
-
content:
|
|
59
|
+
tool_call_id: fres.id,
|
|
60
|
+
content: fres.text,
|
|
58
61
|
};
|
|
59
|
-
else if (
|
|
62
|
+
else if (fres instanceof Function.Response.Failed)
|
|
60
63
|
return {
|
|
61
64
|
role: 'tool',
|
|
62
|
-
tool_call_id:
|
|
63
|
-
content:
|
|
65
|
+
tool_call_id: fres.id,
|
|
66
|
+
content: fres.error,
|
|
64
67
|
};
|
|
65
68
|
else
|
|
66
69
|
throw new Error();
|
|
67
70
|
}
|
|
68
|
-
encodeFunctionDeclarationEntry(fdentry) {
|
|
71
|
+
static encodeFunctionDeclarationEntry(fdentry) {
|
|
69
72
|
return {
|
|
70
73
|
type: 'function',
|
|
71
74
|
function: {
|
|
@@ -76,9 +79,8 @@ export class ToolCodec {
|
|
|
76
79
|
},
|
|
77
80
|
};
|
|
78
81
|
}
|
|
79
|
-
encodeFunctionDeclarationMap(
|
|
80
|
-
|
|
81
|
-
return fdentries.map(fdentry => this.encodeFunctionDeclarationEntry(fdentry));
|
|
82
|
+
encodeFunctionDeclarationMap() {
|
|
83
|
+
return this.apiFds.slice();
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
//# sourceMappingURL=tool-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-chatcompletions/tool-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,36 @@
|
|
|
1
|
-
import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
|
|
2
1
|
import { Function } from '../../function.ts';
|
|
3
2
|
import OpenAI from 'openai';
|
|
4
3
|
import type { InferenceContext } from '../../inference-context.ts';
|
|
5
4
|
import type { Verbatim } from '../../verbatim.ts';
|
|
6
|
-
import type
|
|
7
|
-
import
|
|
8
|
-
import type {
|
|
9
|
-
import type { ToolCodec } from '../../api-types/openai-chatcompletions/tool-codec.ts';
|
|
5
|
+
import { type InferenceOptions, type ProviderSpecs, Engine } from '../../engine.ts';
|
|
6
|
+
import type { Billing } from './billing.ts';
|
|
7
|
+
import type { ToolCodec } from './tool-codec.ts';
|
|
10
8
|
import { Throttle } from '../../throttle.ts';
|
|
11
9
|
import { type MessageCodec } from './message-codec.ts';
|
|
12
|
-
import type {
|
|
13
|
-
export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<
|
|
10
|
+
import type { StructuringChoice } from '../../structuring-choice.ts';
|
|
11
|
+
export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<fdm, vdm> {
|
|
14
12
|
protected client: OpenAI;
|
|
15
|
-
protected inferenceParams:
|
|
16
|
-
protected providerSpec:
|
|
13
|
+
protected inferenceParams: InferenceOptions;
|
|
14
|
+
protected providerSpec: ProviderSpecs;
|
|
17
15
|
protected fdm: fdm;
|
|
18
16
|
protected throttle: Throttle;
|
|
19
|
-
protected
|
|
17
|
+
protected structuringChoice: StructuringChoice;
|
|
20
18
|
protected messageCodec: MessageCodec<fdm, vdm>;
|
|
21
19
|
protected toolCodec: ToolCodec<fdm>;
|
|
22
20
|
protected billing: Billing;
|
|
23
21
|
constructor(options: Transport.Options<fdm, vdm>);
|
|
24
|
-
protected makeParams(session: Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsStreaming;
|
|
22
|
+
protected makeParams(session: Engine.Session.From<fdm, vdm>): OpenAI.ChatCompletionCreateParamsStreaming;
|
|
25
23
|
mergeToolCall(apifc: OpenAI.ChatCompletionChunk.Choice.Delta.ToolCall): OpenAI.ChatCompletionMessageToolCall;
|
|
26
24
|
mergeCompletion(stock: OpenAI.ChatCompletionChunk): OpenAI.ChatCompletion;
|
|
27
|
-
fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
25
|
+
fetch(wfctx: InferenceContext, session: Engine.Session.From<fdm, vdm>, signal?: AbortSignal): Promise<Engine.RoleMessage.Ai.From<fdm, vdm>>;
|
|
28
26
|
}
|
|
29
27
|
export declare namespace Transport {
|
|
30
28
|
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
31
|
-
inferenceParams:
|
|
32
|
-
providerSpec:
|
|
29
|
+
inferenceParams: InferenceOptions;
|
|
30
|
+
providerSpec: ProviderSpecs;
|
|
33
31
|
fdm: fdm;
|
|
34
32
|
throttle: Throttle;
|
|
35
|
-
|
|
33
|
+
structuringChoice: StructuringChoice;
|
|
36
34
|
messageCodec: MessageCodec<fdm, vdm>;
|
|
37
35
|
toolCodec: ToolCodec<fdm>;
|
|
38
36
|
billing: Billing;
|