@falai/agent 0.3.10 → 0.3.11
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 +100 -16
- package/dist/cjs/core/Agent.d.ts +25 -0
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +130 -0
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts +43 -0
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/providers/AnthropicProvider.js +328 -0
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -0
- package/dist/cjs/providers/GeminiProvider.d.ts +4 -1
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +96 -0
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts +4 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.js +115 -0
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts +4 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +115 -0
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/providers/index.d.ts +13 -0
- package/dist/cjs/providers/index.d.ts.map +1 -0
- package/dist/cjs/providers/index.js +16 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/types/ai.d.ts +28 -0
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/core/Agent.d.ts +25 -0
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +130 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts +43 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/providers/AnthropicProvider.js +321 -0
- package/dist/providers/AnthropicProvider.js.map +1 -0
- package/dist/providers/GeminiProvider.d.ts +4 -1
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +96 -0
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.d.ts +4 -1
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +115 -0
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts +4 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +115 -0
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +9 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/types/ai.d.ts +28 -0
- package/dist/types/ai.d.ts.map +1 -1
- package/docs/API_REFERENCE.md +260 -2
- package/docs/PROVIDERS.md +139 -2
- package/examples/business-onboarding.ts +5 -4
- package/examples/declarative-agent.ts +1 -1
- package/examples/domain-scoping.ts +5 -4
- package/examples/healthcare-agent.ts +4 -4
- package/examples/openai-agent.ts +6 -4
- package/examples/rules-prohibitions.ts +4 -4
- package/examples/streaming-agent.ts +371 -0
- package/examples/travel-agent.ts +7 -4
- package/package.json +2 -1
- package/src/core/Agent.ts +174 -0
- package/src/index.ts +2 -0
- package/src/providers/AnthropicProvider.ts +467 -0
- package/src/providers/GeminiProvider.ts +135 -0
- package/src/providers/OpenAIProvider.ts +157 -0
- package/src/providers/OpenRouterProvider.ts +157 -0
- package/src/providers/index.ts +16 -0
- package/src/types/ai.ts +32 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic (Claude) provider implementation with retry and backup models
|
|
3
|
+
*/
|
|
4
|
+
import type { MessageCreateParamsNonStreaming } from "@anthropic-ai/sdk/resources/messages";
|
|
5
|
+
import type { AiProvider, GenerateMessageInput, GenerateMessageOutput, GenerateMessageStreamChunk } from "../types/ai";
|
|
6
|
+
/**
|
|
7
|
+
* Configuration options for Anthropic provider
|
|
8
|
+
* Uses types from @anthropic-ai/sdk package
|
|
9
|
+
*/
|
|
10
|
+
export interface AnthropicProviderOptions {
|
|
11
|
+
/** Anthropic API key */
|
|
12
|
+
apiKey: string;
|
|
13
|
+
/** Model to use (required) - e.g., "claude-sonnet-4-5", "claude-opus-4-1" */
|
|
14
|
+
model: string;
|
|
15
|
+
/** Backup models to try if primary fails (default: []) */
|
|
16
|
+
backupModels?: string[];
|
|
17
|
+
/** Default parameters - uses MessageCreateParamsNonStreaming from @anthropic-ai/sdk */
|
|
18
|
+
config?: Partial<Omit<MessageCreateParamsNonStreaming, "model" | "messages">>;
|
|
19
|
+
/** Retry configuration */
|
|
20
|
+
retryConfig?: {
|
|
21
|
+
timeout?: number;
|
|
22
|
+
retries?: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Anthropic provider implementation with backup models and retry logic
|
|
27
|
+
*/
|
|
28
|
+
export declare class AnthropicProvider implements AiProvider {
|
|
29
|
+
readonly name = "anthropic";
|
|
30
|
+
private client;
|
|
31
|
+
private primaryModel;
|
|
32
|
+
private backupModels;
|
|
33
|
+
private config?;
|
|
34
|
+
private retryConfig;
|
|
35
|
+
constructor(options: AnthropicProviderOptions);
|
|
36
|
+
generateMessage<TContext = unknown>(input: GenerateMessageInput<TContext>): Promise<GenerateMessageOutput>;
|
|
37
|
+
generateMessageStream<TContext = unknown>(input: GenerateMessageInput<TContext>): AsyncGenerator<GenerateMessageStreamChunk>;
|
|
38
|
+
private generateWithBackup;
|
|
39
|
+
private generateWithModel;
|
|
40
|
+
private generateStreamWithBackup;
|
|
41
|
+
private generateStreamWithModel;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=AnthropicProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AnthropicProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAE5F,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AAQrB;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uFAAuF;IACvF,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAC9E,0BAA0B;IAC1B,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA4ED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,SAAgB,IAAI,eAAe;IACnC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,MAAM,CAAC,CAEb;IACF,OAAO,CAAC,WAAW,CAAuC;gBAE9C,OAAO,EAAE,wBAAwB;IAuBvC,eAAe,CAAC,QAAQ,GAAG,OAAO,EACtC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAI1B,qBAAqB,CAAC,QAAQ,GAAG,OAAO,EAC7C,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,cAAc,CAAC,0BAA0B,CAAC;YAI/B,kBAAkB;YA2DlB,iBAAiB;YAyFhB,wBAAwB;YA2DxB,uBAAuB;CAgGvC"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic (Claude) provider implementation with retry and backup models
|
|
3
|
+
*/
|
|
4
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
5
|
+
import { withTimeoutAndRetry } from "../utils/retry";
|
|
6
|
+
const DEFAULT_RETRY_CONFIG = {
|
|
7
|
+
timeout: 60000,
|
|
8
|
+
retries: 3,
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Type guard to check if error is ErrorWithStatus
|
|
12
|
+
*/
|
|
13
|
+
function isErrorWithStatus(error) {
|
|
14
|
+
return (typeof error === "object" &&
|
|
15
|
+
error !== null &&
|
|
16
|
+
("status" in error || "code" in error || "message" in error));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Safely extract error message
|
|
20
|
+
*/
|
|
21
|
+
function getErrorMessage(error) {
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
return error.message;
|
|
24
|
+
}
|
|
25
|
+
if (isErrorWithStatus(error) && error.message) {
|
|
26
|
+
return error.message;
|
|
27
|
+
}
|
|
28
|
+
return String(error);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Determines if an error should trigger backup model usage
|
|
32
|
+
*/
|
|
33
|
+
const shouldUseBackupModel = (error) => {
|
|
34
|
+
if (!isErrorWithStatus(error)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
// Server errors
|
|
38
|
+
if (error.status === 500 || error.status === 503 || error.status === 529) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
// Rate limiting
|
|
42
|
+
if (error.status === 429) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
// Model overloaded or unavailable
|
|
46
|
+
if (error.type === "overloaded_error" ||
|
|
47
|
+
error.type === "api_error" ||
|
|
48
|
+
error.code === "overloaded") {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
const message = getErrorMessage(error);
|
|
52
|
+
if (message.includes("overloaded") ||
|
|
53
|
+
message.includes("unavailable") ||
|
|
54
|
+
message.includes("internal error") ||
|
|
55
|
+
message.includes("Internal error")) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Anthropic provider implementation with backup models and retry logic
|
|
62
|
+
*/
|
|
63
|
+
export class AnthropicProvider {
|
|
64
|
+
constructor(options) {
|
|
65
|
+
this.name = "anthropic";
|
|
66
|
+
const { apiKey, model, backupModels = [], config, retryConfig } = options;
|
|
67
|
+
if (!apiKey) {
|
|
68
|
+
throw new Error("Anthropic API key is required");
|
|
69
|
+
}
|
|
70
|
+
if (!model) {
|
|
71
|
+
throw new Error("Model is required. Example: 'claude-sonnet-4-5'");
|
|
72
|
+
}
|
|
73
|
+
this.client = new Anthropic({
|
|
74
|
+
apiKey,
|
|
75
|
+
});
|
|
76
|
+
this.primaryModel = model;
|
|
77
|
+
this.backupModels = backupModels;
|
|
78
|
+
this.config = config;
|
|
79
|
+
this.retryConfig = {
|
|
80
|
+
timeout: retryConfig?.timeout || DEFAULT_RETRY_CONFIG.timeout,
|
|
81
|
+
retries: retryConfig?.retries || DEFAULT_RETRY_CONFIG.retries,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async generateMessage(input) {
|
|
85
|
+
return this.generateWithBackup(input);
|
|
86
|
+
}
|
|
87
|
+
async *generateMessageStream(input) {
|
|
88
|
+
yield* this.generateStreamWithBackup(input);
|
|
89
|
+
}
|
|
90
|
+
async generateWithBackup(input) {
|
|
91
|
+
// Try primary model first
|
|
92
|
+
try {
|
|
93
|
+
return await this.generateWithModel(this.primaryModel, input);
|
|
94
|
+
}
|
|
95
|
+
catch (primaryError) {
|
|
96
|
+
const primaryErrMsg = getErrorMessage(primaryError);
|
|
97
|
+
console.warn(`[ANTHROPIC] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`);
|
|
98
|
+
if (!shouldUseBackupModel(primaryError)) {
|
|
99
|
+
throw primaryError;
|
|
100
|
+
}
|
|
101
|
+
console.log(`[ANTHROPIC] Trying backup models`);
|
|
102
|
+
let lastBackupError = primaryError;
|
|
103
|
+
for (let i = 0; i < this.backupModels.length; i++) {
|
|
104
|
+
const backupModel = this.backupModels[i];
|
|
105
|
+
console.log(`[ANTHROPIC] Trying backup model ${i + 1}/${this.backupModels.length}: ${backupModel}`);
|
|
106
|
+
try {
|
|
107
|
+
const result = await this.generateWithModel(backupModel, input);
|
|
108
|
+
console.log(`[ANTHROPIC] Backup model ${backupModel} succeeded`);
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
catch (backupError) {
|
|
112
|
+
const backupErrMsg = getErrorMessage(backupError);
|
|
113
|
+
console.warn(`[ANTHROPIC] Backup model ${backupModel} failed: ${backupErrMsg}`);
|
|
114
|
+
lastBackupError = backupError;
|
|
115
|
+
if (!shouldUseBackupModel(backupError) &&
|
|
116
|
+
i < this.backupModels.length - 1) {
|
|
117
|
+
console.log(`[ANTHROPIC] Backup model error doesn't qualify for further attempts`);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const lastBackupErrMsg = getErrorMessage(lastBackupError);
|
|
123
|
+
console.error(`[ANTHROPIC] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`);
|
|
124
|
+
throw lastBackupError;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async generateWithModel(model, input) {
|
|
128
|
+
const operation = async () => {
|
|
129
|
+
// Anthropic requires max_tokens to be specified
|
|
130
|
+
const maxTokens = input.parameters?.maxOutputTokens || 4096;
|
|
131
|
+
const params = {
|
|
132
|
+
model,
|
|
133
|
+
max_tokens: maxTokens,
|
|
134
|
+
messages: [
|
|
135
|
+
{
|
|
136
|
+
role: "user",
|
|
137
|
+
content: input.prompt,
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
...this.config,
|
|
141
|
+
};
|
|
142
|
+
// Handle JSON mode if requested
|
|
143
|
+
// Note: Anthropic doesn't have a native JSON mode like OpenAI,
|
|
144
|
+
// but we can add it to the system prompt
|
|
145
|
+
if (input.parameters?.jsonMode) {
|
|
146
|
+
// Add system message requesting JSON output
|
|
147
|
+
const systemPrompt = "You must respond with valid JSON only. Do not include any text outside the JSON structure.";
|
|
148
|
+
// Merge with existing system if present
|
|
149
|
+
if (typeof this.config?.system === "string") {
|
|
150
|
+
params.system = `${this.config.system}\n\n${systemPrompt}`;
|
|
151
|
+
}
|
|
152
|
+
else if (Array.isArray(this.config?.system)) {
|
|
153
|
+
params.system = [
|
|
154
|
+
...this.config.system,
|
|
155
|
+
{
|
|
156
|
+
type: "text",
|
|
157
|
+
text: systemPrompt,
|
|
158
|
+
},
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
params.system = systemPrompt;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const response = await this.client.messages.create(params);
|
|
166
|
+
// Extract text from response
|
|
167
|
+
const textContent = response.content.find((block) => block.type === "text");
|
|
168
|
+
const message = textContent?.type === "text" ? textContent.text : "";
|
|
169
|
+
if (!message) {
|
|
170
|
+
throw new Error("No response from Anthropic");
|
|
171
|
+
}
|
|
172
|
+
// Parse JSON response if JSON mode was enabled
|
|
173
|
+
let structured;
|
|
174
|
+
if (input.parameters?.jsonMode) {
|
|
175
|
+
try {
|
|
176
|
+
structured = JSON.parse(message);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
console.warn("[ANTHROPIC] Failed to parse JSON response:", error);
|
|
180
|
+
// Fall back to treating the message as plain text
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
message,
|
|
185
|
+
metadata: {
|
|
186
|
+
model: response.model,
|
|
187
|
+
stopReason: response.stop_reason,
|
|
188
|
+
tokensUsed: response.usage.input_tokens + response.usage.output_tokens,
|
|
189
|
+
promptTokens: response.usage.input_tokens,
|
|
190
|
+
completionTokens: response.usage.output_tokens,
|
|
191
|
+
},
|
|
192
|
+
structured,
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
return withTimeoutAndRetry(operation, this.retryConfig.timeout, this.retryConfig.retries, `Anthropic ${model}`);
|
|
196
|
+
}
|
|
197
|
+
async *generateStreamWithBackup(input) {
|
|
198
|
+
// Try primary model first
|
|
199
|
+
try {
|
|
200
|
+
yield* this.generateStreamWithModel(this.primaryModel, input);
|
|
201
|
+
}
|
|
202
|
+
catch (primaryError) {
|
|
203
|
+
const primaryErrMsg = getErrorMessage(primaryError);
|
|
204
|
+
console.warn(`[ANTHROPIC] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`);
|
|
205
|
+
if (!shouldUseBackupModel(primaryError)) {
|
|
206
|
+
throw primaryError;
|
|
207
|
+
}
|
|
208
|
+
console.log(`[ANTHROPIC] Trying backup models for streaming`);
|
|
209
|
+
let lastBackupError = primaryError;
|
|
210
|
+
for (let i = 0; i < this.backupModels.length; i++) {
|
|
211
|
+
const backupModel = this.backupModels[i];
|
|
212
|
+
console.log(`[ANTHROPIC] Trying backup model ${i + 1}/${this.backupModels.length}: ${backupModel}`);
|
|
213
|
+
try {
|
|
214
|
+
yield* this.generateStreamWithModel(backupModel, input);
|
|
215
|
+
console.log(`[ANTHROPIC] Backup model ${backupModel} succeeded`);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
catch (backupError) {
|
|
219
|
+
const backupErrMsg = getErrorMessage(backupError);
|
|
220
|
+
console.warn(`[ANTHROPIC] Backup model ${backupModel} failed: ${backupErrMsg}`);
|
|
221
|
+
lastBackupError = backupError;
|
|
222
|
+
if (!shouldUseBackupModel(backupError) &&
|
|
223
|
+
i < this.backupModels.length - 1) {
|
|
224
|
+
console.log(`[ANTHROPIC] Backup model error doesn't qualify for further attempts`);
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const lastBackupErrMsg = getErrorMessage(lastBackupError);
|
|
230
|
+
console.error(`[ANTHROPIC] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`);
|
|
231
|
+
throw lastBackupError;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async *generateStreamWithModel(model, input) {
|
|
235
|
+
// Anthropic requires max_tokens to be specified
|
|
236
|
+
const maxTokens = input.parameters?.maxOutputTokens || 4096;
|
|
237
|
+
const params = {
|
|
238
|
+
model,
|
|
239
|
+
max_tokens: maxTokens,
|
|
240
|
+
messages: [
|
|
241
|
+
{
|
|
242
|
+
role: "user",
|
|
243
|
+
content: input.prompt,
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
stream: true,
|
|
247
|
+
...this.config,
|
|
248
|
+
};
|
|
249
|
+
// Handle JSON mode if requested
|
|
250
|
+
if (input.parameters?.jsonMode) {
|
|
251
|
+
const systemPrompt = "You must respond with valid JSON only. Do not include any text outside the JSON structure.";
|
|
252
|
+
if (typeof this.config?.system === "string") {
|
|
253
|
+
params.system = `${this.config.system}\n\n${systemPrompt}`;
|
|
254
|
+
}
|
|
255
|
+
else if (Array.isArray(this.config?.system)) {
|
|
256
|
+
params.system = [
|
|
257
|
+
...this.config.system,
|
|
258
|
+
{
|
|
259
|
+
type: "text",
|
|
260
|
+
text: systemPrompt,
|
|
261
|
+
},
|
|
262
|
+
];
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
params.system = systemPrompt;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const stream = this.client.messages.stream(params);
|
|
269
|
+
let accumulated = "";
|
|
270
|
+
let currentModel = model;
|
|
271
|
+
let stopReason;
|
|
272
|
+
let inputTokens = 0;
|
|
273
|
+
let outputTokens = 0;
|
|
274
|
+
for await (const chunk of stream) {
|
|
275
|
+
if (chunk.type === "message_start") {
|
|
276
|
+
currentModel = chunk.message.model;
|
|
277
|
+
inputTokens = chunk.message.usage.input_tokens;
|
|
278
|
+
}
|
|
279
|
+
else if (chunk.type === "content_block_delta") {
|
|
280
|
+
if (chunk.delta.type === "text_delta") {
|
|
281
|
+
const delta = chunk.delta.text;
|
|
282
|
+
accumulated += delta;
|
|
283
|
+
yield {
|
|
284
|
+
delta,
|
|
285
|
+
accumulated,
|
|
286
|
+
done: false,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
else if (chunk.type === "message_delta") {
|
|
291
|
+
stopReason = chunk.delta.stop_reason || undefined;
|
|
292
|
+
outputTokens = chunk.usage.output_tokens;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Parse JSON response if JSON mode was enabled
|
|
296
|
+
let structured;
|
|
297
|
+
if (input.parameters?.jsonMode && accumulated) {
|
|
298
|
+
try {
|
|
299
|
+
structured = JSON.parse(accumulated);
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
console.warn("[ANTHROPIC] Failed to parse JSON response in stream:", error);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// Yield final chunk
|
|
306
|
+
yield {
|
|
307
|
+
delta: "",
|
|
308
|
+
accumulated,
|
|
309
|
+
done: true,
|
|
310
|
+
metadata: {
|
|
311
|
+
model: currentModel,
|
|
312
|
+
stopReason,
|
|
313
|
+
tokensUsed: inputTokens + outputTokens,
|
|
314
|
+
promptTokens: inputTokens,
|
|
315
|
+
completionTokens: outputTokens,
|
|
316
|
+
},
|
|
317
|
+
structured,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=AnthropicProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnthropicProvider.js","sourceRoot":"","sources":["../../src/providers/AnthropicProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Google Gemini AI provider implementation with retry and backup models
|
|
3
3
|
*/
|
|
4
4
|
import type { GenerateContentConfig } from "@google/genai";
|
|
5
|
-
import type { AiProvider, GenerateMessageInput, GenerateMessageOutput } from "../types/ai";
|
|
5
|
+
import type { AiProvider, GenerateMessageInput, GenerateMessageOutput, GenerateMessageStreamChunk } from "../types/ai";
|
|
6
6
|
/**
|
|
7
7
|
* Configuration options for Gemini provider
|
|
8
8
|
* Uses types from @google/genai package
|
|
@@ -34,7 +34,10 @@ export declare class GeminiProvider implements AiProvider {
|
|
|
34
34
|
private retryConfig;
|
|
35
35
|
constructor(options: GeminiProviderOptions);
|
|
36
36
|
generateMessage<TContext = unknown>(input: GenerateMessageInput<TContext>): Promise<GenerateMessageOutput>;
|
|
37
|
+
generateMessageStream<TContext = unknown>(input: GenerateMessageInput<TContext>): AsyncGenerator<GenerateMessageStreamChunk>;
|
|
37
38
|
private generateWithBackup;
|
|
38
39
|
private generateWithModel;
|
|
40
|
+
private generateStreamWithBackup;
|
|
41
|
+
private generateStreamWithModel;
|
|
39
42
|
}
|
|
40
43
|
//# sourceMappingURL=GeminiProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GeminiProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"GeminiProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GeminiProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AAQrB;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxC,0BAA0B;IAC1B,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA8CD;;GAEG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,SAAgB,IAAI,YAAY;IAChC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAiC;IAChD,OAAO,CAAC,WAAW,CAAuC;gBAE9C,OAAO,EAAE,qBAAqB;IAqBpC,eAAe,CAAC,QAAQ,GAAG,OAAO,EACtC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAI1B,qBAAqB,CAAC,QAAQ,GAAG,OAAO,EAC7C,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,cAAc,CAAC,0BAA0B,CAAC;YAI/B,kBAAkB;YA2DlB,iBAAiB;YAsDhB,wBAAwB;YA2DxB,uBAAuB;CAoEvC"}
|
|
@@ -57,6 +57,9 @@ export class GeminiProvider {
|
|
|
57
57
|
async generateMessage(input) {
|
|
58
58
|
return this.generateWithBackup(input);
|
|
59
59
|
}
|
|
60
|
+
async *generateMessageStream(input) {
|
|
61
|
+
yield* this.generateStreamWithBackup(input);
|
|
62
|
+
}
|
|
60
63
|
async generateWithBackup(input) {
|
|
61
64
|
// Try primary model first
|
|
62
65
|
try {
|
|
@@ -134,5 +137,98 @@ export class GeminiProvider {
|
|
|
134
137
|
};
|
|
135
138
|
return withTimeoutAndRetry(operation, this.retryConfig.timeout, this.retryConfig.retries, `Gemini ${model}`);
|
|
136
139
|
}
|
|
140
|
+
async *generateStreamWithBackup(input) {
|
|
141
|
+
// Try primary model first
|
|
142
|
+
try {
|
|
143
|
+
yield* this.generateStreamWithModel(this.primaryModel, input);
|
|
144
|
+
}
|
|
145
|
+
catch (primaryError) {
|
|
146
|
+
const primaryErrMsg = String(primaryError);
|
|
147
|
+
console.warn(`[GEMINI] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`);
|
|
148
|
+
if (!shouldUseBackupModel(primaryError)) {
|
|
149
|
+
throw primaryError;
|
|
150
|
+
}
|
|
151
|
+
console.log(`[GEMINI] Trying backup models for streaming`);
|
|
152
|
+
let lastBackupError = primaryError;
|
|
153
|
+
for (let i = 0; i < this.backupModels.length; i++) {
|
|
154
|
+
const backupModel = this.backupModels[i];
|
|
155
|
+
console.log(`[GEMINI] Trying backup model ${i + 1}/${this.backupModels.length}: ${backupModel}`);
|
|
156
|
+
try {
|
|
157
|
+
yield* this.generateStreamWithModel(backupModel, input);
|
|
158
|
+
console.log(`[GEMINI] Backup model ${backupModel} succeeded`);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
catch (backupError) {
|
|
162
|
+
const backupErrMsg = String(backupError);
|
|
163
|
+
console.warn(`[GEMINI] Backup model ${backupModel} failed: ${backupErrMsg}`);
|
|
164
|
+
lastBackupError = backupError;
|
|
165
|
+
if (!shouldUseBackupModel(backupError) &&
|
|
166
|
+
i < this.backupModels.length - 1) {
|
|
167
|
+
console.log(`[GEMINI] Backup model error doesn't qualify for further attempts`);
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
const lastBackupErrMsg = String(lastBackupError);
|
|
173
|
+
console.error(`[GEMINI] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`);
|
|
174
|
+
throw lastBackupError;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async *generateStreamWithModel(model, input) {
|
|
178
|
+
// Enable JSON mode if requested
|
|
179
|
+
const configOverride = { ...this.config };
|
|
180
|
+
if (input.parameters?.jsonMode) {
|
|
181
|
+
configOverride.responseMimeType = "application/json";
|
|
182
|
+
}
|
|
183
|
+
const stream = await this.genAI.models.generateContentStream({
|
|
184
|
+
model,
|
|
185
|
+
contents: input.prompt,
|
|
186
|
+
config: configOverride,
|
|
187
|
+
});
|
|
188
|
+
let accumulated = "";
|
|
189
|
+
let promptTokenCount = 0;
|
|
190
|
+
let candidatesTokenCount = 0;
|
|
191
|
+
let totalTokenCount = 0;
|
|
192
|
+
for await (const chunk of stream) {
|
|
193
|
+
const delta = chunk.text || "";
|
|
194
|
+
if (delta) {
|
|
195
|
+
accumulated += delta;
|
|
196
|
+
yield {
|
|
197
|
+
delta,
|
|
198
|
+
accumulated,
|
|
199
|
+
done: false,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
// Update token counts if available
|
|
203
|
+
if (chunk.usageMetadata) {
|
|
204
|
+
promptTokenCount = chunk.usageMetadata.promptTokenCount || 0;
|
|
205
|
+
candidatesTokenCount = chunk.usageMetadata.candidatesTokenCount || 0;
|
|
206
|
+
totalTokenCount = chunk.usageMetadata.totalTokenCount || 0;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Parse JSON response if JSON mode was enabled
|
|
210
|
+
let structured;
|
|
211
|
+
if (input.parameters?.jsonMode && accumulated) {
|
|
212
|
+
try {
|
|
213
|
+
structured = JSON.parse(accumulated);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.warn("[GEMINI] Failed to parse JSON response in stream:", error);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Yield final chunk
|
|
220
|
+
yield {
|
|
221
|
+
delta: "",
|
|
222
|
+
accumulated,
|
|
223
|
+
done: true,
|
|
224
|
+
metadata: {
|
|
225
|
+
model,
|
|
226
|
+
tokensUsed: totalTokenCount,
|
|
227
|
+
promptTokens: promptTokenCount,
|
|
228
|
+
completionTokens: candidatesTokenCount,
|
|
229
|
+
},
|
|
230
|
+
structured,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
137
233
|
}
|
|
138
234
|
//# sourceMappingURL=GeminiProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiProvider.js","sourceRoot":"","sources":["../../src/providers/GeminiProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"GeminiProvider.js","sourceRoot":"","sources":["../../src/providers/GeminiProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* OpenAI provider implementation with retry and backup models
|
|
3
3
|
*/
|
|
4
4
|
import type { ChatCompletionCreateParamsNonStreaming } from "openai/resources/chat/completions";
|
|
5
|
-
import type { AiProvider, GenerateMessageInput, GenerateMessageOutput } from "../types/ai";
|
|
5
|
+
import type { AiProvider, GenerateMessageInput, GenerateMessageOutput, GenerateMessageStreamChunk } from "../types/ai";
|
|
6
6
|
/**
|
|
7
7
|
* Configuration options for OpenAI provider
|
|
8
8
|
* Uses types from openai package
|
|
@@ -36,7 +36,10 @@ export declare class OpenAIProvider implements AiProvider {
|
|
|
36
36
|
private retryConfig;
|
|
37
37
|
constructor(options: OpenAIProviderOptions);
|
|
38
38
|
generateMessage<TContext = unknown>(input: GenerateMessageInput<TContext>): Promise<GenerateMessageOutput>;
|
|
39
|
+
generateMessageStream<TContext = unknown>(input: GenerateMessageInput<TContext>): AsyncGenerator<GenerateMessageStreamChunk>;
|
|
39
40
|
private generateWithBackup;
|
|
40
41
|
private generateWithModel;
|
|
42
|
+
private generateStreamWithBackup;
|
|
43
|
+
private generateStreamWithModel;
|
|
41
44
|
}
|
|
42
45
|
//# sourceMappingURL=OpenAIProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,mCAAmC,CAAC;AAEhG,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,mCAAmC,CAAC;AAEhG,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AAQrB;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CACd,IAAI,CAAC,sCAAsC,EAAE,OAAO,GAAG,UAAU,CAAC,CACnE,CAAC;IACF,0BAA0B;IAC1B,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAwED;;GAEG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,SAAgB,IAAI,YAAY;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,MAAM,CAAC,CAEb;IACF,OAAO,CAAC,WAAW,CAAuC;gBAE9C,OAAO,EAAE,qBAAqB;IAiCpC,eAAe,CAAC,QAAQ,GAAG,OAAO,EACtC,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAI1B,qBAAqB,CAAC,QAAQ,GAAG,OAAO,EAC7C,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,cAAc,CAAC,0BAA0B,CAAC;YAI/B,kBAAkB;YA2DlB,iBAAiB;YAmIhB,wBAAwB;YA2DxB,uBAAuB;CA0FvC"}
|