@just-every/ensemble 0.1.0
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 +245 -0
- package/dist/cost_tracker.d.ts +2 -0
- package/dist/cost_tracker.d.ts.map +1 -0
- package/dist/cost_tracker.js +2 -0
- package/dist/cost_tracker.js.map +1 -0
- package/dist/errors.d.ts +55 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +134 -0
- package/dist/errors.js.map +1 -0
- package/dist/external_models.d.ts +10 -0
- package/dist/external_models.d.ts.map +1 -0
- package/dist/external_models.js +36 -0
- package/dist/external_models.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/model_data.d.ts +63 -0
- package/dist/model_data.d.ts.map +1 -0
- package/dist/model_data.js +1070 -0
- package/dist/model_data.js.map +1 -0
- package/dist/model_providers/base_provider.d.ts +37 -0
- package/dist/model_providers/base_provider.d.ts.map +1 -0
- package/dist/model_providers/base_provider.js +146 -0
- package/dist/model_providers/base_provider.js.map +1 -0
- package/dist/model_providers/claude.d.ts +11 -0
- package/dist/model_providers/claude.d.ts.map +1 -0
- package/dist/model_providers/claude.js +788 -0
- package/dist/model_providers/claude.js.map +1 -0
- package/dist/model_providers/deepseek.d.ts +8 -0
- package/dist/model_providers/deepseek.d.ts.map +1 -0
- package/dist/model_providers/deepseek.js +136 -0
- package/dist/model_providers/deepseek.js.map +1 -0
- package/dist/model_providers/gemini.d.ts +11 -0
- package/dist/model_providers/gemini.d.ts.map +1 -0
- package/dist/model_providers/gemini.js +711 -0
- package/dist/model_providers/gemini.js.map +1 -0
- package/dist/model_providers/grok.d.ts +8 -0
- package/dist/model_providers/grok.d.ts.map +1 -0
- package/dist/model_providers/grok.js +22 -0
- package/dist/model_providers/grok.js.map +1 -0
- package/dist/model_providers/model_provider.d.ts +11 -0
- package/dist/model_providers/model_provider.d.ts.map +1 -0
- package/dist/model_providers/model_provider.js +170 -0
- package/dist/model_providers/model_provider.js.map +1 -0
- package/dist/model_providers/openai.d.ts +13 -0
- package/dist/model_providers/openai.d.ts.map +1 -0
- package/dist/model_providers/openai.js +822 -0
- package/dist/model_providers/openai.js.map +1 -0
- package/dist/model_providers/openai_chat.d.ts +14 -0
- package/dist/model_providers/openai_chat.d.ts.map +1 -0
- package/dist/model_providers/openai_chat.js +719 -0
- package/dist/model_providers/openai_chat.js.map +1 -0
- package/dist/model_providers/openrouter.d.ts +6 -0
- package/dist/model_providers/openrouter.d.ts.map +1 -0
- package/dist/model_providers/openrouter.js +18 -0
- package/dist/model_providers/openrouter.js.map +1 -0
- package/dist/model_providers/refactored_openai.d.ts +22 -0
- package/dist/model_providers/refactored_openai.d.ts.map +1 -0
- package/dist/model_providers/refactored_openai.js +310 -0
- package/dist/model_providers/refactored_openai.js.map +1 -0
- package/dist/model_providers/test_provider.d.ts +27 -0
- package/dist/model_providers/test_provider.d.ts.map +1 -0
- package/dist/model_providers/test_provider.js +185 -0
- package/dist/model_providers/test_provider.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/api_types.d.ts +249 -0
- package/dist/types/api_types.d.ts.map +1 -0
- package/dist/types/api_types.js +2 -0
- package/dist/types/api_types.js.map +1 -0
- package/dist/types/extended_types.d.ts +43 -0
- package/dist/types/extended_types.d.ts.map +1 -0
- package/dist/types/extended_types.js +2 -0
- package/dist/types/extended_types.js.map +1 -0
- package/dist/types.d.ts +301 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/async_queue.d.ts +14 -0
- package/dist/utils/async_queue.d.ts.map +1 -0
- package/dist/utils/async_queue.js +68 -0
- package/dist/utils/async_queue.js.map +1 -0
- package/dist/utils/cache.d.ts +60 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +205 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/communication.d.ts +3 -0
- package/dist/utils/communication.d.ts.map +1 -0
- package/dist/utils/communication.js +8 -0
- package/dist/utils/communication.js.map +1 -0
- package/dist/utils/cost_tracker.d.ts +26 -0
- package/dist/utils/cost_tracker.d.ts.map +1 -0
- package/dist/utils/cost_tracker.js +177 -0
- package/dist/utils/cost_tracker.js.map +1 -0
- package/dist/utils/delta_buffer.d.ts +14 -0
- package/dist/utils/delta_buffer.d.ts.map +1 -0
- package/dist/utils/delta_buffer.js +60 -0
- package/dist/utils/delta_buffer.js.map +1 -0
- package/dist/utils/image_to_text.d.ts +3 -0
- package/dist/utils/image_to_text.d.ts.map +1 -0
- package/dist/utils/image_to_text.js +81 -0
- package/dist/utils/image_to_text.js.map +1 -0
- package/dist/utils/image_utils.d.ts +18 -0
- package/dist/utils/image_utils.d.ts.map +1 -0
- package/dist/utils/image_utils.js +132 -0
- package/dist/utils/image_utils.js.map +1 -0
- package/dist/utils/llm_logger.d.ts +8 -0
- package/dist/utils/llm_logger.d.ts.map +1 -0
- package/dist/utils/llm_logger.js +24 -0
- package/dist/utils/llm_logger.js.map +1 -0
- package/dist/utils/quota_tracker.d.ts +22 -0
- package/dist/utils/quota_tracker.d.ts.map +1 -0
- package/dist/utils/quota_tracker.js +338 -0
- package/dist/utils/quota_tracker.js.map +1 -0
- package/dist/utils/stream_converter.d.ts +19 -0
- package/dist/utils/stream_converter.d.ts.map +1 -0
- package/dist/utils/stream_converter.js +172 -0
- package/dist/utils/stream_converter.js.map +1 -0
- package/dist/validation.d.ts +1789 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +289 -0
- package/dist/validation.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +34 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_chat.js","sourceRoot":"","sources":["../../model_providers/openai_chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../model_providers/openrouter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,qBAAa,kBAAmB,SAAQ,UAAU;;CAqBjD;AAKD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { OpenAIChat } from './openai_chat.js';
|
|
2
|
+
export class OpenRouterProvider extends OpenAIChat {
|
|
3
|
+
constructor() {
|
|
4
|
+
super('openrouter', process.env.OPENROUTER_API_KEY, 'https://openrouter.ai/api/v1', {
|
|
5
|
+
'User-Agent': 'magi',
|
|
6
|
+
'HTTP-Referer': 'https://withmagi.com/',
|
|
7
|
+
'X-Title': 'magi',
|
|
8
|
+
}, {
|
|
9
|
+
provider: {
|
|
10
|
+
require_parameters: true,
|
|
11
|
+
sort: 'throughput',
|
|
12
|
+
ignore: ['Novita'],
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export const openRouterProvider = new OpenRouterProvider();
|
|
18
|
+
//# sourceMappingURL=openrouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../model_providers/openrouter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAC9C;QACI,KAAK,CACD,YAAY,EACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAC9B,8BAA8B,EAC9B;YACI,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE,uBAAuB;YACvC,SAAS,EAAE,MAAM;SACpB,EACD;YACI,QAAQ,EAAE;gBACN,kBAAkB,EAAE,IAAI;gBACxB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,CAAC,QAAQ,CAAC;aACrB;SACJ,CACJ,CAAC;IACN,CAAC;CAEJ;AAKD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseModelProvider } from './base_provider.js';
|
|
2
|
+
import { EnsembleStreamEvent, ResponseInput, EnsembleAgent } from '../types.js';
|
|
3
|
+
export declare class RefactoredOpenAIProvider extends BaseModelProvider {
|
|
4
|
+
private client;
|
|
5
|
+
private supportedModels;
|
|
6
|
+
constructor();
|
|
7
|
+
supportsModel(model: string): boolean;
|
|
8
|
+
createResponseStream(model: string, messages: ResponseInput, agent: EnsembleAgent): AsyncGenerator<EnsembleStreamEvent>;
|
|
9
|
+
private convertMessages;
|
|
10
|
+
private convertMessage;
|
|
11
|
+
private convertContent;
|
|
12
|
+
private convertFunctionCall;
|
|
13
|
+
private convertFunctionOutput;
|
|
14
|
+
private convertTools;
|
|
15
|
+
private buildRequestOptions;
|
|
16
|
+
private convertToolChoice;
|
|
17
|
+
private createStream;
|
|
18
|
+
private processStream;
|
|
19
|
+
private processChunk;
|
|
20
|
+
private buildResponseTurn;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=refactored_openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactored_openai.d.ts","sourceRoot":"","sources":["../../model_providers/refactored_openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,mBAAmB,EAInB,aAAa,EACb,aAAa,EAId,MAAM,aAAa,CAAC;AAsBrB,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAQpB;;IAWH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9B,oBAAoB,CACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,aAAa,GACnB,cAAc,CAAC,mBAAmB,CAAC;IAkDtC,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,iBAAiB;YAcX,YAAY;YAUX,aAAa;IAuD5B,OAAO,CAAE,YAAY;IA2BrB,OAAO,CAAC,iBAAiB;CAqC1B"}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { BaseModelProvider } from './base_provider.js';
|
|
2
|
+
import { validateMessages, validateTools, validateTemperature, validateMaxTokens } from '../validation.js';
|
|
3
|
+
import { createProviderError } from '../errors.js';
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
export class RefactoredOpenAIProvider extends BaseModelProvider {
|
|
6
|
+
client;
|
|
7
|
+
supportedModels = new Set([
|
|
8
|
+
'gpt-4o',
|
|
9
|
+
'gpt-4o-mini',
|
|
10
|
+
'gpt-4-turbo',
|
|
11
|
+
'gpt-3.5-turbo',
|
|
12
|
+
'o1-preview',
|
|
13
|
+
'o1-mini',
|
|
14
|
+
'o3-mini'
|
|
15
|
+
]);
|
|
16
|
+
constructor() {
|
|
17
|
+
super('openai');
|
|
18
|
+
const apiKey = process.env.OPENAI_API_KEY;
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
throw new Error('OPENAI_API_KEY environment variable is required');
|
|
21
|
+
}
|
|
22
|
+
this.client = new OpenAI({ apiKey });
|
|
23
|
+
}
|
|
24
|
+
supportsModel(model) {
|
|
25
|
+
return this.supportedModels.has(model);
|
|
26
|
+
}
|
|
27
|
+
async *createResponseStream(model, messages, agent) {
|
|
28
|
+
const options = agent.modelSettings || {};
|
|
29
|
+
const tools = await agent.getTools();
|
|
30
|
+
let systemPrompt = '';
|
|
31
|
+
const convertedMessages = [];
|
|
32
|
+
for (const msg of messages) {
|
|
33
|
+
if (msg.type === 'message' && msg.role === 'system') {
|
|
34
|
+
systemPrompt = typeof msg.content === 'string' ? msg.content : '';
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
convertedMessages.push(msg);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
validateMessages(messages);
|
|
42
|
+
if (tools.length > 0)
|
|
43
|
+
validateTools(tools.map(t => t.definition));
|
|
44
|
+
const openAIMessages = this.convertMessages(convertedMessages, systemPrompt);
|
|
45
|
+
const openAITools = tools.length > 0 ? this.convertTools(tools) : undefined;
|
|
46
|
+
const requestOptions = this.buildRequestOptions(model, openAIMessages, openAITools, options.tool_choice, options);
|
|
47
|
+
const stream = await this.createStream(requestOptions);
|
|
48
|
+
yield* this.processStream(stream, model);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
yield this.handleError(error, 'OpenAI request failed');
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
convertMessages(messages, systemPrompt) {
|
|
56
|
+
const converted = [];
|
|
57
|
+
if (systemPrompt) {
|
|
58
|
+
converted.push({ role: 'system', content: systemPrompt });
|
|
59
|
+
}
|
|
60
|
+
for (const msg of messages) {
|
|
61
|
+
converted.push(...this.convertMessage(msg));
|
|
62
|
+
}
|
|
63
|
+
return converted;
|
|
64
|
+
}
|
|
65
|
+
convertMessage(message) {
|
|
66
|
+
switch (message.type) {
|
|
67
|
+
case 'message':
|
|
68
|
+
if ('content' in message && (message.role === 'user' || message.role === 'system')) {
|
|
69
|
+
return [{
|
|
70
|
+
role: message.role,
|
|
71
|
+
content: this.convertContent(message.content)
|
|
72
|
+
}];
|
|
73
|
+
}
|
|
74
|
+
else if ('content' in message && message.role === 'assistant') {
|
|
75
|
+
return [{
|
|
76
|
+
role: 'assistant',
|
|
77
|
+
content: this.convertContent(message.content)
|
|
78
|
+
}];
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case 'function_call':
|
|
82
|
+
return this.convertFunctionCall(message);
|
|
83
|
+
case 'function_call_output':
|
|
84
|
+
return this.convertFunctionOutput(message);
|
|
85
|
+
}
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
convertContent(content) {
|
|
89
|
+
if (typeof content === 'string') {
|
|
90
|
+
return content;
|
|
91
|
+
}
|
|
92
|
+
return content.map(item => {
|
|
93
|
+
if (item.type === 'input_text') {
|
|
94
|
+
return { type: 'text', text: item.text };
|
|
95
|
+
}
|
|
96
|
+
else if (item.type === 'input_image') {
|
|
97
|
+
return {
|
|
98
|
+
type: 'image_url',
|
|
99
|
+
image_url: {
|
|
100
|
+
url: item.image_url || `data:image/jpeg;base64,${item.file_id}`,
|
|
101
|
+
detail: item.detail
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return { type: 'text', text: '' };
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
convertFunctionCall(call) {
|
|
109
|
+
return [{
|
|
110
|
+
role: 'assistant',
|
|
111
|
+
content: null,
|
|
112
|
+
tool_calls: [{
|
|
113
|
+
index: 0,
|
|
114
|
+
id: call.call_id,
|
|
115
|
+
type: 'function',
|
|
116
|
+
function: {
|
|
117
|
+
name: call.name,
|
|
118
|
+
arguments: call.arguments
|
|
119
|
+
}
|
|
120
|
+
}]
|
|
121
|
+
}];
|
|
122
|
+
}
|
|
123
|
+
convertFunctionOutput(output) {
|
|
124
|
+
return [{
|
|
125
|
+
role: 'tool',
|
|
126
|
+
content: output.output,
|
|
127
|
+
tool_call_id: output.call_id
|
|
128
|
+
}];
|
|
129
|
+
}
|
|
130
|
+
convertTools(tools) {
|
|
131
|
+
return tools.map(tool => ({
|
|
132
|
+
type: 'function',
|
|
133
|
+
function: {
|
|
134
|
+
name: tool.definition.function.name,
|
|
135
|
+
description: tool.definition.function.description,
|
|
136
|
+
parameters: tool.definition.function.parameters
|
|
137
|
+
}
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
buildRequestOptions(model, messages, tools, toolChoice, options) {
|
|
141
|
+
const params = {
|
|
142
|
+
model,
|
|
143
|
+
messages: messages,
|
|
144
|
+
stream: true,
|
|
145
|
+
temperature: validateTemperature(options?.temperature),
|
|
146
|
+
max_tokens: validateMaxTokens(options?.max_tokens),
|
|
147
|
+
top_p: options?.top_p,
|
|
148
|
+
seed: options?.seed
|
|
149
|
+
};
|
|
150
|
+
if (tools && tools.length > 0) {
|
|
151
|
+
params.tools = tools;
|
|
152
|
+
params.tool_choice = this.convertToolChoice(toolChoice);
|
|
153
|
+
}
|
|
154
|
+
return params;
|
|
155
|
+
}
|
|
156
|
+
convertToolChoice(toolChoice) {
|
|
157
|
+
if (!toolChoice)
|
|
158
|
+
return 'auto';
|
|
159
|
+
if (typeof toolChoice === 'string')
|
|
160
|
+
return toolChoice;
|
|
161
|
+
return {
|
|
162
|
+
type: 'function',
|
|
163
|
+
function: { name: toolChoice.function.name }
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async createStream(params) {
|
|
167
|
+
const response = await this.client.chat.completions.create(params);
|
|
168
|
+
return response;
|
|
169
|
+
}
|
|
170
|
+
async *processStream(stream, model) {
|
|
171
|
+
const deltaBuffer = this.createDeltaBuffer();
|
|
172
|
+
const toolCallAccumulator = new ToolCallAccumulator();
|
|
173
|
+
let usage = null;
|
|
174
|
+
try {
|
|
175
|
+
for await (const chunk of stream) {
|
|
176
|
+
yield* this.processChunk(chunk, deltaBuffer, toolCallAccumulator);
|
|
177
|
+
if (chunk.usage) {
|
|
178
|
+
usage = {
|
|
179
|
+
inputTokens: chunk.usage.prompt_tokens,
|
|
180
|
+
outputTokens: chunk.usage.completion_tokens,
|
|
181
|
+
totalTokens: chunk.usage.total_tokens
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const remainingText = deltaBuffer.flush();
|
|
186
|
+
if (remainingText) {
|
|
187
|
+
yield this.createTextEvent(remainingText);
|
|
188
|
+
}
|
|
189
|
+
yield* toolCallAccumulator.emitPendingCalls(this);
|
|
190
|
+
if (usage) {
|
|
191
|
+
yield this.createUsageEvent(usage.inputTokens, usage.outputTokens);
|
|
192
|
+
}
|
|
193
|
+
const finalText = deltaBuffer.flush();
|
|
194
|
+
if (finalText) {
|
|
195
|
+
yield {
|
|
196
|
+
type: 'message_complete',
|
|
197
|
+
content: finalText,
|
|
198
|
+
message_id: 'msg_' + Date.now()
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
throw createProviderError('openai', error);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
*processChunk(chunk, deltaBuffer, toolCallAccumulator) {
|
|
207
|
+
const choice = chunk.choices[0];
|
|
208
|
+
if (!choice?.delta)
|
|
209
|
+
return;
|
|
210
|
+
if (choice.delta.content) {
|
|
211
|
+
const flushed = deltaBuffer.add(choice.delta.content);
|
|
212
|
+
if (flushed) {
|
|
213
|
+
yield this.createTextEvent(flushed);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (choice.delta.tool_calls) {
|
|
217
|
+
for (const toolCall of choice.delta.tool_calls) {
|
|
218
|
+
toolCallAccumulator.accumulate(toolCall);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
buildResponseTurn(model, text, toolCalls, usage) {
|
|
223
|
+
const messages = [];
|
|
224
|
+
if (text) {
|
|
225
|
+
messages.push({
|
|
226
|
+
type: 'message',
|
|
227
|
+
role: 'assistant',
|
|
228
|
+
content: text,
|
|
229
|
+
status: 'completed',
|
|
230
|
+
model
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
for (const toolCall of toolCalls) {
|
|
234
|
+
messages.push({
|
|
235
|
+
type: 'function_call',
|
|
236
|
+
call_id: toolCall.id,
|
|
237
|
+
name: toolCall.name,
|
|
238
|
+
arguments: JSON.stringify(toolCall.arguments),
|
|
239
|
+
status: 'completed',
|
|
240
|
+
model
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
messages,
|
|
245
|
+
usage: usage ? {
|
|
246
|
+
input_tokens: usage.inputTokens,
|
|
247
|
+
output_tokens: usage.outputTokens
|
|
248
|
+
} : undefined
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
class ToolCallAccumulator {
|
|
253
|
+
toolCalls = new Map();
|
|
254
|
+
accumulate(toolCall) {
|
|
255
|
+
const existing = this.toolCalls.get(toolCall.index) || {
|
|
256
|
+
id: '',
|
|
257
|
+
name: '',
|
|
258
|
+
arguments: ''
|
|
259
|
+
};
|
|
260
|
+
if (toolCall.id)
|
|
261
|
+
existing.id = toolCall.id;
|
|
262
|
+
if (toolCall.function?.name)
|
|
263
|
+
existing.name = toolCall.function.name;
|
|
264
|
+
if (toolCall.function?.arguments)
|
|
265
|
+
existing.arguments += toolCall.function.arguments;
|
|
266
|
+
this.toolCalls.set(toolCall.index, existing);
|
|
267
|
+
}
|
|
268
|
+
*emitPendingCalls(provider) {
|
|
269
|
+
for (const [_, toolCall] of this.toolCalls) {
|
|
270
|
+
if (toolCall.id && toolCall.name && toolCall.arguments) {
|
|
271
|
+
try {
|
|
272
|
+
const params = JSON.parse(toolCall.arguments);
|
|
273
|
+
yield {
|
|
274
|
+
type: 'tool_start',
|
|
275
|
+
tool_calls: [{
|
|
276
|
+
id: toolCall.id,
|
|
277
|
+
type: 'function',
|
|
278
|
+
call_id: toolCall.id,
|
|
279
|
+
function: {
|
|
280
|
+
name: toolCall.name,
|
|
281
|
+
arguments: toolCall.arguments
|
|
282
|
+
}
|
|
283
|
+
}]
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
catch (e) {
|
|
287
|
+
console.error(`Failed to parse tool arguments for ${toolCall.name}:`, e);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
getCompletedCalls() {
|
|
293
|
+
const calls = [];
|
|
294
|
+
for (const [_, toolCall] of this.toolCalls) {
|
|
295
|
+
if (toolCall.id && toolCall.name && toolCall.arguments) {
|
|
296
|
+
try {
|
|
297
|
+
calls.push({
|
|
298
|
+
id: toolCall.id,
|
|
299
|
+
name: toolCall.name,
|
|
300
|
+
arguments: JSON.parse(toolCall.arguments)
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
catch (e) {
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return calls;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=refactored_openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactored_openai.js","sourceRoot":"","sources":["../../model_providers/refactored_openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ModelProvider, ResponseInput, EnsembleStreamEvent, EnsembleAgent } from '../types.js';
|
|
2
|
+
export interface TestProviderConfig {
|
|
3
|
+
streamingDelay?: number;
|
|
4
|
+
shouldError?: boolean;
|
|
5
|
+
errorMessage?: string;
|
|
6
|
+
simulateRateLimit?: boolean;
|
|
7
|
+
fixedResponse?: string | undefined;
|
|
8
|
+
fixedThinking?: string | undefined;
|
|
9
|
+
simulateToolCall?: boolean;
|
|
10
|
+
toolName?: string;
|
|
11
|
+
toolArguments?: Record<string, any>;
|
|
12
|
+
tokenUsage?: {
|
|
13
|
+
inputTokens: number;
|
|
14
|
+
outputTokens: number;
|
|
15
|
+
};
|
|
16
|
+
chunkSize?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare const testProviderConfig: TestProviderConfig;
|
|
19
|
+
export declare function resetTestProviderConfig(): void;
|
|
20
|
+
export declare class TestProvider implements ModelProvider {
|
|
21
|
+
private config;
|
|
22
|
+
constructor(config?: TestProviderConfig);
|
|
23
|
+
createResponseStream(model: string, messages: ResponseInput, agent: EnsembleAgent): AsyncGenerator<EnsembleStreamEvent>;
|
|
24
|
+
private generateResponse;
|
|
25
|
+
}
|
|
26
|
+
export declare const testProvider: TestProvider;
|
|
27
|
+
//# sourceMappingURL=test_provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_provider.d.ts","sourceRoot":"","sources":["../../model_providers/test_provider.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,aAAa,EACb,aAAa,EACb,mBAAmB,EAGnB,aAAa,EAChB,MAAM,aAAa,CAAC;AAQrB,MAAM,WAAW,kBAAkB;IAE/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAI5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGnC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAGpC,UAAU,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IAGF,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,kBAAkB,EAAE,kBAehC,CAAC;AAKF,wBAAgB,uBAAuB,SAetC;AAUD,qBAAa,YAAa,YAAW,aAAa;IAC9C,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,GAAE,kBAAuC;IAOpD,oBAAoB,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,aAAa,GACrB,cAAc,CAAC,mBAAmB,CAAC;IAyKtC,OAAO,CAAC,gBAAgB;CA0B3B;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import { costTracker } from '@just-every/ensemble/cost_tracker';
|
|
3
|
+
export const testProviderConfig = {
|
|
4
|
+
streamingDelay: 50,
|
|
5
|
+
shouldError: false,
|
|
6
|
+
errorMessage: 'Simulated error from test provider',
|
|
7
|
+
simulateRateLimit: false,
|
|
8
|
+
fixedResponse: undefined,
|
|
9
|
+
fixedThinking: undefined,
|
|
10
|
+
simulateToolCall: false,
|
|
11
|
+
toolName: 'web_search',
|
|
12
|
+
toolArguments: { query: 'test query' },
|
|
13
|
+
tokenUsage: {
|
|
14
|
+
inputTokens: 100,
|
|
15
|
+
outputTokens: 200,
|
|
16
|
+
},
|
|
17
|
+
chunkSize: 5,
|
|
18
|
+
};
|
|
19
|
+
export function resetTestProviderConfig() {
|
|
20
|
+
testProviderConfig.streamingDelay = 50;
|
|
21
|
+
testProviderConfig.shouldError = false;
|
|
22
|
+
testProviderConfig.errorMessage = 'Simulated error from test provider';
|
|
23
|
+
testProviderConfig.simulateRateLimit = false;
|
|
24
|
+
testProviderConfig.fixedResponse = undefined;
|
|
25
|
+
testProviderConfig.fixedThinking = undefined;
|
|
26
|
+
testProviderConfig.simulateToolCall = false;
|
|
27
|
+
testProviderConfig.toolName = 'web_search';
|
|
28
|
+
testProviderConfig.toolArguments = { query: 'test query' };
|
|
29
|
+
testProviderConfig.tokenUsage = {
|
|
30
|
+
inputTokens: 100,
|
|
31
|
+
outputTokens: 200,
|
|
32
|
+
};
|
|
33
|
+
testProviderConfig.chunkSize = 5;
|
|
34
|
+
}
|
|
35
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
36
|
+
export class TestProvider {
|
|
37
|
+
config;
|
|
38
|
+
constructor(config = testProviderConfig) {
|
|
39
|
+
this.config = config;
|
|
40
|
+
}
|
|
41
|
+
async *createResponseStream(model, messages, agent) {
|
|
42
|
+
console.log(`[TestProvider] Creating response stream for model: ${model}`);
|
|
43
|
+
const lastUserMessage = messages
|
|
44
|
+
.filter(m => 'role' in m && m.role === 'user')
|
|
45
|
+
.pop();
|
|
46
|
+
const userMessageContent = lastUserMessage && 'content' in lastUserMessage
|
|
47
|
+
? typeof lastUserMessage.content === 'string'
|
|
48
|
+
? lastUserMessage.content
|
|
49
|
+
: JSON.stringify(lastUserMessage.content)
|
|
50
|
+
: '';
|
|
51
|
+
const inputTokenCount = this.config.tokenUsage?.inputTokens ||
|
|
52
|
+
Math.max(50, Math.ceil(userMessageContent.length / 4));
|
|
53
|
+
let response;
|
|
54
|
+
if (this.config.simulateRateLimit) {
|
|
55
|
+
const rateLimitError = '429 Too Many Requests: The server is currently processing too many requests. Please try again later.';
|
|
56
|
+
yield {
|
|
57
|
+
type: 'error',
|
|
58
|
+
error: rateLimitError,
|
|
59
|
+
};
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (this.config.shouldError) {
|
|
63
|
+
yield {
|
|
64
|
+
type: 'error',
|
|
65
|
+
error: this.config.errorMessage ||
|
|
66
|
+
'Simulated error from test provider',
|
|
67
|
+
};
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (this.config.fixedResponse) {
|
|
71
|
+
response = this.config.fixedResponse;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
response = this.generateResponse(userMessageContent);
|
|
75
|
+
}
|
|
76
|
+
const messageId = uuidv4();
|
|
77
|
+
yield {
|
|
78
|
+
type: 'message_start',
|
|
79
|
+
message_id: messageId,
|
|
80
|
+
content: '',
|
|
81
|
+
};
|
|
82
|
+
if (this.config.fixedThinking) {
|
|
83
|
+
yield {
|
|
84
|
+
type: 'message_delta',
|
|
85
|
+
message_id: messageId,
|
|
86
|
+
content: '',
|
|
87
|
+
thinking_content: this.config.fixedThinking,
|
|
88
|
+
thinking_signature: '(Simulated thinking)',
|
|
89
|
+
};
|
|
90
|
+
await sleep(this.config.streamingDelay || 50);
|
|
91
|
+
}
|
|
92
|
+
if (this.config.simulateToolCall && agent) {
|
|
93
|
+
const currentTools = agent.getTools();
|
|
94
|
+
if (currentTools) {
|
|
95
|
+
const toolArray = await currentTools;
|
|
96
|
+
if (toolArray.length > 0) {
|
|
97
|
+
const availableTool = toolArray.find(tool => this.config.toolName
|
|
98
|
+
? tool.definition.function.name ===
|
|
99
|
+
this.config.toolName
|
|
100
|
+
: true);
|
|
101
|
+
if (availableTool) {
|
|
102
|
+
const toolCall = {
|
|
103
|
+
id: uuidv4(),
|
|
104
|
+
type: 'function',
|
|
105
|
+
function: {
|
|
106
|
+
name: availableTool.definition.function.name,
|
|
107
|
+
arguments: JSON.stringify(this.config.toolArguments || {
|
|
108
|
+
query: userMessageContent.slice(0, 50),
|
|
109
|
+
}),
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
yield {
|
|
113
|
+
type: 'tool_start',
|
|
114
|
+
tool_calls: [toolCall],
|
|
115
|
+
};
|
|
116
|
+
await sleep(this.config.streamingDelay || 50);
|
|
117
|
+
response = `I've used the ${toolCall.function.name} tool to help answer your question.\n\n${response}`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const chunkSize = this.config.chunkSize || 5;
|
|
123
|
+
let position = 0;
|
|
124
|
+
while (position < response.length) {
|
|
125
|
+
const chunk = response.slice(position, position + chunkSize);
|
|
126
|
+
position += chunkSize;
|
|
127
|
+
yield {
|
|
128
|
+
type: 'message_delta',
|
|
129
|
+
message_id: messageId,
|
|
130
|
+
content: chunk,
|
|
131
|
+
order: position / chunkSize,
|
|
132
|
+
};
|
|
133
|
+
await sleep(this.config.streamingDelay || 50);
|
|
134
|
+
}
|
|
135
|
+
yield {
|
|
136
|
+
type: 'message_complete',
|
|
137
|
+
message_id: messageId,
|
|
138
|
+
content: response,
|
|
139
|
+
};
|
|
140
|
+
const outputTokenCount = this.config.tokenUsage?.outputTokens || Math.ceil(response.length / 4);
|
|
141
|
+
yield {
|
|
142
|
+
type: 'cost_update',
|
|
143
|
+
usage: {
|
|
144
|
+
input_tokens: inputTokenCount,
|
|
145
|
+
output_tokens: outputTokenCount,
|
|
146
|
+
total_tokens: inputTokenCount + outputTokenCount
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
costTracker.addUsage({
|
|
150
|
+
model,
|
|
151
|
+
input_tokens: inputTokenCount,
|
|
152
|
+
output_tokens: outputTokenCount,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
generateResponse(input) {
|
|
156
|
+
const lowercaseInput = input.toLowerCase();
|
|
157
|
+
if (lowercaseInput.includes('hello') || lowercaseInput.includes('hi')) {
|
|
158
|
+
return "Hello! I'm a test AI model. How can I help you today?";
|
|
159
|
+
}
|
|
160
|
+
else if (lowercaseInput.includes('help')) {
|
|
161
|
+
return "I'm here to help! What do you need assistance with?";
|
|
162
|
+
}
|
|
163
|
+
else if (lowercaseInput.includes('error') ||
|
|
164
|
+
lowercaseInput.includes('problem')) {
|
|
165
|
+
return "I understand you're experiencing an issue. Let me help troubleshoot the problem.";
|
|
166
|
+
}
|
|
167
|
+
else if (lowercaseInput.includes('json') || lowercaseInput.includes('person')) {
|
|
168
|
+
return '{"name": "John Doe", "age": 30}';
|
|
169
|
+
}
|
|
170
|
+
else if (lowercaseInput.includes('test')) {
|
|
171
|
+
return 'This is a test response. The test provider is working correctly!';
|
|
172
|
+
}
|
|
173
|
+
else if (lowercaseInput.includes('weather')) {
|
|
174
|
+
return 'The weather is sunny and 72°F.';
|
|
175
|
+
}
|
|
176
|
+
else if (lowercaseInput.includes('?')) {
|
|
177
|
+
return "That's an interesting question. As a test model, I'm designed to provide simulated responses for testing purposes.";
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return `I've received your message: "${input.slice(0, 50)}${input.length > 50 ? '...' : ''}". This is a simulated response from the test provider.`;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export const testProvider = new TestProvider();
|
|
185
|
+
//# sourceMappingURL=test_provider.js.map
|