@zimtsui/brainswitch 0.0.28 → 0.0.30

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.
Files changed (46) hide show
  1. package/build/adaptor.d.ts +2 -0
  2. package/build/adaptor.js +23 -7
  3. package/build/adaptor.js.map +1 -1
  4. package/build/api-types/base.js +7 -6
  5. package/build/api-types/base.js.map +1 -1
  6. package/build/engine.d/aliyun.d.ts +13 -0
  7. package/build/engine.d/aliyun.js +17 -0
  8. package/build/engine.d/aliyun.js.map +1 -0
  9. package/build/engine.d/anthropic.d.ts +45 -0
  10. package/build/engine.d/anthropic.js +279 -0
  11. package/build/engine.d/anthropic.js.map +1 -0
  12. package/build/engine.d/base.d.ts +47 -0
  13. package/build/engine.d/base.js +97 -0
  14. package/build/engine.d/base.js.map +1 -0
  15. package/build/engine.d/google-base.d.ts +36 -0
  16. package/build/engine.d/google-base.js +167 -0
  17. package/build/engine.d/google-base.js.map +1 -0
  18. package/build/engine.d/google-rest.d.ts +21 -0
  19. package/build/engine.d/google-rest.js +83 -0
  20. package/build/engine.d/google-rest.js.map +1 -0
  21. package/build/engine.d/openai-chatcompletions-base.d.ts +27 -0
  22. package/build/engine.d/openai-chatcompletions-base.js +146 -0
  23. package/build/engine.d/openai-chatcompletions-base.js.map +1 -0
  24. package/build/engine.d/openai-chatcompletions-monolith-base.d.ts +12 -0
  25. package/build/engine.d/openai-chatcompletions-monolith-base.js +68 -0
  26. package/build/engine.d/openai-chatcompletions-monolith-base.js.map +1 -0
  27. package/build/engine.d/openai-chatcompletions-stream-base.d.ts +15 -0
  28. package/build/engine.d/openai-chatcompletions-stream-base.js +173 -0
  29. package/build/engine.d/openai-chatcompletions-stream-base.js.map +1 -0
  30. package/build/engine.d/openai-chatcompletions.d.ts +8 -0
  31. package/build/engine.d/openai-chatcompletions.js +14 -0
  32. package/build/engine.d/openai-chatcompletions.js.map +1 -0
  33. package/build/engine.d/openai-responses.d.ts +76 -0
  34. package/build/engine.d/openai-responses.js +358 -0
  35. package/build/engine.d/openai-responses.js.map +1 -0
  36. package/build/engine.d/openrouter-monolith.d.ts +26 -0
  37. package/build/engine.d/openrouter-monolith.js +48 -0
  38. package/build/engine.d/openrouter-monolith.js.map +1 -0
  39. package/build/engine.d/openrouter-stream.d.ts +28 -0
  40. package/build/engine.d/openrouter-stream.js +59 -0
  41. package/build/engine.d/openrouter-stream.js.map +1 -0
  42. package/build/session.d.ts +4 -0
  43. package/build/session.js +15 -0
  44. package/build/session.js.map +1 -1
  45. package/build/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  import { Config } from '#config';
2
2
  import { Function } from './function.ts';
3
3
  import { type Engine } from './engine.ts';
4
+ import { OpenAIResponsesEngine } from './engine.d/openai-responses.ts';
4
5
  export declare class Adaptor {
5
6
  config: Config;
6
7
  static create(config: Config): Adaptor;
7
8
  private throttles;
8
9
  protected constructor(config: Config);
9
10
  makeEngine<fdm extends Function.Declaration.Map = {}>(endpoint: string, functionDeclarationMap: fdm, toolChoice?: Function.ToolChoice<fdm>, parallelFunctionCall?: boolean): Engine<Function.Declaration.From<fdm>>;
11
+ makeOpenAIResponsesEngine<fdm extends Function.Declaration.Map = {}>(endpoint: string, functionDeclarationMap: fdm, applyPatch?: boolean, toolChoice?: Function.ToolChoice<fdm>, parallelFunctionCall?: boolean): OpenAIResponsesEngine<fdm>;
10
12
  }
package/build/adaptor.js CHANGED
@@ -3,13 +3,13 @@ import { Function } from "./function.js";
3
3
  import {} from "./engine.js";
4
4
  import assert from 'node:assert';
5
5
  import { Throttle } from "./throttle.js";
6
- import { OpenAIChatCompletionsEngine } from "./api-types/openai-chatcompletions.js";
7
- import { GoogleRestfulEngine } from "./api-types/google-rest.js";
8
- import { OpenRouterMonolithEngine } from "./api-types/openrouter-monolith.js";
9
- import { OpenRouterStreamEngine } from "./api-types/openrouter-stream.js";
10
- import { AliyunEngine } from "./api-types/aliyun.js";
11
- import { OpenAIResponsesEngine } from "./api-types/openai-responses.js";
12
- import { AnthropicEngine } from "./api-types/anthropic.js";
6
+ import { OpenAIChatCompletionsEngine } from "./engine.d/openai-chatcompletions.js";
7
+ import { GoogleRestfulEngine } from "./engine.d/google-rest.js";
8
+ import { OpenRouterMonolithEngine } from "./engine.d/openrouter-monolith.js";
9
+ import { OpenRouterStreamEngine } from "./engine.d/openrouter-stream.js";
10
+ import { AliyunEngine } from "./engine.d/aliyun.js";
11
+ import { OpenAIResponsesEngine } from "./engine.d/openai-responses.js";
12
+ import { AnthropicEngine } from "./engine.d/anthropic.js";
13
13
  export class Adaptor {
14
14
  config;
15
15
  static create(config) {
@@ -52,5 +52,21 @@ export class Adaptor {
52
52
  else
53
53
  throw new Error();
54
54
  }
55
+ makeOpenAIResponsesEngine(endpoint, functionDeclarationMap, applyPatch, toolChoice, parallelFunctionCall) {
56
+ const endpointSpec = this.config.brainswitch.endpoints[endpoint];
57
+ assert(endpointSpec);
58
+ const throttle = this.throttles.get(endpoint);
59
+ assert(throttle);
60
+ const options = {
61
+ ...endpointSpec,
62
+ functionDeclarationMap,
63
+ toolChoice,
64
+ parallelFunctionCall,
65
+ throttle,
66
+ applyPatch,
67
+ };
68
+ assert(endpointSpec.apiType === 'openai-responses');
69
+ return OpenAIResponsesEngine.create(options);
70
+ }
55
71
  }
56
72
  //# sourceMappingURL=adaptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAe,MAAM,aAAa,CAAC;AAC1C,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,MAAM,OAAO,OAAO;IAMa;IALtB,MAAM,CAAC,MAAM,CAAC,MAAc;QAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAChD,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACvC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAE,CAAC,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC;YAC3F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAEM,UAAU,CACb,QAAgB,EAChB,sBAA2B,EAC3B,UAAqC,EACrC,oBAA8B;QAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,CAAC,YAAY,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjB,MAAM,OAAO,GAAwB;YACjC,GAAG,YAAY;YACf,sBAAsB;YACtB,UAAU;YACV,oBAAoB;YACpB,QAAQ;SACX,CAAC;QACF,IAAI,YAAY,CAAC,OAAO,KAAK,kBAAkB;YAC3C,OAAO,qBAAqB,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;aACjD,IAAI,YAAY,CAAC,OAAO,KAAK,wBAAwB;YACtD,OAAO,2BAA2B,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;aACvD,IAAI,YAAY,CAAC,OAAO,KAAK,QAAQ;YACtC,OAAO,mBAAmB,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;aAC/C,IAAI,YAAY,CAAC,OAAO,KAAK,QAAQ;YACtC,OAAO,YAAY,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;aACxC,IAAI,YAAY,CAAC,OAAO,KAAK,qBAAqB;YACnD,OAAO,wBAAwB,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;aACpD,IAAI,YAAY,CAAC,OAAO,KAAK,mBAAmB;YACjD,OAAO,sBAAsB,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;aAClD,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW;YACzC,OAAO,eAAe,CAAC,MAAM,CAAM,OAAO,CAAC,CAAC;;YAC3C,MAAM,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"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"}
@@ -28,12 +28,12 @@ export class EngineBase {
28
28
  * @throws {@link TypeError} 网络故障
29
29
  */
30
30
  async stateless(ctx, session) {
31
- const signalTimeout = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
32
- const signal = ctx.signal && signalTimeout ? AbortSignal.any([
33
- ctx.signal,
34
- signalTimeout,
35
- ]) : ctx.signal || signalTimeout;
36
- for (let retry = 0;; retry++)
31
+ for (let retry = 0;; retry++) {
32
+ const signalTimeout = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
33
+ const signal = ctx.signal && signalTimeout ? AbortSignal.any([
34
+ ctx.signal,
35
+ signalTimeout,
36
+ ]) : ctx.signal || signalTimeout;
37
37
  try {
38
38
  return await this.fetch(ctx, session, signal);
39
39
  }
@@ -51,6 +51,7 @@ export class EngineBase {
51
51
  else
52
52
  throw e;
53
53
  }
54
+ }
54
55
  }
55
56
  async stateful(ctx, session) {
56
57
  const response = await this.stateless(ctx, session);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api-types/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/api-types/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type OpenAI from 'openai';
2
+ import { type Engine } from '../engine.ts';
3
+ import { Function } from '../function.ts';
4
+ import { OpenAIChatCompletionsStreamEngineBase } from './openai-chatcompletions-stream-base.ts';
5
+ export declare namespace AliyunEngine {
6
+ interface ChatCompletionChunkChoiceDelta extends OpenAI.ChatCompletionChunk.Choice.Delta {
7
+ reasoning_content?: string;
8
+ }
9
+ function create<fdm extends Function.Declaration.Map = never>(options: Engine.Options<fdm>): Engine<Function.Declaration.From<fdm>>;
10
+ class Constructor<in out fdm extends Function.Declaration.Map = {}> extends OpenAIChatCompletionsStreamEngineBase<fdm> {
11
+ protected getDeltaThoughts(delta: OpenAI.ChatCompletionChunk.Choice.Delta): string;
12
+ }
13
+ }
@@ -0,0 +1,17 @@
1
+ import {} from "../engine.js";
2
+ import { Function } from "../function.js";
3
+ import { OpenAIChatCompletionsStreamEngineBase } from "./openai-chatcompletions-stream-base.js";
4
+ export var AliyunEngine;
5
+ (function (AliyunEngine) {
6
+ function create(options) {
7
+ return new Constructor(options);
8
+ }
9
+ AliyunEngine.create = create;
10
+ class Constructor extends OpenAIChatCompletionsStreamEngineBase {
11
+ getDeltaThoughts(delta) {
12
+ return delta.reasoning_content ?? '';
13
+ }
14
+ }
15
+ AliyunEngine.Constructor = Constructor;
16
+ })(AliyunEngine || (AliyunEngine = {}));
17
+ //# sourceMappingURL=aliyun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliyun.js","sourceRoot":"","sources":["../../src/engine.d/aliyun.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAIhG,MAAM,KAAW,YAAY,CAc5B;AAdD,WAAiB,YAAY;IAKzB,SAAgB,MAAM,CAA+C,OAA4B;QAC7F,OAAO,IAAI,WAAW,CAAM,OAAO,CAAC,CAAC;IACzC,CAAC;IAFe,mBAAM,SAErB,CAAA;IAED,MAAa,WAA8D,SAAQ,qCAA0C;QAC/G,gBAAgB,CAAC,KAA8C;YACrE,OAAQ,KAAqD,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC1F,CAAC;KACJ;IAJY,wBAAW,cAIvB,CAAA;AACL,CAAC,EAdgB,YAAY,KAAZ,YAAY,QAc5B"}
@@ -0,0 +1,45 @@
1
+ import { EngineBase } from './base.ts';
2
+ import { Function } from '../function.ts';
3
+ import { RoleMessage, type ChatMessage, type Session } from '../session.ts';
4
+ import { type Engine } from '../engine.ts';
5
+ import { type InferenceContext } from '../inference-context.ts';
6
+ import Anthropic from '@anthropic-ai/sdk';
7
+ export declare namespace AnthropicEngine {
8
+ function create<fdm extends Function.Declaration.Map = {}>(options: Engine.Options<fdm>): Engine<Function.Declaration.From<fdm>>;
9
+ class Constructor<in out fdm extends Function.Declaration.Map = {}> extends EngineBase<fdm> {
10
+ protected anthropic: Anthropic;
11
+ protected parallel: boolean;
12
+ protected toolChoice: Function.ToolChoice<fdm>;
13
+ constructor(options: Engine.Options<fdm>);
14
+ protected convertFromFunctionCall(fc: Function.Call.Distributive<Function.Declaration.From<fdm>>): Anthropic.ToolUseBlock;
15
+ protected convertToFunctionCall(apifc: Anthropic.ToolUseBlock): Function.Call.Distributive<Function.Declaration.From<fdm>>;
16
+ protected convertFromFunctionResponse(fr: Function.Response.Distributive<Function.Declaration.From<fdm>>): Anthropic.ToolResultBlockParam;
17
+ protected convertFromUserMessage(userMessage: RoleMessage.User<Function.Declaration.From<fdm>>): Anthropic.ContentBlockParam[];
18
+ protected convertFromAiMessage(aiMessage: RoleMessage.Ai<Function.Declaration.From<fdm>>): Anthropic.ContentBlockParam[];
19
+ protected convertFromDeveloperMessage(developerMessage: RoleMessage.Developer): Anthropic.TextBlockParam[];
20
+ protected convertFromChatMessage(chatMessage: ChatMessage<Function.Declaration.From<fdm>>): Anthropic.MessageParam;
21
+ protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): Anthropic.Tool;
22
+ protected convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>, parallel: boolean): Anthropic.ToolChoice;
23
+ protected makeParams(session: Session<Function.Declaration.From<fdm>>): Anthropic.MessageCreateParamsStreaming;
24
+ protected convertToAiMessage(raw: Anthropic.ContentBlock[]): AnthropicAiMessage<Function.Declaration.From<fdm>>;
25
+ protected calcCost(usage: Anthropic.Usage): number;
26
+ protected fetch(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, signal?: AbortSignal): Promise<RoleMessage.Ai<Function.Declaration.From<fdm>>>;
27
+ protected validateToolCallsByToolChoice(toolCalls: Function.Call.Distributive<Function.Declaration.From<fdm>>[]): void;
28
+ }
29
+ }
30
+ export type AnthropicAiMessage<fdu extends Function.Declaration> = AnthropicAiMessage.Constructor<fdu>;
31
+ export declare namespace AnthropicAiMessage {
32
+ function create<fdu extends Function.Declaration>(parts: RoleMessage.Ai.Part<fdu>[], raw: Anthropic.ContentBlock[]): AnthropicAiMessage<fdu>;
33
+ const NOMINAL: unique symbol;
34
+ class Constructor<out fdu extends Function.Declaration> extends RoleMessage.Ai.Constructor<fdu> {
35
+ raw: Anthropic.ContentBlock[];
36
+ readonly [NOMINAL]: void;
37
+ constructor(parts: RoleMessage.Ai.Part<fdu>[], raw: Anthropic.ContentBlock[]);
38
+ }
39
+ interface Snapshot<in out fdu extends Function.Declaration = never> {
40
+ parts: RoleMessage.Ai.Part.Snapshot<fdu>[];
41
+ raw: Anthropic.ContentBlock[];
42
+ }
43
+ function restore<fdu extends Function.Declaration>(snapshot: Snapshot<fdu>): AnthropicAiMessage<fdu>;
44
+ function capture<fdu extends Function.Declaration>(message: AnthropicAiMessage<fdu>): Snapshot<fdu>;
45
+ }
@@ -0,0 +1,279 @@
1
+ import { EngineBase } from "./base.js";
2
+ import { Function } from "../function.js";
3
+ import { RoleMessage } from "../session.js";
4
+ import { ResponseInvalid } from "../engine.js";
5
+ import {} from "../inference-context.js";
6
+ import Anthropic from '@anthropic-ai/sdk';
7
+ import assert from 'node:assert';
8
+ import Ajv from 'ajv';
9
+ import {} from '@sinclair/typebox';
10
+ const ajv = new Ajv();
11
+ export var AnthropicEngine;
12
+ (function (AnthropicEngine) {
13
+ function create(options) {
14
+ return new Constructor(options);
15
+ }
16
+ AnthropicEngine.create = create;
17
+ class Constructor extends EngineBase {
18
+ anthropic = new Anthropic({
19
+ baseURL: this.baseUrl,
20
+ apiKey: this.apiKey,
21
+ fetchOptions: { dispatcher: this.proxyAgent },
22
+ });
23
+ parallel;
24
+ toolChoice;
25
+ constructor(options) {
26
+ super(options);
27
+ this.parallel = options.parallelFunctionCall ?? false;
28
+ this.toolChoice = options.toolChoice ?? Function.ToolChoice.AUTO;
29
+ }
30
+ convertFromFunctionCall(fc) {
31
+ assert(fc.id);
32
+ return {
33
+ type: 'tool_use',
34
+ id: fc.id,
35
+ name: fc.name,
36
+ input: fc.args,
37
+ };
38
+ }
39
+ convertToFunctionCall(apifc) {
40
+ const fditem = this.fdm[apifc.name];
41
+ assert(fditem, new ResponseInvalid('Unknown function call', { cause: apifc }));
42
+ const args = (() => {
43
+ try {
44
+ return JSON.parse(apifc.input);
45
+ }
46
+ catch (e) {
47
+ return new ResponseInvalid('Invalid JSON of function call', { cause: apifc });
48
+ }
49
+ })();
50
+ assert(ajv.validate(fditem.paraschema, args), new ResponseInvalid('Function call not conforming to schema', { cause: apifc }));
51
+ return Function.Call.create({
52
+ id: apifc.id,
53
+ name: apifc.name,
54
+ args,
55
+ });
56
+ }
57
+ convertFromFunctionResponse(fr) {
58
+ assert(fr.id);
59
+ return {
60
+ type: 'tool_result',
61
+ tool_use_id: fr.id,
62
+ content: fr.text,
63
+ };
64
+ }
65
+ convertFromUserMessage(userMessage) {
66
+ return userMessage.parts.map(part => {
67
+ if (part instanceof RoleMessage.Part.Text.Constructor)
68
+ return {
69
+ type: 'text',
70
+ text: part.text,
71
+ };
72
+ else if (part instanceof Function.Response)
73
+ return this.convertFromFunctionResponse(part);
74
+ else
75
+ throw new Error();
76
+ });
77
+ }
78
+ convertFromAiMessage(aiMessage) {
79
+ if (aiMessage instanceof AnthropicAiMessage.Constructor)
80
+ return aiMessage.raw;
81
+ else {
82
+ return aiMessage.parts.map(part => {
83
+ if (part instanceof RoleMessage.Part.Text.Constructor)
84
+ return {
85
+ type: 'text',
86
+ text: part.text,
87
+ };
88
+ else if (part instanceof Function.Call)
89
+ return this.convertFromFunctionCall(part);
90
+ else
91
+ throw new Error();
92
+ });
93
+ }
94
+ }
95
+ convertFromDeveloperMessage(developerMessage) {
96
+ return developerMessage.parts.map(part => ({ type: 'text', text: part.text }));
97
+ }
98
+ convertFromChatMessage(chatMessage) {
99
+ if (chatMessage instanceof RoleMessage.User.Constructor)
100
+ return { role: 'user', content: this.convertFromUserMessage(chatMessage) };
101
+ else if (chatMessage instanceof RoleMessage.Ai.Constructor)
102
+ return { role: 'assistant', content: this.convertFromAiMessage(chatMessage) };
103
+ else
104
+ throw new Error();
105
+ }
106
+ convertFromFunctionDeclarationEntry(fdentry) {
107
+ return {
108
+ name: fdentry[0],
109
+ description: fdentry[1].description,
110
+ input_schema: fdentry[1].paraschema,
111
+ };
112
+ }
113
+ convertFromToolChoice(toolChoice, parallel) {
114
+ if (toolChoice === Function.ToolChoice.NONE)
115
+ return { type: 'none' };
116
+ else if (toolChoice === Function.ToolChoice.REQUIRED)
117
+ return { type: 'any', disable_parallel_tool_use: !parallel };
118
+ else if (toolChoice === Function.ToolChoice.AUTO)
119
+ return { type: 'auto', disable_parallel_tool_use: !parallel };
120
+ else {
121
+ assert(toolChoice.length === 1);
122
+ return { type: 'tool', name: toolChoice[0], disable_parallel_tool_use: !parallel };
123
+ }
124
+ }
125
+ makeParams(session) {
126
+ const fdentries = Object.entries(this.fdm);
127
+ const tools = fdentries.map(fdentry => this.convertFromFunctionDeclarationEntry(fdentry));
128
+ return {
129
+ model: this.model,
130
+ stream: true,
131
+ messages: session.chatMessages.map(chatMessage => this.convertFromChatMessage(chatMessage)),
132
+ system: session.developerMessage && this.convertFromDeveloperMessage(session.developerMessage),
133
+ tools: tools.length ? tools : undefined,
134
+ max_tokens: this.maxTokens ?? 64 * 1024,
135
+ ...this.additionalOptions,
136
+ };
137
+ }
138
+ convertToAiMessage(raw) {
139
+ const parts = raw.flatMap((item) => {
140
+ if (item.type === 'text') {
141
+ return [RoleMessage.Part.Text.create(item.text)];
142
+ }
143
+ else if (item.type === 'tool_use')
144
+ return [this.convertToFunctionCall(item)];
145
+ else if (item.type === 'thinking')
146
+ return [];
147
+ else
148
+ throw new Error();
149
+ });
150
+ return AnthropicAiMessage.create(parts, raw);
151
+ }
152
+ calcCost(usage) {
153
+ const cacheHitTokenCount = usage.cache_read_input_tokens || 0;
154
+ const cacheMissTokenCount = usage.input_tokens - cacheHitTokenCount;
155
+ return this.inputPrice * cacheMissTokenCount / 1e6 +
156
+ this.cachedPrice * cacheHitTokenCount / 1e6 +
157
+ this.outputPrice * usage.output_tokens / 1e6;
158
+ }
159
+ async fetch(ctx, session, signal) {
160
+ const params = this.makeParams(session);
161
+ ctx.logger.message?.trace(params);
162
+ await this.throttle.requests(ctx);
163
+ const stream = this.anthropic.messages.stream(params, { signal });
164
+ let response = null;
165
+ for await (const event of stream) {
166
+ if (event.type === 'message_start') {
167
+ ctx.logger.message?.trace(event);
168
+ response = structuredClone(event.message);
169
+ }
170
+ else {
171
+ assert(response);
172
+ if (event.type === 'message_delta') {
173
+ ctx.logger.message?.trace(event);
174
+ response.stop_sequence = event.delta.stop_sequence ?? response.stop_sequence;
175
+ response.stop_reason = event.delta.stop_reason ?? response.stop_reason;
176
+ response.usage.input_tokens = event.usage.input_tokens ?? response.usage.input_tokens;
177
+ response.usage.output_tokens = event.usage.output_tokens;
178
+ response.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens ?? response.usage.cache_read_input_tokens;
179
+ response.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens ?? response.usage.cache_creation_input_tokens;
180
+ response.usage.server_tool_use = event.usage.server_tool_use ?? response.usage.server_tool_use;
181
+ }
182
+ else if (event.type === 'message_stop') {
183
+ ctx.logger.message?.trace(event);
184
+ }
185
+ else if (event.type === 'content_block_start') {
186
+ ctx.logger.message?.trace(event);
187
+ const contentBlock = structuredClone(event.content_block);
188
+ response.content.push(contentBlock);
189
+ if (contentBlock.type === 'tool_use')
190
+ contentBlock.input = '';
191
+ }
192
+ else if (event.type === 'content_block_delta') {
193
+ const contentBlock = response.content[event.index];
194
+ if (event.delta.type === 'text_delta') {
195
+ ctx.logger.inference?.debug(event.delta.text);
196
+ assert(contentBlock?.type === 'text');
197
+ contentBlock.text += event.delta.text;
198
+ }
199
+ else if (event.delta.type === 'thinking_delta') {
200
+ ctx.logger.inference?.trace(event.delta.thinking);
201
+ assert(contentBlock?.type === 'thinking');
202
+ contentBlock.thinking += event.delta.thinking;
203
+ }
204
+ else if (event.delta.type === 'signature_delta') {
205
+ assert(contentBlock?.type === 'thinking');
206
+ contentBlock.signature += event.delta.signature;
207
+ }
208
+ else if (event.delta.type === 'input_json_delta') {
209
+ ctx.logger.inference?.trace(event.delta.partial_json);
210
+ assert(contentBlock?.type === 'tool_use');
211
+ assert(typeof contentBlock.input === 'string');
212
+ contentBlock.input += event.delta.partial_json;
213
+ }
214
+ else
215
+ throw new Error('Unknown type of content block delta', { cause: event.delta });
216
+ }
217
+ else if (event.type === 'content_block_stop') {
218
+ const contentBlock = response.content[event.index];
219
+ if (contentBlock?.type === 'text')
220
+ ctx.logger.inference?.debug('\n');
221
+ else if (contentBlock?.type === 'thinking')
222
+ ctx.logger.inference?.trace('\n');
223
+ else if (contentBlock?.type === 'tool_use')
224
+ ctx.logger.inference?.debug('\n');
225
+ ctx.logger.message?.trace(event);
226
+ if (contentBlock?.type === 'tool_use') {
227
+ assert(typeof contentBlock.input === 'string');
228
+ ctx.logger.message?.debug(contentBlock);
229
+ }
230
+ }
231
+ else
232
+ throw new Error('Unknown stream event', { cause: event });
233
+ }
234
+ }
235
+ assert(response);
236
+ if (response.stop_reason === 'max_tokens')
237
+ throw new ResponseInvalid('Token limit exceeded.', { cause: response });
238
+ assert(response.stop_reason === 'end_turn' || response.stop_reason === 'tool_use', new ResponseInvalid('Abnormal stop reason', { cause: response }));
239
+ const cost = this.calcCost(response.usage);
240
+ ctx.logger.cost?.(cost);
241
+ ctx.logger.message?.debug(response.usage);
242
+ const aiMessage = this.convertToAiMessage(response.content);
243
+ this.validateToolCallsByToolChoice(aiMessage.getFunctionCalls());
244
+ return aiMessage;
245
+ }
246
+ validateToolCallsByToolChoice(toolCalls) {
247
+ return EngineBase.validateToolCallsByToolChoice(this.toolChoice, toolCalls);
248
+ }
249
+ }
250
+ AnthropicEngine.Constructor = Constructor;
251
+ })(AnthropicEngine || (AnthropicEngine = {}));
252
+ export var AnthropicAiMessage;
253
+ (function (AnthropicAiMessage) {
254
+ function create(parts, raw) {
255
+ return new Constructor(parts, raw);
256
+ }
257
+ AnthropicAiMessage.create = create;
258
+ AnthropicAiMessage.NOMINAL = Symbol();
259
+ class Constructor extends RoleMessage.Ai.Constructor {
260
+ raw;
261
+ constructor(parts, raw) {
262
+ super(parts);
263
+ this.raw = raw;
264
+ }
265
+ }
266
+ AnthropicAiMessage.Constructor = Constructor;
267
+ function restore(snapshot) {
268
+ return new Constructor(RoleMessage.Ai.restore(snapshot.parts).parts, snapshot.raw);
269
+ }
270
+ AnthropicAiMessage.restore = restore;
271
+ function capture(message) {
272
+ return {
273
+ parts: RoleMessage.Ai.capture(message),
274
+ raw: message.raw,
275
+ };
276
+ }
277
+ AnthropicAiMessage.capture = capture;
278
+ })(AnthropicAiMessage || (AnthropicAiMessage = {}));
279
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/engine.d/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Function } from '../function.ts';
2
+ import { type Engine } from '../engine.ts';
3
+ import { Throttle } from '../throttle.ts';
4
+ import { ProxyAgent } from 'undici';
5
+ import { type InferenceContext } from '../inference-context.ts';
6
+ import { type Session, type RoleMessage } from '../session.ts';
7
+ export declare abstract class EngineBase<in out fdm extends Function.Declaration.Map = {}> implements Engine<Function.Declaration.From<fdm>> {
8
+ protected baseUrl: string;
9
+ protected apiKey: string;
10
+ protected model: string;
11
+ name: string;
12
+ protected inputPrice: number;
13
+ protected outputPrice: number;
14
+ protected cachedPrice: number;
15
+ protected fdm: fdm;
16
+ protected abstract parallel: boolean;
17
+ protected additionalOptions?: Record<string, unknown>;
18
+ protected throttle: Throttle;
19
+ protected timeout?: number;
20
+ protected maxTokens?: number;
21
+ protected proxyAgent?: ProxyAgent;
22
+ /**
23
+ * @throws {@link ResponseInvalid} 模型抽风
24
+ * @throws {@link TypeError} 网络故障
25
+ */
26
+ protected abstract fetch(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>, signal?: AbortSignal): Promise<RoleMessage.Ai<Function.Declaration.From<fdm>>>;
27
+ /**
28
+ * @throws {@link UserAbortion} 用户中止
29
+ * @throws {@link InferenceTimeout} 推理超时
30
+ * @throws {@link ResponseInvalid} 模型抽风
31
+ * @throws {@link TypeError} 网络故障
32
+ */
33
+ stateless(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>): Promise<RoleMessage.Ai<Function.Declaration.From<fdm>>>;
34
+ stateful(ctx: InferenceContext, session: Session<Function.Declaration.From<fdm>>): Promise<RoleMessage.Ai<Function.Declaration.From<fdm>>>;
35
+ appendUserMessage(session: Session<Function.Declaration.From<fdm>>, message: RoleMessage.User<Function.Declaration.From<fdm>>): Session<Function.Declaration.From<fdm>>;
36
+ pushUserMessage(session: Session<Function.Declaration.From<fdm>>, message: RoleMessage.User<Function.Declaration.From<fdm>>): Session<Function.Declaration.From<fdm>>;
37
+ constructor(options: Engine.Options<fdm>);
38
+ protected abstract validateToolCallsByToolChoice(toolCalls: Function.Call.Distributive<Function.Declaration.From<fdm>>[]): void;
39
+ protected static validateToolCallsByToolChoice<fdm extends Function.Declaration.Map = {}>(toolChoice: Function.ToolChoice<fdm>, toolCalls: Function.Call.Distributive<Function.Declaration.From<fdm>>[]): void;
40
+ }
41
+ declare global {
42
+ export namespace NodeJS {
43
+ interface ProcessEnv {
44
+ https_proxy?: string;
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,97 @@
1
+ import { Function } from "../function.js";
2
+ import { UserAbortion, InferenceTimeout, ResponseInvalid } from "../engine.js";
3
+ import { Throttle } from "../throttle.js";
4
+ import { ProxyAgent } from 'undici';
5
+ import {} from "../inference-context.js";
6
+ import {} from "../session.js";
7
+ import assert from 'node:assert';
8
+ import { env } from 'node:process';
9
+ export class EngineBase {
10
+ baseUrl;
11
+ apiKey;
12
+ model;
13
+ name;
14
+ inputPrice;
15
+ outputPrice;
16
+ cachedPrice;
17
+ fdm;
18
+ additionalOptions;
19
+ throttle;
20
+ timeout;
21
+ maxTokens;
22
+ proxyAgent;
23
+ /**
24
+ * @throws {@link UserAbortion} 用户中止
25
+ * @throws {@link InferenceTimeout} 推理超时
26
+ * @throws {@link ResponseInvalid} 模型抽风
27
+ * @throws {@link TypeError} 网络故障
28
+ */
29
+ async stateless(ctx, session) {
30
+ for (let retry = 0;; retry++) {
31
+ const signalTimeout = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
32
+ const signal = ctx.signal && signalTimeout ? AbortSignal.any([
33
+ ctx.signal,
34
+ signalTimeout,
35
+ ]) : ctx.signal || signalTimeout;
36
+ try {
37
+ return await this.fetch(ctx, session, signal);
38
+ }
39
+ catch (e) {
40
+ if (ctx.signal?.aborted)
41
+ throw new UserAbortion(); // 用户中止
42
+ else if (signalTimeout?.aborted)
43
+ e = new InferenceTimeout(undefined, { cause: e }); // 推理超时
44
+ else if (e instanceof ResponseInvalid) { } // 模型抽风
45
+ else if (e instanceof TypeError) { } // 网络故障
46
+ else
47
+ throw e;
48
+ if (retry < 3)
49
+ ctx.logger.message?.warn(e);
50
+ else
51
+ throw e;
52
+ }
53
+ }
54
+ }
55
+ async stateful(ctx, session) {
56
+ const response = await this.stateless(ctx, session);
57
+ session.chatMessages.push(response);
58
+ return response;
59
+ }
60
+ appendUserMessage(session, message) {
61
+ return {
62
+ ...session,
63
+ chatMessages: [...session.chatMessages, message],
64
+ };
65
+ }
66
+ pushUserMessage(session, message) {
67
+ session.chatMessages.push(message);
68
+ return session;
69
+ }
70
+ constructor(options) {
71
+ this.baseUrl = options.baseUrl;
72
+ this.apiKey = options.apiKey;
73
+ this.model = options.model;
74
+ this.name = options.name;
75
+ this.inputPrice = options.inputPrice ?? 0;
76
+ this.outputPrice = options.outputPrice ?? 0;
77
+ this.cachedPrice = options.cachePrice ?? this.inputPrice;
78
+ this.fdm = options.functionDeclarationMap;
79
+ // this.toolChoice = options.toolChoice ?? Function.ToolChoice.AUTO;
80
+ this.additionalOptions = options.additionalOptions;
81
+ this.throttle = options.throttle;
82
+ this.timeout = options.timeout;
83
+ this.maxTokens = options.maxTokens;
84
+ const proxyUrl = env.https_proxy || env.HTTPS_PROXY;
85
+ this.proxyAgent = proxyUrl ? new ProxyAgent(proxyUrl) : undefined;
86
+ }
87
+ static validateToolCallsByToolChoice(toolChoice, toolCalls) {
88
+ if (toolChoice === Function.ToolChoice.REQUIRED)
89
+ assert(toolCalls.length, new ResponseInvalid('Function call required but missing'));
90
+ else if (toolChoice instanceof Array)
91
+ for (const fc of toolCalls)
92
+ assert(toolChoice.includes(fc.name), new ResponseInvalid('Function call not in allowed tools'));
93
+ else if (toolChoice === Function.ToolChoice.NONE)
94
+ assert(!toolCalls.length, new ResponseInvalid('Function call not allowed but made'));
95
+ }
96
+ }
97
+ //# sourceMappingURL=base.js.map