@zimtsui/typechat 0.0.106 → 0.0.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -5
- package/assets/xml/instruction.md +19 -0
- package/assets/xml/quotation.handlebars +1 -0
- package/assets/xml/system.handlebars +1 -0
- package/build/adaptor.d.ts +6 -7
- package/build/adaptor.js.map +1 -1
- package/build/assets.d.ts +1 -3
- package/build/assets.js +4 -6
- package/build/assets.js.map +1 -1
- package/build/engine/message.d.ts +7 -15
- package/build/engine/message.js +4 -19
- package/build/engine/message.js.map +1 -1
- package/build/engine/middleware.d.ts +3 -4
- package/build/engine/parts-validator.d.ts +3 -4
- package/build/engine/parts-validator.js.map +1 -1
- package/build/engine/recoverable.d.ts +7 -8
- package/build/engine/recoverable.js.map +1 -1
- package/build/engine/session.d.ts +5 -6
- package/build/engine/tool-choice-validator.d.ts +14 -0
- package/build/engine/tool-choice-validator.js +44 -0
- package/build/engine/tool-choice-validator.js.map +1 -0
- package/build/engine/transport.d.ts +2 -3
- package/build/engine.d.ts +23 -26
- package/build/engine.js +12 -18
- package/build/engine.js.map +1 -1
- package/build/engines/anthropic/message-codec.d.ts +6 -9
- package/build/engines/anthropic/message-codec.js +2 -7
- package/build/engines/anthropic/message-codec.js.map +1 -1
- package/build/engines/anthropic/message.d.ts +2 -3
- package/build/engines/anthropic/message.js.map +1 -1
- package/build/engines/anthropic/tool-choice-codec.d.ts +3 -0
- package/build/engines/anthropic/tool-choice-codec.js +15 -0
- package/build/engines/anthropic/tool-choice-codec.js.map +1 -0
- package/build/engines/anthropic/transport.d.ts +10 -11
- package/build/engines/anthropic/transport.js +4 -4
- package/build/engines/anthropic/transport.js.map +1 -1
- package/build/engines/anthropic.d.ts +8 -9
- package/build/engines/anthropic.js +1 -2
- package/build/engines/anthropic.js.map +1 -1
- package/build/engines/google/message-codec.d.ts +6 -9
- package/build/engines/google/message-codec.js +3 -9
- package/build/engines/google/message-codec.js.map +1 -1
- package/build/engines/google/message.d.ts +3 -4
- package/build/engines/google/message.js +2 -2
- package/build/engines/google/message.js.map +1 -1
- package/build/engines/google/tool-choice-codec.d.ts +3 -0
- package/build/engines/google/tool-choice-codec.js +15 -0
- package/build/engines/google/tool-choice-codec.js.map +1 -0
- package/build/engines/google/transport.d.ts +9 -10
- package/build/engines/google/transport.js +4 -4
- package/build/engines/google/transport.js.map +1 -1
- package/build/engines/google.d.ts +15 -16
- package/build/engines/google.js +10 -18
- package/build/engines/google.js.map +1 -1
- package/build/engines/openai-chatcompletions/message-codec.d.ts +7 -10
- package/build/engines/openai-chatcompletions/message-codec.js +2 -7
- package/build/engines/openai-chatcompletions/message-codec.js.map +1 -1
- package/build/engines/openai-chatcompletions/tool-choice-codec.d.ts +3 -0
- package/build/engines/openai-chatcompletions/tool-choice-codec.js +14 -0
- package/build/engines/openai-chatcompletions/tool-choice-codec.js.map +1 -0
- package/build/engines/openai-chatcompletions/transport.d.ts +10 -11
- package/build/engines/openai-chatcompletions/transport.js +4 -4
- package/build/engines/openai-chatcompletions/transport.js.map +1 -1
- package/build/engines/openai-chatcompletions.d.ts +8 -9
- package/build/engines/openai-chatcompletions.js +1 -4
- package/build/engines/openai-chatcompletions.js.map +1 -1
- package/build/engines/openai-responses/message-codec.d.ts +6 -9
- package/build/engines/openai-responses/message-codec.js +2 -7
- package/build/engines/openai-responses/message-codec.js.map +1 -1
- package/build/engines/openai-responses/message.d.ts +2 -3
- package/build/engines/openai-responses/message.js.map +1 -1
- package/build/engines/openai-responses/tool-choice-codec.d.ts +3 -0
- package/build/engines/openai-responses/tool-choice-codec.js +14 -0
- package/build/engines/openai-responses/tool-choice-codec.js.map +1 -0
- package/build/engines/openai-responses/tool-choice-validator.d.ts +11 -0
- package/build/engines/openai-responses/tool-choice-validator.js +50 -0
- package/build/engines/openai-responses/tool-choice-validator.js.map +1 -0
- package/build/engines/openai-responses/transport.d.ts +10 -11
- package/build/engines/openai-responses/transport.js +4 -4
- package/build/engines/openai-responses/transport.js.map +1 -1
- package/build/engines/openai-responses.d.ts +16 -17
- package/build/engines/openai-responses.js +10 -18
- package/build/engines/openai-responses.js.map +1 -1
- package/build/exports.d.ts +2 -2
- package/build/exports.js +2 -2
- package/build/exports.js.map +1 -1
- package/build/function.d.ts +3 -2
- package/build/function.js.map +1 -1
- package/build/media.js +2 -2
- package/build/media.js.map +1 -1
- package/build/tool-choice.d.ts +7 -0
- package/build/tool-choice.js +8 -0
- package/build/tool-choice.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/xml/helpers.js.map +1 -0
- package/build/{verbatim/codec → xml}/quotation.js +2 -2
- package/build/xml/quotation.js.map +1 -0
- package/build/xml/system.js +7 -0
- package/build/xml/system.js.map +1 -0
- package/build/xml.d.ts +2 -0
- package/build/xml.js +3 -0
- package/build/xml.js.map +1 -0
- package/package.json +2 -2
- package/assets/verbatim/declarations.handlebars +0 -12
- package/assets/verbatim/instruction.md +0 -55
- package/assets/verbatim/quotation.handlebars +0 -1
- package/assets/verbatim/response.handlebars +0 -1
- package/assets/verbatim/system.handlebars +0 -1
- package/build/engine/structuring-validator.d.ts +0 -15
- package/build/engine/structuring-validator.js +0 -77
- package/build/engine/structuring-validator.js.map +0 -1
- package/build/engines/anthropic/structuring-choice-codec.d.ts +0 -5
- package/build/engines/anthropic/structuring-choice-codec.js +0 -23
- package/build/engines/anthropic/structuring-choice-codec.js.map +0 -1
- package/build/engines/google/structuring-choice-codec.d.ts +0 -5
- package/build/engines/google/structuring-choice-codec.js +0 -23
- package/build/engines/google/structuring-choice-codec.js.map +0 -1
- package/build/engines/openai-chatcompletions/structuring-choice-codec.d.ts +0 -5
- package/build/engines/openai-chatcompletions/structuring-choice-codec.js +0 -22
- package/build/engines/openai-chatcompletions/structuring-choice-codec.js.map +0 -1
- package/build/engines/openai-responses/structuring-choice-codec.d.ts +0 -3
- package/build/engines/openai-responses/structuring-choice-codec.js +0 -22
- package/build/engines/openai-responses/structuring-choice-codec.js.map +0 -1
- package/build/engines/openai-responses/structuring-validator.d.ts +0 -12
- package/build/engines/openai-responses/structuring-validator.js +0 -83
- package/build/engines/openai-responses/structuring-validator.js.map +0 -1
- package/build/structuring-choice.d.ts +0 -15
- package/build/structuring-choice.js +0 -18
- package/build/structuring-choice.js.map +0 -1
- package/build/verbatim/codec/declarations.d.ts +0 -2
- package/build/verbatim/codec/declarations.js +0 -25
- package/build/verbatim/codec/declarations.js.map +0 -1
- package/build/verbatim/codec/helpers.js.map +0 -1
- package/build/verbatim/codec/quotation.js.map +0 -1
- package/build/verbatim/codec/request.d.ts +0 -11
- package/build/verbatim/codec/request.js +0 -81
- package/build/verbatim/codec/request.js.map +0 -1
- package/build/verbatim/codec/response.d.ts +0 -2
- package/build/verbatim/codec/response.js +0 -7
- package/build/verbatim/codec/response.js.map +0 -1
- package/build/verbatim/codec/system.js +0 -7
- package/build/verbatim/codec/system.js.map +0 -1
- package/build/verbatim/codec.d.ts +0 -5
- package/build/verbatim/codec.js +0 -6
- package/build/verbatim/codec.js.map +0 -1
- package/build/verbatim.d.ts +0 -76
- package/build/verbatim.js +0 -17
- package/build/verbatim.js.map +0 -1
- /package/build/{verbatim/codec → xml}/helpers.d.ts +0 -0
- /package/build/{verbatim/codec → xml}/helpers.js +0 -0
- /package/build/{verbatim/codec → xml}/quotation.d.ts +0 -0
- /package/build/{verbatim/codec → xml}/system.d.ts +0 -0
package/README.md
CHANGED
|
@@ -14,8 +14,3 @@ TypeChat 是一个强类型的 LLM 推理服务商 API 适配器。
|
|
|
14
14
|
## [配置](./examples/config.ts)
|
|
15
15
|
## [对话](./examples/chat.ts)
|
|
16
16
|
## [智能体](./examples/agent.ts)
|
|
17
|
-
### [XML 逐字频道](./examples/verbatim.ts)
|
|
18
|
-
|
|
19
|
-
When a LLM outputs structured data in JSON format (e.g., legacy LLM function calling), if there are too many special characters in a string property (e.g., a large LaTeX document, or a complex shell command), the LLM is prone to make mistakes in JSON escaping.
|
|
20
|
-
|
|
21
|
-
XML Verbatim Channel is designed to avoid escaping in LLM messages.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# TypeChat
|
|
2
|
+
|
|
3
|
+
TypeChat is the adaptor you are using for LLM inference providers.
|
|
4
|
+
|
|
5
|
+
## Verbatim Quotation
|
|
6
|
+
|
|
7
|
+
LLM developer/user-role messages may contain verbatim quotations in the form of
|
|
8
|
+
|
|
9
|
+
<typechat:quotation author="AUTHOR OF QUOTATION"><![CDATA[VERBATIM QUOTATION]]></typechat:quotation>
|
|
10
|
+
|
|
11
|
+
The CDATA section may directly contain `]]>`, which is not allowed in standard XML.
|
|
12
|
+
|
|
13
|
+
The attribute `author` is optional, indicating the source of the quotation.
|
|
14
|
+
|
|
15
|
+
## System Information
|
|
16
|
+
|
|
17
|
+
LLM developer/user-role messages may contain system information from the AI agent framework in the form of
|
|
18
|
+
|
|
19
|
+
<typechat:system></typechat:system>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<typechat:quotation{{#if (isDefined this.author)}} author="{{AssertXmlAttr this.author}}"{{/if}} mime-type="{{XmlAttr this.mimeType}}"><![CDATA[{{{this.text}}}]]></typechat:quotation>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<typechat:system>{{this.text}}</typechat:system>
|
package/build/adaptor.d.ts
CHANGED
|
@@ -3,25 +3,24 @@ import { Function } from './function.ts';
|
|
|
3
3
|
import { Throttle } from './throttle.ts';
|
|
4
4
|
import { GoogleEngine } from './engines/google.ts';
|
|
5
5
|
import { OpenAIResponsesEngine } from './engines/openai-responses.ts';
|
|
6
|
-
import type { Verbatim } from './verbatim.ts';
|
|
7
6
|
import { Engine } from './engine.ts';
|
|
8
7
|
export declare class Adaptor {
|
|
9
8
|
config: Config;
|
|
10
9
|
static create(config: Config): Adaptor;
|
|
11
10
|
protected throttles: Map<string, Throttle>;
|
|
12
11
|
protected constructor(config: Config);
|
|
13
|
-
makeEngine<fdm extends Function.Decl.Map.Proto
|
|
14
|
-
makeGoogleEngine<fdm extends Function.Decl.Map.Proto
|
|
15
|
-
makeOpenAIResponsesEngine<fdm extends Function.Decl.Map.Proto
|
|
12
|
+
makeEngine<fdm extends Function.Decl.Map.Proto>(adaptorOptions: Adaptor.Params<fdm>): Engine<fdm>;
|
|
13
|
+
makeGoogleEngine<fdm extends Function.Decl.Map.Proto>(adaptorOptions: Adaptor.GoogleParams<fdm>): GoogleEngine<fdm>;
|
|
14
|
+
makeOpenAIResponsesEngine<fdm extends Function.Decl.Map.Proto>(adaptorOptions: Adaptor.OpenAIResponsesParams<fdm>): OpenAIResponsesEngine<fdm>;
|
|
16
15
|
}
|
|
17
16
|
export declare namespace Adaptor {
|
|
18
|
-
interface Params<in out fdm extends Function.Decl.Map.Proto
|
|
17
|
+
interface Params<in out fdm extends Function.Decl.Map.Proto> extends Omit<Engine.Options<fdm>, 'endpointSpec' | 'throttle'> {
|
|
19
18
|
endpoint: string;
|
|
20
19
|
}
|
|
21
|
-
interface GoogleParams<in out fdm extends Function.Decl.Map.Proto
|
|
20
|
+
interface GoogleParams<in out fdm extends Function.Decl.Map.Proto> extends Omit<GoogleEngine.Options<fdm>, 'endpointSpec' | 'throttle'> {
|
|
22
21
|
endpoint: string;
|
|
23
22
|
}
|
|
24
|
-
interface OpenAIResponsesParams<in out fdm extends Function.Decl.Map.Proto
|
|
23
|
+
interface OpenAIResponsesParams<in out fdm extends Function.Decl.Map.Proto> extends Omit<OpenAIResponsesEngine.Options<fdm>, 'endpointSpec' | 'throttle'> {
|
|
25
24
|
endpoint: string;
|
|
26
25
|
}
|
|
27
26
|
}
|
package/build/adaptor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"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"}
|
package/build/assets.d.ts
CHANGED
package/build/assets.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { loadtext } from '@zimtsui/node-loaders';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
export default {
|
|
4
|
-
|
|
5
|
-
instruction: loadtext(fileURLToPath(import.meta.resolve('../assets/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
response: loadtext(fileURLToPath(import.meta.resolve('../assets/verbatim/response.handlebars'))),
|
|
9
|
-
system: loadtext(fileURLToPath(import.meta.resolve('../assets/verbatim/system.handlebars'))),
|
|
4
|
+
xml: {
|
|
5
|
+
instruction: loadtext(fileURLToPath(import.meta.resolve('../assets/xml/instruction.md'))),
|
|
6
|
+
quotation: loadtext(fileURLToPath(import.meta.resolve('../assets/xml/quotation.handlebars'))),
|
|
7
|
+
system: loadtext(fileURLToPath(import.meta.resolve('../assets/xml/system.handlebars'))),
|
|
10
8
|
},
|
|
11
9
|
};
|
|
12
10
|
//# sourceMappingURL=assets.js.map
|
package/build/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,eAAe;IACX,
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,eAAe;IACX,GAAG,EAAE;QACD,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzF,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC7F,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC;KAC1F;CACK,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Function } from '../function.ts';
|
|
2
|
-
import { Verbatim } from '../verbatim.ts';
|
|
3
2
|
declare const NOMINAL: unique symbol;
|
|
4
3
|
export declare namespace RoleMessage {
|
|
5
4
|
class Developer {
|
|
@@ -22,32 +21,25 @@ export declare namespace RoleMessage {
|
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
|
-
class Ai<out fdu extends Function.Decl.Proto
|
|
24
|
+
class Ai<out fdu extends Function.Decl.Proto> {
|
|
26
25
|
protected parts: unknown[];
|
|
27
26
|
protected [NOMINAL]: never;
|
|
28
27
|
constructor(parts: unknown[]);
|
|
29
28
|
getParts(): unknown[];
|
|
30
|
-
|
|
31
|
-
getTextParts(): RoleMessage.Ai.Part.Text
|
|
32
|
-
getChat(): string;
|
|
29
|
+
allText(): boolean;
|
|
30
|
+
getTextParts(): RoleMessage.Ai.Part.Text[];
|
|
33
31
|
getText(): string;
|
|
34
32
|
getFunctionCalls(): Function.Call.Of<fdu>[];
|
|
35
|
-
getVerbatimRequests(): Verbatim.Request.Of<vdu>[];
|
|
36
33
|
getOnlyFunctionCall(): Function.Call.Of<fdu>;
|
|
37
|
-
getOnlyVerbatimRequest(): Verbatim.Request.Of<vdu>;
|
|
38
34
|
}
|
|
39
35
|
namespace Ai {
|
|
40
|
-
type From<fdm extends Function.Decl.Map.Proto
|
|
36
|
+
type From<fdm extends Function.Decl.Map.Proto> = RoleMessage.Ai<Function.Decl.From<fdm>>;
|
|
41
37
|
namespace Part {
|
|
42
|
-
class Text
|
|
38
|
+
class Text {
|
|
43
39
|
text: string;
|
|
44
|
-
vreqs: Verbatim.Request.Of<vdu>[];
|
|
45
40
|
protected [NOMINAL]: never;
|
|
46
|
-
static paragraph(text: string): Text
|
|
47
|
-
constructor(text: string
|
|
48
|
-
}
|
|
49
|
-
namespace Text {
|
|
50
|
-
type From<vdm extends Verbatim.Decl.Map.Proto> = Text<Verbatim.Decl.From<vdm>>;
|
|
41
|
+
static paragraph(text: string): Text;
|
|
42
|
+
constructor(text: string);
|
|
51
43
|
}
|
|
52
44
|
}
|
|
53
45
|
}
|
package/build/engine/message.js
CHANGED
|
@@ -56,15 +56,12 @@ export var RoleMessage;
|
|
|
56
56
|
getParts() {
|
|
57
57
|
return this.parts;
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
return this.parts.every(part => part instanceof RoleMessage.Ai.Part.Text
|
|
59
|
+
allText() {
|
|
60
|
+
return this.parts.every(part => part instanceof RoleMessage.Ai.Part.Text);
|
|
61
61
|
}
|
|
62
62
|
getTextParts() {
|
|
63
63
|
return this.parts.filter(part => part instanceof RoleMessage.Ai.Part.Text);
|
|
64
64
|
}
|
|
65
|
-
getChat() {
|
|
66
|
-
return this.getTextParts().filter(part => !part.vreqs.length).map(part => part.text).join('');
|
|
67
|
-
}
|
|
68
65
|
getText() {
|
|
69
66
|
return this.getTextParts().map(part => part.text).join('');
|
|
70
67
|
}
|
|
@@ -77,9 +74,6 @@ export var RoleMessage;
|
|
|
77
74
|
}
|
|
78
75
|
return fcalls;
|
|
79
76
|
}
|
|
80
|
-
getVerbatimRequests() {
|
|
81
|
-
return this.getTextParts().flatMap(part => part.vreqs);
|
|
82
|
-
}
|
|
83
77
|
getOnlyFunctionCall() {
|
|
84
78
|
const fcalls = this.getFunctionCalls();
|
|
85
79
|
if (fcalls.length === 1) { }
|
|
@@ -87,13 +81,6 @@ export var RoleMessage;
|
|
|
87
81
|
throw new Error();
|
|
88
82
|
return fcalls[0];
|
|
89
83
|
}
|
|
90
|
-
getOnlyVerbatimRequest() {
|
|
91
|
-
const vreqs = this.getVerbatimRequests();
|
|
92
|
-
if (vreqs.length === 1) { }
|
|
93
|
-
else
|
|
94
|
-
throw new Error();
|
|
95
|
-
return vreqs[0];
|
|
96
|
-
}
|
|
97
84
|
}
|
|
98
85
|
RoleMessage.Ai = Ai;
|
|
99
86
|
(function (Ai) {
|
|
@@ -101,13 +88,11 @@ export var RoleMessage;
|
|
|
101
88
|
(function (Part) {
|
|
102
89
|
class Text {
|
|
103
90
|
text;
|
|
104
|
-
vreqs;
|
|
105
91
|
static paragraph(text) {
|
|
106
|
-
return new RoleMessage.Ai.Part.Text(text.trimEnd() + '\n\n'
|
|
92
|
+
return new RoleMessage.Ai.Part.Text(text.trimEnd() + '\n\n');
|
|
107
93
|
}
|
|
108
|
-
constructor(text
|
|
94
|
+
constructor(text) {
|
|
109
95
|
this.text = text;
|
|
110
|
-
this.vreqs = vreqs;
|
|
111
96
|
}
|
|
112
97
|
}
|
|
113
98
|
Part.Text = Text;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/engine/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/engine/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,9 @@ import { Function } from '../function.ts';
|
|
|
2
2
|
import { type InferenceContext } from '../inference-context.ts';
|
|
3
3
|
import { Session } from './session.ts';
|
|
4
4
|
import { RoleMessage } from './message.ts';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
(wfctx: InferenceContext, session: Session<fdu, vdu>, next: () => Promise<RoleMessage.Ai<fdu, vdu>>): Promise<RoleMessage.Ai<fdu, vdu>>;
|
|
5
|
+
export interface Middleware<in out fdu extends Function.Decl.Proto> {
|
|
6
|
+
(wfctx: InferenceContext, session: Session<fdu>, next: () => Promise<RoleMessage.Ai<fdu>>): Promise<RoleMessage.Ai<fdu>>;
|
|
8
7
|
}
|
|
9
8
|
export declare namespace Middleware {
|
|
10
|
-
type From<fdm extends Function.Decl.Map.Proto
|
|
9
|
+
type From<fdm extends Function.Decl.Map.Proto> = Middleware<Function.Decl.From<fdm>>;
|
|
11
10
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Function } from '../function.ts';
|
|
2
|
-
import { Verbatim } from '../verbatim.ts';
|
|
3
2
|
import { RoleMessage } from './message.ts';
|
|
4
|
-
export declare class PartsValidator<in out fdu extends Function.Decl.Proto
|
|
5
|
-
validate(message: RoleMessage.Ai<fdu
|
|
3
|
+
export declare class PartsValidator<in out fdu extends Function.Decl.Proto> {
|
|
4
|
+
validate(message: RoleMessage.Ai<fdu>): void;
|
|
6
5
|
}
|
|
7
6
|
export declare namespace PartsValidator {
|
|
8
|
-
type From<fdm extends Function.Decl.Map.Proto
|
|
7
|
+
type From<fdm extends Function.Decl.Map.Proto> = PartsValidator<Function.Decl.From<fdm>>;
|
|
9
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts-validator.js","sourceRoot":"","sources":["../../src/engine/parts-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parts-validator.js","sourceRoot":"","sources":["../../src/engine/parts-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,MAAM,OAAO,cAAc;IAIhB,QAAQ,CACX,OAA4B;QAE5B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC/E,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;IAC3E,CAAC;CAEJ"}
|
|
@@ -2,12 +2,11 @@ import { Function } from '../function.ts';
|
|
|
2
2
|
import { type InferenceContext } from '../inference-context.ts';
|
|
3
3
|
import { Session } from './session.ts';
|
|
4
4
|
import { RoleMessage } from './message.ts';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
protected
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
recover(): RoleMessage.
|
|
12
|
-
static recover<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(wfctx: InferenceContext, session: Session<fdu, vdu>, next: () => Promise<RoleMessage.Ai<fdu, vdu>>): Promise<RoleMessage.Ai<fdu, vdu>>;
|
|
5
|
+
export declare class Recoverable<in out fdu extends Function.Decl.Proto> extends SyntaxError {
|
|
6
|
+
protected response: RoleMessage.Ai<fdu>;
|
|
7
|
+
protected rejection: RoleMessage.User<fdu>;
|
|
8
|
+
constructor(response: RoleMessage.Ai<fdu>, rejection: RoleMessage.User<fdu>, ...rest: ConstructorParameters<typeof SyntaxError>);
|
|
9
|
+
resume(): RoleMessage.Ai<fdu>;
|
|
10
|
+
recover(): RoleMessage.User<fdu>;
|
|
11
|
+
static recover<fdu extends Function.Decl.Proto>(wfctx: InferenceContext, session: Session<fdu>, next: () => Promise<RoleMessage.Ai<fdu>>): Promise<RoleMessage.Ai<fdu>>;
|
|
13
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverable.js","sourceRoot":"","sources":["../../src/engine/recoverable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recoverable.js","sourceRoot":"","sources":["../../src/engine/recoverable.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,WAEX,SAAQ,WAAW;IAEH;IACA;IAFd,YACc,QAA6B,EAC7B,SAAgC,EAC1C,GAAG,IAA+C;QAElD,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAJL,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,cAAS,GAAT,SAAS,CAAuB;IAI9C,CAAC;IACM,MAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACM,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,OAAO,CAGvB,KAAuB,EACvB,OAAqB,EACrB,IAAwC;QAExC,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC,CAAA,CAAC;;gBAAM,MAAM,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,CAAqB,CAAC;YAC1C,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { Function } from '../function.ts';
|
|
2
|
-
import { Verbatim } from '../verbatim.ts';
|
|
3
2
|
import { RoleMessage } from './message.ts';
|
|
4
|
-
export interface Session<in out fdu extends Function.Decl.Proto
|
|
5
|
-
chatMessages: Session.ChatMessage<fdu
|
|
3
|
+
export interface Session<in out fdu extends Function.Decl.Proto> {
|
|
4
|
+
chatMessages: Session.ChatMessage<fdu>[];
|
|
6
5
|
developerMessage?: RoleMessage.Developer;
|
|
7
6
|
}
|
|
8
7
|
export declare namespace Session {
|
|
9
|
-
type From<fdm extends Function.Decl.Map.Proto
|
|
10
|
-
type ChatMessage<fdu extends Function.Decl.Proto
|
|
8
|
+
type From<fdm extends Function.Decl.Map.Proto> = Session<Function.Decl.From<fdm>>;
|
|
9
|
+
type ChatMessage<fdu extends Function.Decl.Proto> = RoleMessage.User<fdu> | RoleMessage.Ai<fdu>;
|
|
11
10
|
namespace ChatMessage {
|
|
12
|
-
type From<fdm extends Function.Decl.Map.Proto
|
|
11
|
+
type From<fdm extends Function.Decl.Map.Proto> = ChatMessage<Function.Decl.From<fdm>>;
|
|
13
12
|
}
|
|
14
13
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ToolChoice } from '../tool-choice.ts';
|
|
2
|
+
import { Function } from '../function.ts';
|
|
3
|
+
import { RoleMessage } from './message.ts';
|
|
4
|
+
export declare class ToolChoiceValidator<in out fdu extends Function.Decl.Proto> {
|
|
5
|
+
protected toolChoice: ToolChoice;
|
|
6
|
+
constructor(options: ToolChoiceValidator.Options);
|
|
7
|
+
validate(aiMessage: RoleMessage.Ai<fdu>): RoleMessage.User<fdu> | void;
|
|
8
|
+
}
|
|
9
|
+
export declare namespace ToolChoiceValidator {
|
|
10
|
+
type From<fdm extends Function.Decl.Map.Proto> = ToolChoiceValidator<Function.Decl.From<fdm>>;
|
|
11
|
+
interface Options {
|
|
12
|
+
toolChoice: ToolChoice;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ToolChoice } from "../tool-choice.js";
|
|
2
|
+
import { Function } from "../function.js";
|
|
3
|
+
import { RoleMessage } from "./message.js";
|
|
4
|
+
import * as XmlCodec from "../xml.js";
|
|
5
|
+
export class ToolChoiceValidator {
|
|
6
|
+
toolChoice;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.toolChoice = options.toolChoice;
|
|
9
|
+
}
|
|
10
|
+
validate(aiMessage) {
|
|
11
|
+
const fcalls = aiMessage.getFunctionCalls();
|
|
12
|
+
const fress = fcalls.map(fcall => Function.Response.Failed.of({
|
|
13
|
+
id: fcall.id,
|
|
14
|
+
name: fcall.name,
|
|
15
|
+
error: XmlCodec.System.encode('Cancelled by system.'),
|
|
16
|
+
}));
|
|
17
|
+
if (this.toolChoice === ToolChoice.REQUIRED) {
|
|
18
|
+
if (fcalls.length) { }
|
|
19
|
+
else
|
|
20
|
+
return new RoleMessage.User([
|
|
21
|
+
RoleMessage.User.Part.Text.paragraph(XmlCodec.System.encode(`Error: Function call required, but not found.`)),
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
else if (this.toolChoice === ToolChoice.ANYONE) {
|
|
25
|
+
if (!fcalls.length)
|
|
26
|
+
return new RoleMessage.User([
|
|
27
|
+
RoleMessage.User.Part.Text.paragraph(XmlCodec.System.encode(`Error: Function call required, but not found.`)),
|
|
28
|
+
]);
|
|
29
|
+
if (fcalls.length > 1)
|
|
30
|
+
return new RoleMessage.User([
|
|
31
|
+
...fress,
|
|
32
|
+
RoleMessage.User.Part.Text.paragraph(XmlCodec.System.encode(`Error: Only 1 function call allowed, but multiple found.`)),
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
else if (this.toolChoice === ToolChoice.NONE) {
|
|
36
|
+
if (fcalls.length)
|
|
37
|
+
return new RoleMessage.User([
|
|
38
|
+
...fress,
|
|
39
|
+
RoleMessage.User.Part.Text.paragraph(XmlCodec.System.encode(`Error: No function call allowed.`)),
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=tool-choice-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-choice-validator.js","sourceRoot":"","sources":["../../src/engine/tool-choice-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AAGtC,MAAM,OAAO,mBAAmB;IAGlB,UAAU,CAAa;IACjC,YAAmB,OAAoC;QACnD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACzC,CAAC;IAEM,QAAQ,CACX,SAA8B;QAE9B,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CACpB,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;SACZ,CAAC,CACjD,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA,CAAC;;gBACjB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAM;oBAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAC1E;iBACJ,CAAC,CAAC;QAEX,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM;gBACd,OAAO,IAAI,WAAW,CAAC,IAAI,CAAQ;oBAC/B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAC1E;iBACJ,CAAC,CAAC;YACP,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBACjB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAM;oBAC7B,GAAG,KAAK;oBACR,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,0DAA0D,CAAC,CACrF;iBACJ,CAAC,CAAC;QAEX,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM;gBACb,OAAO,IAAI,WAAW,CAAC,IAAI,CAAM;oBAC7B,GAAG,KAAK;oBACR,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAC7D;iBACJ,CAAC,CAAC;QACX,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -2,7 +2,6 @@ import { Function } from '../function.ts';
|
|
|
2
2
|
import { type InferenceContext } from '../inference-context.ts';
|
|
3
3
|
import { Session } from './session.ts';
|
|
4
4
|
import { RoleMessage } from './message.ts';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
5
|
+
export interface Transport<in out fdm extends Function.Decl.Map.Proto> {
|
|
6
|
+
fetch(wfctx: InferenceContext, session: Session.From<fdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm>>;
|
|
8
7
|
}
|
package/build/engine.d.ts
CHANGED
|
@@ -5,13 +5,12 @@ import { Dispatcher } from 'undici';
|
|
|
5
5
|
import { type InferenceContext } from './inference-context.ts';
|
|
6
6
|
import * as SessionModule from './engine/session.ts';
|
|
7
7
|
import * as MessageModule from './engine/message.ts';
|
|
8
|
-
import { Verbatim } from './verbatim.ts';
|
|
9
8
|
import { PartsValidator } from './engine/parts-validator.ts';
|
|
10
9
|
import { Recoverable } from './engine/recoverable.ts';
|
|
11
10
|
import { Middleware } from './engine/middleware.ts';
|
|
12
|
-
import * as
|
|
11
|
+
import * as ToolChoiceValidatorModule from './engine/tool-choice-validator.ts';
|
|
13
12
|
import * as EngineTransportModule from './engine/transport.ts';
|
|
14
|
-
import {
|
|
13
|
+
import { ToolChoice } from './tool-choice.ts';
|
|
15
14
|
export interface Pricing {
|
|
16
15
|
inputPrice: number;
|
|
17
16
|
cachePrice: number;
|
|
@@ -30,68 +29,66 @@ export interface InferenceOptions {
|
|
|
30
29
|
timeout?: number;
|
|
31
30
|
retry: number;
|
|
32
31
|
}
|
|
33
|
-
export type Engine<fdm extends Function.Decl.Map.Proto
|
|
32
|
+
export type Engine<fdm extends Function.Decl.Map.Proto> = Engine.Instance<fdm>;
|
|
34
33
|
export declare namespace Engine {
|
|
35
|
-
abstract class Instance<in out fdm extends Function.Decl.Map.Proto
|
|
34
|
+
abstract class Instance<in out fdm extends Function.Decl.Map.Proto> {
|
|
36
35
|
protected providerSpecs: ProviderSpecs;
|
|
37
36
|
protected inferenceOptions: InferenceOptions;
|
|
38
37
|
name: string;
|
|
39
38
|
pricing: Pricing;
|
|
40
39
|
fdm: fdm;
|
|
41
|
-
vdm: vdm;
|
|
42
40
|
protected throttle: Throttle;
|
|
43
|
-
protected
|
|
44
|
-
protected
|
|
45
|
-
protected partsValidator: PartsValidator.From<fdm
|
|
46
|
-
protected abstract transport: Engine.Transport<fdm
|
|
47
|
-
constructor(options: Engine.Options<fdm
|
|
41
|
+
protected toolChoice: ToolChoice;
|
|
42
|
+
protected toolChoiceValidator: Engine.ToolChoiceValidator.From<fdm>;
|
|
43
|
+
protected partsValidator: PartsValidator.From<fdm>;
|
|
44
|
+
protected abstract transport: Engine.Transport<fdm>;
|
|
45
|
+
constructor(options: Engine.Options<fdm>);
|
|
48
46
|
/**
|
|
49
47
|
* @throws {@link InferenceTimeout} 推理超时
|
|
50
48
|
* @throws {@link SyntaxError} 模型抽风
|
|
51
49
|
* @throws {@link Recoverable} 模型抽风但可恢复
|
|
52
50
|
* @throws {@link TypeError} 网络故障
|
|
53
51
|
*/
|
|
54
|
-
protected infer(wfctx: InferenceContext, session: Session.From<fdm
|
|
52
|
+
protected infer(wfctx: InferenceContext, session: Session.From<fdm>): Promise<RoleMessage.Ai.From<fdm>>;
|
|
55
53
|
/**
|
|
56
54
|
* @throws {@link InferenceTimeout} 推理超时
|
|
57
55
|
* @throws {@link SyntaxError} 模型抽风
|
|
58
56
|
* @throws {@link TypeError} 网络故障
|
|
59
57
|
*/
|
|
60
|
-
stateless(wfctx: InferenceContext, session: Session.From<fdm
|
|
58
|
+
stateless(wfctx: InferenceContext, session: Session.From<fdm>): Promise<RoleMessage.Ai.From<fdm>>;
|
|
61
59
|
/**
|
|
62
60
|
* @throws {@link InferenceTimeout} 推理超时
|
|
63
61
|
* @throws {@link SyntaxError} 模型抽风
|
|
64
62
|
* @throws {@link TypeError} 网络故障
|
|
65
63
|
* @param session mutable
|
|
66
64
|
*/
|
|
67
|
-
stateful(wfctx: InferenceContext, session: Session.From<fdm
|
|
68
|
-
abstract clone(): Engine<fdm
|
|
69
|
-
protected middlewaresStateless: Middleware.From<fdm
|
|
70
|
-
useStateless(middleware: Middleware.From<fdm
|
|
71
|
-
protected middlewaresStateful: Middleware.From<fdm
|
|
72
|
-
useStateful(middleware: Middleware.From<fdm
|
|
73
|
-
protected compose(middlewares: Middleware.From<fdm
|
|
65
|
+
stateful(wfctx: InferenceContext, session: Session.From<fdm>): Promise<RoleMessage.Ai.From<fdm>>;
|
|
66
|
+
abstract clone(): Engine<fdm>;
|
|
67
|
+
protected middlewaresStateless: Middleware.From<fdm>[];
|
|
68
|
+
useStateless(middleware: Middleware.From<fdm>): Engine<fdm>;
|
|
69
|
+
protected middlewaresStateful: Middleware.From<fdm>[];
|
|
70
|
+
useStateful(middleware: Middleware.From<fdm>): Engine<fdm>;
|
|
71
|
+
protected compose(middlewares: Middleware.From<fdm>[]): Middleware.From<fdm>;
|
|
74
72
|
/**
|
|
75
73
|
* @param session mutable
|
|
76
74
|
*/
|
|
77
|
-
agentloop(wfctx: InferenceContext, session: Session.From<fdm
|
|
75
|
+
agentloop(wfctx: InferenceContext, session: Session.From<fdm>, fnm: Function.Map<fdm>, limit?: number): AsyncGenerator<string, string, void>;
|
|
78
76
|
}
|
|
79
77
|
class FunctionCallLimitExceeded extends Error {
|
|
80
78
|
}
|
|
81
|
-
interface Options<in out fdm extends Function.Decl.Map.Proto
|
|
79
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto> {
|
|
82
80
|
throttle: Throttle;
|
|
83
81
|
endpointSpec: EndpointSpec;
|
|
84
82
|
functionDeclarationMap: fdm;
|
|
85
|
-
|
|
86
|
-
structuringChoice?: StructuringChoice;
|
|
83
|
+
toolChoice?: ToolChoice;
|
|
87
84
|
providerRetry?: number;
|
|
88
85
|
inferenceRetry?: number;
|
|
89
86
|
}
|
|
90
87
|
interface Create {
|
|
91
|
-
<fdm extends Function.Decl.Map.Proto
|
|
88
|
+
<fdm extends Function.Decl.Map.Proto>(options: Engine.Options<fdm>): Engine<fdm>;
|
|
92
89
|
}
|
|
93
90
|
export import Transport = EngineTransportModule.Transport;
|
|
94
|
-
export import
|
|
91
|
+
export import ToolChoiceValidator = ToolChoiceValidatorModule.ToolChoiceValidator;
|
|
95
92
|
export import Session = SessionModule.Session;
|
|
96
93
|
export import RoleMessage = MessageModule.RoleMessage;
|
|
97
94
|
}
|
package/build/engine.js
CHANGED
|
@@ -5,8 +5,8 @@ import { loggers } from "./telemetry.js";
|
|
|
5
5
|
import * as MessageModule from "./engine/message.js";
|
|
6
6
|
import { PartsValidator } from "./engine/parts-validator.js";
|
|
7
7
|
import { Recoverable } from "./engine/recoverable.js";
|
|
8
|
-
import * as
|
|
9
|
-
import {
|
|
8
|
+
import * as ToolChoiceValidatorModule from "./engine/tool-choice-validator.js";
|
|
9
|
+
import { ToolChoice } from "./tool-choice.js";
|
|
10
10
|
export var Engine;
|
|
11
11
|
(function (Engine) {
|
|
12
12
|
class Instance {
|
|
@@ -15,10 +15,9 @@ export var Engine;
|
|
|
15
15
|
name;
|
|
16
16
|
pricing;
|
|
17
17
|
fdm;
|
|
18
|
-
vdm;
|
|
19
18
|
throttle;
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
toolChoice;
|
|
20
|
+
toolChoiceValidator;
|
|
22
21
|
partsValidator;
|
|
23
22
|
constructor(options) {
|
|
24
23
|
const proxyUrl = options.endpointSpec.proxy || env.https_proxy || env.HTTPS_PROXY;
|
|
@@ -52,11 +51,10 @@ export var Engine;
|
|
|
52
51
|
cachePrice: options.endpointSpec.cachePrice ?? options.endpointSpec.inputPrice ?? 0,
|
|
53
52
|
};
|
|
54
53
|
this.fdm = options.functionDeclarationMap;
|
|
55
|
-
this.
|
|
56
|
-
this.structuringChoice = options.structuringChoice ?? StructuringChoice.AUTO;
|
|
54
|
+
this.toolChoice = options.toolChoice ?? ToolChoice.AUTO;
|
|
57
55
|
this.throttle = options.throttle;
|
|
58
56
|
this.partsValidator = new PartsValidator();
|
|
59
|
-
this.
|
|
57
|
+
this.toolChoiceValidator = new Engine.ToolChoiceValidator({ toolChoice: this.toolChoice });
|
|
60
58
|
}
|
|
61
59
|
/**
|
|
62
60
|
* @throws {@link InferenceTimeout} 推理超时
|
|
@@ -75,7 +73,7 @@ export var Engine;
|
|
|
75
73
|
try {
|
|
76
74
|
const aiMessage = await this.transport.fetch(wfctx, session, signal);
|
|
77
75
|
this.partsValidator.validate(aiMessage);
|
|
78
|
-
const rejection = this.
|
|
76
|
+
const rejection = this.toolChoiceValidator.validate(aiMessage);
|
|
79
77
|
if (rejection)
|
|
80
78
|
throw new Recoverable(aiMessage, rejection);
|
|
81
79
|
return aiMessage;
|
|
@@ -192,21 +190,17 @@ export var Engine;
|
|
|
192
190
|
/**
|
|
193
191
|
* @param session mutable
|
|
194
192
|
*/
|
|
195
|
-
async *agentloop(wfctx, session, fnm,
|
|
193
|
+
async *agentloop(wfctx, session, fnm, limit = Number.POSITIVE_INFINITY) {
|
|
196
194
|
for (let i = 0; i < limit; i++) {
|
|
197
195
|
const response = await this.stateful(wfctx, session);
|
|
198
|
-
if (response.
|
|
199
|
-
return response.
|
|
196
|
+
if (response.allText())
|
|
197
|
+
return response.getText();
|
|
200
198
|
const pfress = [];
|
|
201
199
|
const pvress = [];
|
|
202
200
|
for (const part of response.getParts()) {
|
|
203
201
|
if (part instanceof Engine.RoleMessage.Ai.Part.Text) {
|
|
204
202
|
const textPart = part;
|
|
205
203
|
yield textPart.text;
|
|
206
|
-
for (const vreq of textPart.vreqs) {
|
|
207
|
-
const vh = vhm[vreq.name];
|
|
208
|
-
pvress.push((async () => new Engine.RoleMessage.User.Part.Text(await vh.call(vhm, vreq.args)))());
|
|
209
|
-
}
|
|
210
204
|
}
|
|
211
205
|
else if (part instanceof Function.Call) {
|
|
212
206
|
const fcall = part;
|
|
@@ -216,7 +210,7 @@ export var Engine;
|
|
|
216
210
|
return Function.Response.Successful.of({
|
|
217
211
|
id: fcall.id,
|
|
218
212
|
name: fcall.name,
|
|
219
|
-
text: await f.call(fnm, fcall.args),
|
|
213
|
+
text: await f.call(fnm, fcall.args, fcall),
|
|
220
214
|
});
|
|
221
215
|
}
|
|
222
216
|
catch (e) {
|
|
@@ -245,7 +239,7 @@ export var Engine;
|
|
|
245
239
|
class FunctionCallLimitExceeded extends Error {
|
|
246
240
|
}
|
|
247
241
|
Engine.FunctionCallLimitExceeded = FunctionCallLimitExceeded;
|
|
248
|
-
Engine.
|
|
242
|
+
Engine.ToolChoiceValidator = ToolChoiceValidatorModule.ToolChoiceValidator;
|
|
249
243
|
Engine.RoleMessage = MessageModule.RoleMessage;
|
|
250
244
|
})(Engine || (Engine = {}));
|
|
251
245
|
export class InferenceTimeout extends Error {
|