@zimtsui/brainswitch 0.0.54 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPMENT.md +13 -14
- package/README.md +7 -14
- package/build/adaptor.d.ts +5 -5
- package/build/adaptor.js +16 -16
- package/build/adaptor.js.map +1 -1
- package/build/agentloop.d.ts +5 -5
- package/build/agentloop.js +4 -4
- package/build/agentloop.js.map +1 -1
- package/build/api-types/anthropic/billing.d.ts +12 -0
- package/build/api-types/anthropic/billing.js +15 -0
- package/build/api-types/anthropic/billing.js.map +1 -0
- package/build/api-types/anthropic/tool-codec.d.ts +17 -0
- package/build/api-types/anthropic/tool-codec.js +73 -0
- package/build/api-types/anthropic/tool-codec.js.map +1 -0
- package/build/api-types/google/billing.d.ts +12 -0
- package/build/api-types/google/billing.js +24 -0
- package/build/api-types/google/billing.js.map +1 -0
- package/build/api-types/google/restful-request.d.ts +8 -0
- package/build/api-types/google/restful-request.js +2 -0
- package/build/api-types/google/restful-request.js.map +1 -0
- package/build/api-types/google/tool-codec.d.ts +16 -0
- package/build/api-types/{google.js → google/tool-codec.js} +27 -26
- package/build/api-types/google/tool-codec.js.map +1 -0
- package/build/api-types/openai-chatcompletion/billing.d.ts +13 -0
- package/build/api-types/openai-chatcompletion/billing.js +16 -0
- package/build/api-types/openai-chatcompletion/billing.js.map +1 -0
- package/build/api-types/openai-chatcompletion/tool-codec.d.ts +18 -0
- package/build/api-types/openai-chatcompletion/tool-codec.js +86 -0
- package/build/api-types/openai-chatcompletion/tool-codec.js.map +1 -0
- package/build/api-types/openai-responses/billing.d.ts +12 -0
- package/build/api-types/openai-responses/billing.js +15 -0
- package/build/api-types/openai-responses/billing.js.map +1 -0
- package/build/api-types/openai-responses/tool-codec.d.ts +16 -0
- package/build/api-types/openai-responses/tool-codec.js +72 -0
- package/build/api-types/openai-responses/tool-codec.js.map +1 -0
- package/build/compatible/engine.d/aliyun.d.ts +23 -0
- package/build/compatible/engine.d/aliyun.js +44 -0
- package/build/compatible/engine.d/aliyun.js.map +1 -0
- package/build/compatible/engine.d/anthropic.d.ts +23 -0
- package/build/compatible/engine.d/anthropic.js +41 -0
- package/build/compatible/engine.d/anthropic.js.map +1 -0
- package/build/compatible/engine.d/google.d.ts +23 -0
- package/build/compatible/engine.d/google.js +45 -0
- package/build/compatible/engine.d/google.js.map +1 -0
- package/build/compatible/engine.d/openai-responses.d.ts +23 -0
- package/build/compatible/engine.d/openai-responses.js +41 -0
- package/build/compatible/engine.d/openai-responses.js.map +1 -0
- package/build/compatible/engine.d.ts +18 -0
- package/build/compatible/engine.js +21 -0
- package/build/compatible/engine.js.map +1 -0
- package/build/compatible/session.d.ts +78 -0
- package/build/compatible/session.js +138 -0
- package/build/compatible/session.js.map +1 -0
- package/build/compatible/tool-call-validator.d.ts +11 -0
- package/build/compatible/tool-call-validator.js +12 -0
- package/build/compatible/tool-call-validator.js.map +1 -0
- package/build/compatible.d/aliyun/transport.d.ts +11 -0
- package/build/compatible.d/aliyun/transport.js +9 -0
- package/build/compatible.d/aliyun/transport.js.map +1 -0
- package/build/compatible.d/anthropic/message-codec.d.ts +31 -0
- package/build/compatible.d/anthropic/message-codec.js +88 -0
- package/build/compatible.d/anthropic/message-codec.js.map +1 -0
- package/build/compatible.d/anthropic/transport.d.ts +31 -0
- package/build/compatible.d/anthropic/transport.js +137 -0
- package/build/compatible.d/anthropic/transport.js.map +1 -0
- package/build/compatible.d/google/message-codec.d.ts +31 -0
- package/build/compatible.d/google/message-codec.js +98 -0
- package/build/compatible.d/google/message-codec.js.map +1 -0
- package/build/compatible.d/google/transport.d.ts +28 -0
- package/build/compatible.d/google/transport.js +74 -0
- package/build/compatible.d/google/transport.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions/message-codec.d.ts +19 -0
- package/build/compatible.d/openai-chatcompletions/message-codec.js +66 -0
- package/build/compatible.d/openai-chatcompletions/message-codec.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions/transport.d.ts +9 -0
- package/build/compatible.d/openai-chatcompletions/transport.js +25 -0
- package/build/compatible.d/openai-chatcompletions/transport.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions.d/monolith.d.ts +36 -0
- package/build/compatible.d/openai-chatcompletions.d/monolith.js +74 -0
- package/build/compatible.d/openai-chatcompletions.d/monolith.js.map +1 -0
- package/build/compatible.d/openai-chatcompletions.d/stream.d.ts +35 -0
- package/build/{compatible-engines.d → compatible.d}/openai-chatcompletions.d/stream.js +52 -42
- package/build/compatible.d/openai-chatcompletions.d/stream.js.map +1 -0
- package/build/compatible.d/openai-responses/message-codec.d.ts +32 -0
- package/build/compatible.d/openai-responses/message-codec.js +105 -0
- package/build/compatible.d/openai-responses/message-codec.js.map +1 -0
- package/build/compatible.d/openai-responses/transport.d.ts +33 -0
- package/build/compatible.d/openai-responses/transport.js +88 -0
- package/build/compatible.d/openai-responses/transport.js.map +1 -0
- package/build/config.js +1 -1
- package/build/config.js.map +1 -1
- package/build/engine.d.ts +48 -26
- package/build/engine.js +78 -29
- package/build/engine.js.map +1 -1
- package/build/exports.d.ts +14 -13
- package/build/exports.js +14 -13
- package/build/exports.js.map +1 -1
- package/build/function.d.ts +25 -13
- package/build/function.js +2 -1
- package/build/function.js.map +1 -1
- package/build/inference-context.d.ts +1 -1
- package/build/native-engines.d/google/agentloop.d.ts +6 -6
- package/build/native-engines.d/google/agentloop.js +5 -5
- package/build/native-engines.d/google/agentloop.js.map +1 -1
- package/build/native-engines.d/google/engine.d.ts +28 -103
- package/build/native-engines.d/google/engine.js +63 -304
- package/build/native-engines.d/google/engine.js.map +1 -1
- package/build/native-engines.d/google/exports.d.ts +5 -5
- package/build/native-engines.d/google/exports.js +5 -5
- package/build/native-engines.d/google/exports.js.map +1 -1
- package/build/native-engines.d/google/message-codec.d.ts +21 -0
- package/build/native-engines.d/google/message-codec.js +69 -0
- package/build/native-engines.d/google/message-codec.js.map +1 -0
- package/build/native-engines.d/google/session.d.ts +16 -15
- package/build/native-engines.d/google/session.js +2 -2
- package/build/native-engines.d/google/session.js.map +1 -1
- package/build/native-engines.d/google/transport.d.ts +31 -0
- package/build/native-engines.d/google/transport.js +81 -0
- package/build/native-engines.d/google/transport.js.map +1 -0
- package/build/native-engines.d/openai-responses/agentloop.d.ts +7 -7
- package/build/native-engines.d/openai-responses/agentloop.js +6 -6
- package/build/native-engines.d/openai-responses/agentloop.js.map +1 -1
- package/build/native-engines.d/openai-responses/engine.d.ts +26 -106
- package/build/native-engines.d/openai-responses/engine.js +53 -334
- package/build/native-engines.d/openai-responses/engine.js.map +1 -1
- package/build/native-engines.d/openai-responses/exports.d.ts +6 -7
- package/build/native-engines.d/openai-responses/exports.js +6 -7
- package/build/native-engines.d/openai-responses/exports.js.map +1 -1
- package/build/native-engines.d/openai-responses/message-codec.d.ts +21 -0
- package/build/native-engines.d/openai-responses/message-codec.js +69 -0
- package/build/native-engines.d/openai-responses/message-codec.js.map +1 -0
- package/build/native-engines.d/openai-responses/session.d.ts +27 -26
- package/build/native-engines.d/openai-responses/session.js +3 -3
- package/build/native-engines.d/openai-responses/session.js.map +1 -1
- package/build/native-engines.d/openai-responses/tool-call-validator.d.ts +12 -0
- package/build/native-engines.d/openai-responses/tool-call-validator.js +33 -0
- package/build/native-engines.d/openai-responses/tool-call-validator.js.map +1 -0
- package/build/native-engines.d/openai-responses/tool.d.ts +3 -3
- package/build/native-engines.d/openai-responses/tool.js +1 -1
- package/build/native-engines.d/openai-responses/tool.js.map +1 -1
- package/build/native-engines.d/openai-responses/transport.d.ts +36 -0
- package/build/native-engines.d/openai-responses/transport.js +104 -0
- package/build/native-engines.d/openai-responses/transport.js.map +1 -0
- package/build/session.d.ts +5 -75
- package/build/session.js +0 -136
- package/build/session.js.map +1 -1
- package/build/throttle.d.ts +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/test/build/test-codecs.js +230 -0
- package/test/build/test-codecs.js.map +1 -0
- package/test/build/test-compatible-engine.d.ts +1 -0
- package/test/build/test-compatible-engine.js +27 -0
- package/test/build/test-compatible-engine.js.map +1 -0
- package/test/build/test-compatible-engines.d.ts +1 -0
- package/test/build/test-compatible-engines.js +112 -0
- package/test/build/test-compatible-engines.js.map +1 -0
- package/test/build/test-engine.d.ts +1 -0
- package/test/build/test-engine.js +97 -0
- package/test/build/test-engine.js.map +1 -0
- package/test/build/test-helpers.d.ts +46 -0
- package/test/build/test-helpers.js +45 -0
- package/test/build/test-helpers.js.map +1 -0
- package/test/build/test-native-engines.d.ts +1 -0
- package/test/build/test-native-engines.js +64 -0
- package/test/build/test-native-engines.js.map +1 -0
- package/test/build/test.d.ts +5 -0
- package/test/build/test.js +6 -0
- package/test/build/test.js.map +1 -0
- package/test/build/tsconfig.tsbuildinfo +1 -0
- package/test/src/test-codecs.ts +256 -0
- package/test/src/test-compatible-engine.ts +45 -0
- package/test/src/test-compatible-engines.ts +129 -0
- package/test/src/test-engine.ts +144 -0
- package/test/src/test-helpers.ts +53 -0
- package/test/src/test-native-engines.ts +75 -0
- package/test/src/test.ts +5 -0
- package/test/src/tsconfig.json +30 -0
- package/build/api-types/anthropic.d.ts +0 -29
- package/build/api-types/anthropic.js +0 -93
- package/build/api-types/anthropic.js.map +0 -1
- package/build/api-types/google.d.ts +0 -28
- package/build/api-types/google.js.map +0 -1
- package/build/api-types/openai-chat-completions.d.ts +0 -31
- package/build/api-types/openai-chat-completions.js +0 -113
- package/build/api-types/openai-chat-completions.js.map +0 -1
- package/build/api-types/openai-responses.d.ts +0 -23
- package/build/api-types/openai-responses.js +0 -71
- package/build/api-types/openai-responses.js.map +0 -1
- package/build/compatible-engine.d.ts +0 -51
- package/build/compatible-engine.js +0 -67
- package/build/compatible-engine.js.map +0 -1
- package/build/compatible-engines.d/aliyun.d.ts +0 -69
- package/build/compatible-engines.d/aliyun.js +0 -149
- package/build/compatible-engines.d/aliyun.js.map +0 -1
- package/build/compatible-engines.d/anthropic.d.ts +0 -78
- package/build/compatible-engines.d/anthropic.js +0 -312
- package/build/compatible-engines.d/anthropic.js.map +0 -1
- package/build/compatible-engines.d/google.d.ts +0 -83
- package/build/compatible-engines.d/google.js +0 -279
- package/build/compatible-engines.d/google.js.map +0 -1
- package/build/compatible-engines.d/openai-chatcompletions.d/monolith.d.ts +0 -15
- package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js +0 -75
- package/build/compatible-engines.d/openai-chatcompletions.d/monolith.js.map +0 -1
- package/build/compatible-engines.d/openai-chatcompletions.d/stream.d.ts +0 -21
- package/build/compatible-engines.d/openai-chatcompletions.d/stream.js.map +0 -1
- package/build/compatible-engines.d/openai-chatcompletions.d.ts +0 -27
- package/build/compatible-engines.d/openai-chatcompletions.js +0 -76
- package/build/compatible-engines.d/openai-chatcompletions.js.map +0 -1
- package/build/compatible-engines.d/openai-responses.d.ts +0 -93
- package/build/compatible-engines.d/openai-responses.js +0 -300
- package/build/compatible-engines.d/openai-responses.js.map +0 -1
- package/build/test.js +0 -198
- package/build/test.js.map +0 -1
- /package/{build/test.d.ts → test/build/test-codecs.d.ts} +0 -0
package/DEVELOPMENT.md
CHANGED
|
@@ -3,21 +3,20 @@
|
|
|
3
3
|
```mermaid
|
|
4
4
|
classDiagram
|
|
5
5
|
|
|
6
|
-
OpenAIResponsesEngine <|.. OpenAIResponsesNativeEngine
|
|
7
|
-
|
|
8
|
-
CompatibleEngine <|.. OpenAIResponsesCompatibleEngine
|
|
9
|
-
OpenAIResponsesEngine <|.. OpenAIResponsesCompatibleEngine
|
|
10
|
-
Engine <|.. OpenAIResponsesEngine
|
|
11
|
-
|
|
12
6
|
Engine <|.. CompatibleEngine
|
|
13
7
|
|
|
14
|
-
Engine <|..
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
OpenAIChatCompletionsCompatibleEngine <|.. OpenAIChatCompletionsCompatibleMonolithEngine
|
|
18
|
-
OpenAIChatCompletionsCompatibleEngine <|.. OpenAIChatCompletionsCompatibleStreamEngine
|
|
19
|
-
```
|
|
8
|
+
Engine <|.. OpenAIResponsesNativeEngine
|
|
9
|
+
OpenAIResponsesNativeEngine o--> OpenAIResponsesNativeHelpers
|
|
10
|
+
OpenAIResponsesNativeHelpers o--> OpenAIResponsesHelpers
|
|
20
11
|
|
|
21
|
-
|
|
12
|
+
CompatibleEngine <|.. AliyunEngine
|
|
13
|
+
OpenAIChatCompletionsCompatibleHelpers o--> OpenAIChatCompletionsHelpers
|
|
14
|
+
OpenAIChatCompletionsCompatibleMonolithHelpers o--> OpenAIChatCompletionsCompatibleHelpers
|
|
15
|
+
OpenAIChatCompletionsCompatibleStreamHelpers o--> OpenAIChatCompletionsCompatibleHelpers
|
|
16
|
+
AliyunEngine o--> OpenAIChatCompletionsCompatibleStreamHelpers
|
|
22
17
|
|
|
23
|
-
|
|
18
|
+
CompatibleEngine <|.. OpenAICompatibleEngine
|
|
19
|
+
OpenAICompatibleEngine o--> OpenAIResponsesCompatibleHelpers
|
|
20
|
+
OpenAIResponsesCompatibleHelpers o--> OpenAIResponsesHelpers
|
|
21
|
+
|
|
22
|
+
```
|
package/README.md
CHANGED
|
@@ -4,13 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@zimtsui/brainswitch)
|
|
6
6
|
|
|
7
|
-
Brainswitch
|
|
8
|
-
|
|
9
|
-
## Motivation
|
|
10
|
-
|
|
11
|
-
大多数 LLM 的[聊天模板](https://huggingface.co/docs/transformers/en/chat_templating) ChatML 原生不支持[严格函数调用](https://platform.openai.com/docs/guides/function-calling#strict-mode),在批处理 AI 工作流中难以达到生产级可靠性。如果仅使用 OpenAI 等支持严格函数调用的服务商,那么可选的模型型号会大幅受限。
|
|
12
|
-
|
|
13
|
-
Brainswitch 支持在一次会话中途切换模型并保持对话上下文,包括 OpenAI、Google、Anthropic 的深度思考模型[交替思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking)的加密思考内容,这样即可在会话的大量推理阶段使用最合适的模型生成自然语言结果,在最后的总结阶段切换成支持严格函数调用的模型进行结构化提交。
|
|
7
|
+
Brainswitch 是一个强类型的 LLM 推理 API 适配器。
|
|
14
8
|
|
|
15
9
|
## 支持服务商 API 类型
|
|
16
10
|
|
|
@@ -69,11 +63,10 @@ export type Config = {
|
|
|
69
63
|
## 快速上手
|
|
70
64
|
|
|
71
65
|
```ts
|
|
72
|
-
import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext, type Config, Session } from '@zimtsui/brainswitch';
|
|
66
|
+
import { Adaptor, agentloop, RoleMessage, Function, type InferenceContext, type Config, type Session } from '@zimtsui/brainswitch';
|
|
73
67
|
import { Type } from '@sinclair/typebox';
|
|
74
68
|
import { RWLock } from '@zimtsui/coroutine-locks';
|
|
75
|
-
|
|
76
|
-
import * as Presets from '@zimtsui/typelog/presets';
|
|
69
|
+
|
|
77
70
|
|
|
78
71
|
// 配置推理服务商 API 接入点
|
|
79
72
|
const config: Config = {
|
|
@@ -115,7 +108,6 @@ const fdm = {
|
|
|
115
108
|
},
|
|
116
109
|
} satisfies Function.Declaration.Map;
|
|
117
110
|
type fdm = typeof fdm;
|
|
118
|
-
type fdu = Function.Declaration.From<fdm>;
|
|
119
111
|
|
|
120
112
|
// 实现函数工具
|
|
121
113
|
export class Submission {
|
|
@@ -132,15 +124,16 @@ const fnm: Function.Map<fdm> = {
|
|
|
132
124
|
};
|
|
133
125
|
|
|
134
126
|
// 初始化工作流上下文
|
|
135
|
-
const
|
|
127
|
+
const wfctx: InferenceContext = {
|
|
136
128
|
busy: new RWLock(),
|
|
137
129
|
cost(deltaCost) {
|
|
138
130
|
console.log((-deltaCost).toFixed(2));
|
|
139
131
|
},
|
|
132
|
+
signal: null,
|
|
140
133
|
};
|
|
141
134
|
|
|
142
135
|
// 创建会话
|
|
143
|
-
const session: Session<
|
|
136
|
+
const session: Session<fdm> = {
|
|
144
137
|
developerMessage: RoleMessage.Developer.create([
|
|
145
138
|
RoleMessage.Part.Text.create('你的工作是为用户查询天气,并给出穿衣建议。调用工具提交最终结果'),
|
|
146
139
|
]),
|
|
@@ -155,7 +148,7 @@ const engine = adaptor.makeEngine('gpt-5-mini', fdm, Function.ToolChoice.REQUIRE
|
|
|
155
148
|
|
|
156
149
|
// 使用 agentloop 驱动智能体循环,最多 8 轮对话
|
|
157
150
|
try {
|
|
158
|
-
for await (const text of agentloop(
|
|
151
|
+
for await (const text of agentloop(wfctx, session, engine, fnm, 8)) console.log(text);
|
|
159
152
|
} catch (e) {
|
|
160
153
|
if (e instanceof Submission) {} else throw e;
|
|
161
154
|
console.log(e.weather);
|
package/build/adaptor.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Config } from '
|
|
2
|
-
import { Function } from '
|
|
3
|
-
import { type CompatibleEngine } from '
|
|
4
|
-
import { OpenAIResponsesNativeEngine } from '
|
|
5
|
-
import { GoogleNativeEngine } from '
|
|
1
|
+
import { Config } from '#@/config.ts';
|
|
2
|
+
import { Function } from '#@/function.ts';
|
|
3
|
+
import { type CompatibleEngine } from '#@/compatible/engine.ts';
|
|
4
|
+
import { OpenAIResponsesNativeEngine } from '#@/native-engines.d/openai-responses/engine.ts';
|
|
5
|
+
import { GoogleNativeEngine } from '#@/native-engines.d/google/engine.ts';
|
|
6
6
|
export declare class Adaptor {
|
|
7
7
|
config: Config;
|
|
8
8
|
static create(config: Config): Adaptor;
|
package/build/adaptor.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Config } from '
|
|
2
|
-
import { Function } from
|
|
3
|
-
import {} from
|
|
4
|
-
import { Throttle } from
|
|
5
|
-
import { GoogleCompatibleEngine } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { OpenAIResponsesNativeEngine } from
|
|
10
|
-
import { GoogleNativeEngine } from
|
|
1
|
+
import { Config } from '#@/config.ts';
|
|
2
|
+
import { Function } from '#@/function.ts';
|
|
3
|
+
import {} from '#@/compatible/engine.ts';
|
|
4
|
+
import { Throttle } from '#@/throttle.ts';
|
|
5
|
+
import { GoogleCompatibleEngine } from '#@/compatible/engine.d/google.ts';
|
|
6
|
+
import { OpenAIResponsesCompatibleEngine } from '#@/compatible/engine.d/openai-responses.ts';
|
|
7
|
+
import { AnthropicCompatibleEngine } from '#@/compatible/engine.d/anthropic.ts';
|
|
8
|
+
import { AliyunEngine } from '#@/compatible/engine.d/aliyun.ts';
|
|
9
|
+
import { OpenAIResponsesNativeEngine } from '#@/native-engines.d/openai-responses/engine.ts';
|
|
10
|
+
import { GoogleNativeEngine } from '#@/native-engines.d/google/engine.ts';
|
|
11
11
|
export class Adaptor {
|
|
12
12
|
config;
|
|
13
13
|
static create(config) {
|
|
@@ -38,13 +38,13 @@ export class Adaptor {
|
|
|
38
38
|
throttle,
|
|
39
39
|
};
|
|
40
40
|
if (endpointSpec.apiType === 'openai-responses')
|
|
41
|
-
return OpenAIResponsesCompatibleEngine
|
|
41
|
+
return new OpenAIResponsesCompatibleEngine(options);
|
|
42
42
|
else if (endpointSpec.apiType === 'google')
|
|
43
|
-
return GoogleCompatibleEngine
|
|
43
|
+
return new GoogleCompatibleEngine(options);
|
|
44
44
|
else if (endpointSpec.apiType === 'aliyun')
|
|
45
|
-
return AliyunEngine
|
|
45
|
+
return new AliyunEngine(options);
|
|
46
46
|
else if (endpointSpec.apiType === 'anthropic')
|
|
47
|
-
return AnthropicCompatibleEngine
|
|
47
|
+
return new AnthropicCompatibleEngine(options);
|
|
48
48
|
else
|
|
49
49
|
throw new Error();
|
|
50
50
|
}
|
|
@@ -65,7 +65,7 @@ export class Adaptor {
|
|
|
65
65
|
throttle,
|
|
66
66
|
applyPatch,
|
|
67
67
|
};
|
|
68
|
-
return OpenAIResponsesNativeEngine
|
|
68
|
+
return new OpenAIResponsesNativeEngine(options);
|
|
69
69
|
}
|
|
70
70
|
makeGoogleNativeEngine(endpoint, functionDeclarationMap, toolChoice, codeExecution, urlContext, googleSearch, parallelToolCall) {
|
|
71
71
|
const endpointSpec = this.config.brainswitch.endpoints[endpoint];
|
|
@@ -86,7 +86,7 @@ export class Adaptor {
|
|
|
86
86
|
urlContext,
|
|
87
87
|
googleSearch,
|
|
88
88
|
};
|
|
89
|
-
return GoogleNativeEngine
|
|
89
|
+
return new GoogleNativeEngine(options);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
//# sourceMappingURL=adaptor.js.map
|
package/build/adaptor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../src/adaptor.ts"],"names":[],"mappings":"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"}
|
package/build/agentloop.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { type InferenceContext } from '
|
|
2
|
-
import { type Session } from '
|
|
3
|
-
import { Function } from '
|
|
4
|
-
import { type CompatibleEngine } from '
|
|
1
|
+
import { type InferenceContext } from '#@/inference-context.ts';
|
|
2
|
+
import { type Session } from '#@/compatible/session.ts';
|
|
3
|
+
import { Function } from '#@/function.ts';
|
|
4
|
+
import { type CompatibleEngine } from '#@/compatible/engine.ts';
|
|
5
5
|
/**
|
|
6
6
|
* @param session mutable
|
|
7
7
|
*/
|
|
8
|
-
export declare function agentloop<fdm extends Function.Declaration.Map>(wfctx: InferenceContext, session: Session<
|
|
8
|
+
export declare function agentloop<fdm extends Function.Declaration.Map>(wfctx: InferenceContext, session: Session<fdm>, engine: CompatibleEngine<fdm>, fnm: Function.Map<fdm>, limit?: number): AsyncGenerator<string, string, void>;
|
|
9
9
|
export declare namespace agentloop {
|
|
10
10
|
class FunctionCallLimitExceeded extends Error {
|
|
11
11
|
}
|
package/build/agentloop.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {} from
|
|
2
|
-
import { RoleMessage } from
|
|
3
|
-
import { Function } from
|
|
4
|
-
import {} from
|
|
1
|
+
import {} from '#@/inference-context.ts';
|
|
2
|
+
import { RoleMessage } from '#@/compatible/session.ts';
|
|
3
|
+
import { Function } from '#@/function.ts';
|
|
4
|
+
import {} from '#@/compatible/engine.ts';
|
|
5
5
|
/**
|
|
6
6
|
* @param session mutable
|
|
7
7
|
*/
|
package/build/agentloop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,
|
|
1
|
+
{"version":3,"file":"agentloop.js","sourceRoot":"","sources":["../src/agentloop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAyB,MAAM,yBAAyB,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,SAAS,CAC5B,KAAuB,EACvB,OAAqB,EACrB,MAA6B,EAC7B,GAAsB,EACtB,KAAK,GAAG,MAAM,CAAC,iBAAiB;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAmD,EAAE,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrC,IAAI,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,CAAC,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,IAA+B,CAAC;gBAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;oBAClB,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAM;wBACjC,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;qBACM,CAAC,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,CAAC;;gBAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAM,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,CAAC;AACnF,CAAC;AAED,WAAiB,SAAS;IACtB,MAAa,yBAA0B,SAAQ,KAAK;KAAG;IAA1C,mCAAyB,4BAAiB,CAAA;AAC3D,CAAC,EAFgB,SAAS,KAAT,SAAS,QAEzB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Pricing } from '#@/engine.ts';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
export declare class AnthropicBilling {
|
|
4
|
+
protected ctx: AnthropicBilling.Context;
|
|
5
|
+
constructor(ctx: AnthropicBilling.Context);
|
|
6
|
+
charge(usage: Anthropic.Usage): number;
|
|
7
|
+
}
|
|
8
|
+
export declare namespace AnthropicBilling {
|
|
9
|
+
interface Context {
|
|
10
|
+
pricing: Pricing;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
export class AnthropicBilling {
|
|
3
|
+
ctx;
|
|
4
|
+
constructor(ctx) {
|
|
5
|
+
this.ctx = ctx;
|
|
6
|
+
}
|
|
7
|
+
charge(usage) {
|
|
8
|
+
const cacheHitTokenCount = usage.cache_read_input_tokens || 0;
|
|
9
|
+
const cacheMissTokenCount = usage.input_tokens - cacheHitTokenCount;
|
|
10
|
+
return (this.ctx.pricing.inputPrice * cacheMissTokenCount / 1e6 +
|
|
11
|
+
this.ctx.pricing.cachePrice * cacheHitTokenCount / 1e6 +
|
|
12
|
+
this.ctx.pricing.outputPrice * usage.output_tokens / 1e6);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/api-types/anthropic/billing.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,MAAM,OAAO,gBAAgB;IACI;IAA7B,YAA6B,GAA6B;QAA7B,QAAG,GAAH,GAAG,CAA0B;IAAG,CAAC;IAEvD,MAAM,CAAC,KAAsB;QAChC,MAAM,kBAAkB,GAAG,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;QAC9D,MAAM,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,kBAAkB,CAAC;QACpE,OAAO,CACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,GAAG,GAAG,CAC3D,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Function } from '#@/function.ts';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
export declare class AnthropicToolCodec<in out fdm extends Function.Declaration.Map> {
|
|
4
|
+
protected ctx: AnthropicToolCodec.Context<fdm>;
|
|
5
|
+
constructor(ctx: AnthropicToolCodec.Context<fdm>);
|
|
6
|
+
convertFromFunctionCall(fc: Function.Call.From<fdm>): Anthropic.ToolUseBlock;
|
|
7
|
+
convertToFunctionCall(apifc: Anthropic.ToolUseBlock): Function.Call.From<fdm>;
|
|
8
|
+
convertFromFunctionResponse(fr: Function.Response.Distributive<fdm>): Anthropic.ToolResultBlockParam;
|
|
9
|
+
protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): Anthropic.Tool;
|
|
10
|
+
convertFromFunctionDeclarationMap(fdm: fdm): Anthropic.Tool[];
|
|
11
|
+
convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>, parallelToolCall: boolean): Anthropic.ToolChoice;
|
|
12
|
+
}
|
|
13
|
+
export declare namespace AnthropicToolCodec {
|
|
14
|
+
interface Context<in out fdm extends Function.Declaration.Map> {
|
|
15
|
+
fdm: fdm;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Function } from '#@/function.ts';
|
|
2
|
+
import { ResponseInvalid } from '#@/engine.ts';
|
|
3
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
4
|
+
import Ajv from 'ajv';
|
|
5
|
+
import {} from '@sinclair/typebox';
|
|
6
|
+
const ajv = new Ajv();
|
|
7
|
+
export class AnthropicToolCodec {
|
|
8
|
+
ctx;
|
|
9
|
+
constructor(ctx) {
|
|
10
|
+
this.ctx = ctx;
|
|
11
|
+
}
|
|
12
|
+
convertFromFunctionCall(fc) {
|
|
13
|
+
throw new Error('Anthropic compatible engine requires native function calls.');
|
|
14
|
+
}
|
|
15
|
+
convertToFunctionCall(apifc) {
|
|
16
|
+
const fditem = this.ctx.fdm[apifc.name];
|
|
17
|
+
if (fditem) { }
|
|
18
|
+
else
|
|
19
|
+
throw new ResponseInvalid('Unknown function call', { cause: apifc });
|
|
20
|
+
const args = (() => {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(apifc.input);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
throw new ResponseInvalid('Invalid JSON of function call', { cause: apifc });
|
|
26
|
+
}
|
|
27
|
+
})();
|
|
28
|
+
if (ajv.validate(fditem.paraschema, args)) { }
|
|
29
|
+
else
|
|
30
|
+
throw new ResponseInvalid('Function call not conforming to schema', { cause: apifc });
|
|
31
|
+
return Function.Call.create({
|
|
32
|
+
id: apifc.id,
|
|
33
|
+
name: apifc.name,
|
|
34
|
+
args,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
convertFromFunctionResponse(fr) {
|
|
38
|
+
if (fr.id) { }
|
|
39
|
+
else
|
|
40
|
+
throw new Error();
|
|
41
|
+
return {
|
|
42
|
+
type: 'tool_result',
|
|
43
|
+
tool_use_id: fr.id,
|
|
44
|
+
content: fr.text,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
convertFromFunctionDeclarationEntry(fdentry) {
|
|
48
|
+
return {
|
|
49
|
+
name: fdentry[0],
|
|
50
|
+
description: fdentry[1].description,
|
|
51
|
+
input_schema: fdentry[1].paraschema,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
convertFromFunctionDeclarationMap(fdm) {
|
|
55
|
+
const fdentries = Object.entries(fdm);
|
|
56
|
+
return fdentries.map(fdentry => this.convertFromFunctionDeclarationEntry(fdentry));
|
|
57
|
+
}
|
|
58
|
+
convertFromToolChoice(toolChoice, parallelToolCall) {
|
|
59
|
+
if (toolChoice === Function.ToolChoice.NONE)
|
|
60
|
+
return { type: 'none' };
|
|
61
|
+
else if (toolChoice === Function.ToolChoice.REQUIRED)
|
|
62
|
+
return { type: 'any', disable_parallel_tool_use: !parallelToolCall };
|
|
63
|
+
else if (toolChoice === Function.ToolChoice.AUTO)
|
|
64
|
+
return { type: 'auto', disable_parallel_tool_use: !parallelToolCall };
|
|
65
|
+
else {
|
|
66
|
+
if (toolChoice.length === 1) { }
|
|
67
|
+
else
|
|
68
|
+
throw new Error();
|
|
69
|
+
return { type: 'tool', name: toolChoice[0], disable_parallel_tool_use: !parallelToolCall };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=tool-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-codec.js","sourceRoot":"","sources":["../../../src/api-types/anthropic/tool-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Google from '@google/genai';
|
|
2
|
+
import type { Pricing } from '#@/engine.ts';
|
|
3
|
+
export declare class GoogleBilling {
|
|
4
|
+
protected ctx: GoogleBilling.Context;
|
|
5
|
+
constructor(ctx: GoogleBilling.Context);
|
|
6
|
+
charge(usageMetadata: Google.GenerateContentResponseUsageMetadata): number;
|
|
7
|
+
}
|
|
8
|
+
export declare namespace GoogleBilling {
|
|
9
|
+
interface Context {
|
|
10
|
+
pricing: Pricing;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as Google from '@google/genai';
|
|
2
|
+
import { logger } from '#@/telemetry.ts';
|
|
3
|
+
export class GoogleBilling {
|
|
4
|
+
ctx;
|
|
5
|
+
constructor(ctx) {
|
|
6
|
+
this.ctx = ctx;
|
|
7
|
+
}
|
|
8
|
+
charge(usageMetadata) {
|
|
9
|
+
logger.message.debug(usageMetadata);
|
|
10
|
+
if (usageMetadata.promptTokenCount) { }
|
|
11
|
+
else
|
|
12
|
+
throw new Error('Prompt token count missing.', { cause: usageMetadata });
|
|
13
|
+
const candidatesTokenCount = usageMetadata.candidatesTokenCount ?? 0;
|
|
14
|
+
const cacheHitTokenCount = usageMetadata.cachedContentTokenCount ?? 0;
|
|
15
|
+
const cacheMissTokenCount = usageMetadata.promptTokenCount - cacheHitTokenCount;
|
|
16
|
+
const thinkingTokenCount = usageMetadata.thoughtsTokenCount ?? 0;
|
|
17
|
+
const cost = this.ctx.pricing.inputPrice * cacheMissTokenCount / 1e6 +
|
|
18
|
+
this.ctx.pricing.cachePrice * cacheHitTokenCount / 1e6 +
|
|
19
|
+
this.ctx.pricing.outputPrice * candidatesTokenCount / 1e6 +
|
|
20
|
+
this.ctx.pricing.outputPrice * thinkingTokenCount / 1e6;
|
|
21
|
+
return cost;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/api-types/google/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,OAAO,aAAa;IACO;IAA7B,YAA6B,GAA0B;QAA1B,QAAG,GAAH,GAAG,CAAuB;IAAG,CAAC;IAEpD,MAAM,CAAC,aAA0D;QACpE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEpC,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACrH,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,IAAI,CAAC,CAAC;QACrE,MAAM,kBAAkB,GAAG,aAAa,CAAC,uBAAuB,IAAI,CAAC,CAAC;QACtE,MAAM,mBAAmB,GAAG,aAAa,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;QAChF,MAAM,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,IAAI,CAAC,CAAC;QACjE,MAAM,IAAI,GACN,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,oBAAoB,GAAG,GAAG;YACzD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,kBAAkB,GAAG,GAAG,CAAC;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restful-request.js","sourceRoot":"","sources":["../../../src/api-types/google/restful-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Function } from '#@/function.ts';
|
|
2
|
+
import * as Google from '@google/genai';
|
|
3
|
+
export declare class GoogleToolCodec<in out fdm extends Function.Declaration.Map> {
|
|
4
|
+
protected ctx: GoogleToolCodec.Context<fdm>;
|
|
5
|
+
constructor(ctx: GoogleToolCodec.Context<fdm>);
|
|
6
|
+
convertFromFunctionCall(fc: Function.Call.From<fdm>): Google.FunctionCall;
|
|
7
|
+
convertFromFunctionDeclarationMap(fdm: fdm): Google.FunctionDeclaration[];
|
|
8
|
+
protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): Google.FunctionDeclaration;
|
|
9
|
+
convertToFunctionCall(googlefc: Google.FunctionCall): Function.Call.From<fdm>;
|
|
10
|
+
convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>): Google.FunctionCallingConfig;
|
|
11
|
+
}
|
|
12
|
+
export declare namespace GoogleToolCodec {
|
|
13
|
+
interface Context<in out fdm extends Function.Declaration.Map> {
|
|
14
|
+
fdm: fdm;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,32 +1,25 @@
|
|
|
1
|
-
import { ResponseInvalid } from
|
|
2
|
-
import { Function } from
|
|
1
|
+
import { ResponseInvalid } from '#@/engine.ts';
|
|
2
|
+
import { Function } from '#@/function.ts';
|
|
3
3
|
import * as Google from '@google/genai';
|
|
4
4
|
import Ajv from 'ajv';
|
|
5
5
|
const ajv = new Ajv();
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (parallelToolCall) { }
|
|
13
|
-
else
|
|
14
|
-
throw new Error('Google API requires parallel tool calls.');
|
|
15
|
-
return {
|
|
16
|
-
parallelToolCall,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
OwnProps.init = init;
|
|
20
|
-
})(OwnProps = GoogleEngine.OwnProps || (GoogleEngine.OwnProps = {}));
|
|
21
|
-
function convertFromFunctionCall(fc) {
|
|
6
|
+
export class GoogleToolCodec {
|
|
7
|
+
ctx;
|
|
8
|
+
constructor(ctx) {
|
|
9
|
+
this.ctx = ctx;
|
|
10
|
+
}
|
|
11
|
+
convertFromFunctionCall(fc) {
|
|
22
12
|
return {
|
|
23
13
|
id: fc.id,
|
|
24
14
|
name: fc.name,
|
|
25
15
|
args: fc.args,
|
|
26
16
|
};
|
|
27
17
|
}
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
convertFromFunctionDeclarationMap(fdm) {
|
|
19
|
+
const fdentries = Object.entries(fdm);
|
|
20
|
+
return fdentries.map(fdentry => this.convertFromFunctionDeclarationEntry(fdentry));
|
|
21
|
+
}
|
|
22
|
+
convertFromFunctionDeclarationEntry(fdentry) {
|
|
30
23
|
const json = JSON.stringify(fdentry[1].paraschema);
|
|
31
24
|
const parsed = JSON.parse(json, (key, value) => {
|
|
32
25
|
if (key === 'type' && typeof value === 'string') {
|
|
@@ -54,12 +47,11 @@ export var GoogleEngine;
|
|
|
54
47
|
parameters: parsed,
|
|
55
48
|
};
|
|
56
49
|
}
|
|
57
|
-
|
|
58
|
-
function convertToFunctionCall(googlefc) {
|
|
50
|
+
convertToFunctionCall(googlefc) {
|
|
59
51
|
if (googlefc.name) { }
|
|
60
52
|
else
|
|
61
53
|
throw new Error();
|
|
62
|
-
const fditem = this.fdm[googlefc.name];
|
|
54
|
+
const fditem = this.ctx.fdm[googlefc.name];
|
|
63
55
|
if (fditem) { }
|
|
64
56
|
else
|
|
65
57
|
throw new ResponseInvalid('Unknown function call', { cause: googlefc });
|
|
@@ -72,6 +64,15 @@ export var GoogleEngine;
|
|
|
72
64
|
args: googlefc.args,
|
|
73
65
|
});
|
|
74
66
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
67
|
+
convertFromToolChoice(toolChoice) {
|
|
68
|
+
if (toolChoice === Function.ToolChoice.NONE)
|
|
69
|
+
return { mode: Google.FunctionCallingConfigMode.NONE };
|
|
70
|
+
else if (toolChoice === Function.ToolChoice.REQUIRED)
|
|
71
|
+
return { mode: Google.FunctionCallingConfigMode.ANY };
|
|
72
|
+
else if (toolChoice === Function.ToolChoice.AUTO)
|
|
73
|
+
return { mode: Google.FunctionCallingConfigMode.AUTO };
|
|
74
|
+
else
|
|
75
|
+
return { mode: Google.FunctionCallingConfigMode.ANY, allowedFunctionNames: [...toolChoice] };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=tool-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-codec.js","sourceRoot":"","sources":["../../../src/api-types/google/tool-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Pricing } from '#@/engine.ts';
|
|
2
|
+
import OpenAI from 'openai';
|
|
3
|
+
import { Function } from '#@/function.ts';
|
|
4
|
+
export declare class OpenAIChatCompletionsBilling<in out fdm extends Function.Declaration.Map> {
|
|
5
|
+
protected ctx: OpenAIChatCompletionsBilling.Context;
|
|
6
|
+
constructor(ctx: OpenAIChatCompletionsBilling.Context);
|
|
7
|
+
charge(usage: OpenAI.CompletionUsage): number;
|
|
8
|
+
}
|
|
9
|
+
export declare namespace OpenAIChatCompletionsBilling {
|
|
10
|
+
interface Context {
|
|
11
|
+
pricing: Pricing;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { Function } from '#@/function.ts';
|
|
3
|
+
export class OpenAIChatCompletionsBilling {
|
|
4
|
+
ctx;
|
|
5
|
+
constructor(ctx) {
|
|
6
|
+
this.ctx = ctx;
|
|
7
|
+
}
|
|
8
|
+
charge(usage) {
|
|
9
|
+
const cacheHitTokenCount = usage.prompt_tokens_details?.cached_tokens ?? 0;
|
|
10
|
+
const cacheMissTokenCount = usage.prompt_tokens - cacheHitTokenCount;
|
|
11
|
+
return (this.ctx.pricing.inputPrice * cacheMissTokenCount / 1e6 +
|
|
12
|
+
this.ctx.pricing.cachePrice * cacheHitTokenCount / 1e6 +
|
|
13
|
+
this.ctx.pricing.outputPrice * usage.completion_tokens / 1e6);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../src/api-types/openai-chatcompletion/billing.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,4BAA4B;IACR;IAA7B,YAA6B,GAAyC;QAAzC,QAAG,GAAH,GAAG,CAAsC;IAAG,CAAC;IAEnE,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,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,mBAAmB,GAAG,GAAG;YACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,GAAG,GAAG;YACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAC/D,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Function } from '#@/function.ts';
|
|
2
|
+
import OpenAI from 'openai';
|
|
3
|
+
export declare class OpenAIChatCompletionsToolCodec<in out fdm extends Function.Declaration.Map> {
|
|
4
|
+
protected ctx: OpenAIChatCompletionsToolCodec.Context<fdm>;
|
|
5
|
+
constructor(ctx: OpenAIChatCompletionsToolCodec.Context<fdm>);
|
|
6
|
+
convertFromFunctionCall(fc: Function.Call.From<fdm>): OpenAI.ChatCompletionMessageToolCall;
|
|
7
|
+
convertToFunctionCall(apifc: OpenAI.ChatCompletionMessageFunctionToolCall): Function.Call.From<fdm>;
|
|
8
|
+
convertFromFunctionResponse(fr: Function.Response.Distributive<fdm>): OpenAI.ChatCompletionToolMessageParam;
|
|
9
|
+
protected convertFromFunctionDeclarationEntry(fdentry: Function.Declaration.Entry.From<fdm>): OpenAI.ChatCompletionTool;
|
|
10
|
+
convertFromFunctionDeclarationMap(fdm: fdm): OpenAI.ChatCompletionTool[];
|
|
11
|
+
convertFromToolChoice(toolChoice: Function.ToolChoice<fdm>): OpenAI.ChatCompletionToolChoiceOption;
|
|
12
|
+
}
|
|
13
|
+
export declare namespace OpenAIChatCompletionsToolCodec {
|
|
14
|
+
interface Context<in out fdm extends Function.Declaration.Map> {
|
|
15
|
+
parallelToolCall: boolean;
|
|
16
|
+
fdm: fdm;
|
|
17
|
+
}
|
|
18
|
+
}
|