cost-katana 2.0.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/LICENSE +21 -0
- package/README.md +550 -0
- package/dist/analyzers/cost-analyzer.d.ts +28 -0
- package/dist/analyzers/cost-analyzer.d.ts.map +1 -0
- package/dist/analyzers/cost-analyzer.js +165 -0
- package/dist/analyzers/cost-analyzer.js.map +1 -0
- package/dist/analyzers/token-counter.d.ts +21 -0
- package/dist/analyzers/token-counter.d.ts.map +1 -0
- package/dist/analyzers/token-counter.js +100 -0
- package/dist/analyzers/token-counter.js.map +1 -0
- package/dist/analyzers/usage-tracker.d.ts +29 -0
- package/dist/analyzers/usage-tracker.d.ts.map +1 -0
- package/dist/analyzers/usage-tracker.js +142 -0
- package/dist/analyzers/usage-tracker.js.map +1 -0
- package/dist/config/default.d.ts +45 -0
- package/dist/config/default.d.ts.map +1 -0
- package/dist/config/default.js +103 -0
- package/dist/config/default.js.map +1 -0
- package/dist/config/model-types.d.ts +45 -0
- package/dist/config/model-types.d.ts.map +1 -0
- package/dist/config/model-types.js +101 -0
- package/dist/config/model-types.js.map +1 -0
- package/dist/config/pricing/anthropic.d.ts +3 -0
- package/dist/config/pricing/anthropic.d.ts.map +1 -0
- package/dist/config/pricing/anthropic.js +191 -0
- package/dist/config/pricing/anthropic.js.map +1 -0
- package/dist/config/pricing/aws-bedrock.d.ts +3 -0
- package/dist/config/pricing/aws-bedrock.d.ts.map +1 -0
- package/dist/config/pricing/aws-bedrock.js +747 -0
- package/dist/config/pricing/aws-bedrock.js.map +1 -0
- package/dist/config/pricing/cohere.d.ts +3 -0
- package/dist/config/pricing/cohere.d.ts.map +1 -0
- package/dist/config/pricing/cohere.js +371 -0
- package/dist/config/pricing/cohere.js.map +1 -0
- package/dist/config/pricing/deepseek.d.ts +3 -0
- package/dist/config/pricing/deepseek.d.ts.map +1 -0
- package/dist/config/pricing/deepseek.js +102 -0
- package/dist/config/pricing/deepseek.js.map +1 -0
- package/dist/config/pricing/google.d.ts +3 -0
- package/dist/config/pricing/google.d.ts.map +1 -0
- package/dist/config/pricing/google.js +671 -0
- package/dist/config/pricing/google.js.map +1 -0
- package/dist/config/pricing/grok.d.ts +3 -0
- package/dist/config/pricing/grok.d.ts.map +1 -0
- package/dist/config/pricing/grok.js +59 -0
- package/dist/config/pricing/grok.js.map +1 -0
- package/dist/config/pricing/index.d.ts +11 -0
- package/dist/config/pricing/index.d.ts.map +1 -0
- package/dist/config/pricing/index.js +24 -0
- package/dist/config/pricing/index.js.map +1 -0
- package/dist/config/pricing/meta.d.ts +3 -0
- package/dist/config/pricing/meta.d.ts.map +1 -0
- package/dist/config/pricing/meta.js +69 -0
- package/dist/config/pricing/meta.js.map +1 -0
- package/dist/config/pricing/mistral.d.ts +3 -0
- package/dist/config/pricing/mistral.d.ts.map +1 -0
- package/dist/config/pricing/mistral.js +690 -0
- package/dist/config/pricing/mistral.js.map +1 -0
- package/dist/config/pricing/openai.d.ts +3 -0
- package/dist/config/pricing/openai.d.ts.map +1 -0
- package/dist/config/pricing/openai.js +475 -0
- package/dist/config/pricing/openai.js.map +1 -0
- package/dist/config/pricing/xai.d.ts +3 -0
- package/dist/config/pricing/xai.d.ts.map +1 -0
- package/dist/config/pricing/xai.js +141 -0
- package/dist/config/pricing/xai.js.map +1 -0
- package/dist/config/pricing-data.d.ts +55 -0
- package/dist/config/pricing-data.d.ts.map +1 -0
- package/dist/config/pricing-data.js +179 -0
- package/dist/config/pricing-data.js.map +1 -0
- package/dist/feedback/client.d.ts +14 -0
- package/dist/feedback/client.d.ts.map +1 -0
- package/dist/feedback/client.js +95 -0
- package/dist/feedback/client.js.map +1 -0
- package/dist/feedback/index.d.ts +3 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +21 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/gateway/client.d.ts +77 -0
- package/dist/gateway/client.d.ts.map +1 -0
- package/dist/gateway/client.js +630 -0
- package/dist/gateway/client.js.map +1 -0
- package/dist/gateway/index.d.ts +9 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +66 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/index.d.ts +183 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1438 -0
- package/dist/index.js.map +1 -0
- package/dist/optimizers/context-trimmer.d.ts +18 -0
- package/dist/optimizers/context-trimmer.d.ts.map +1 -0
- package/dist/optimizers/context-trimmer.js +221 -0
- package/dist/optimizers/context-trimmer.js.map +1 -0
- package/dist/optimizers/index.d.ts +6 -0
- package/dist/optimizers/index.d.ts.map +1 -0
- package/dist/optimizers/index.js +14 -0
- package/dist/optimizers/index.js.map +1 -0
- package/dist/optimizers/prompt-compressor.d.ts +15 -0
- package/dist/optimizers/prompt-compressor.d.ts.map +1 -0
- package/dist/optimizers/prompt-compressor.js +268 -0
- package/dist/optimizers/prompt-compressor.js.map +1 -0
- package/dist/optimizers/prompt-optimizer.d.ts +29 -0
- package/dist/optimizers/prompt-optimizer.d.ts.map +1 -0
- package/dist/optimizers/prompt-optimizer.js +381 -0
- package/dist/optimizers/prompt-optimizer.js.map +1 -0
- package/dist/optimizers/request-fusion.d.ts +34 -0
- package/dist/optimizers/request-fusion.d.ts.map +1 -0
- package/dist/optimizers/request-fusion.js +284 -0
- package/dist/optimizers/request-fusion.js.map +1 -0
- package/dist/optimizers/suggestion-engine.d.ts +29 -0
- package/dist/optimizers/suggestion-engine.d.ts.map +1 -0
- package/dist/optimizers/suggestion-engine.js +234 -0
- package/dist/optimizers/suggestion-engine.js.map +1 -0
- package/dist/providers/anthropic.d.ts +23 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +108 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/azure.d.ts +15 -0
- package/dist/providers/azure.d.ts.map +1 -0
- package/dist/providers/azure.js +115 -0
- package/dist/providers/azure.js.map +1 -0
- package/dist/providers/base.d.ts +20 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +67 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/bedrock.d.ts +23 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +247 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/cohere.d.ts +17 -0
- package/dist/providers/cohere.d.ts.map +1 -0
- package/dist/providers/cohere.js +122 -0
- package/dist/providers/cohere.js.map +1 -0
- package/dist/providers/deepseek.d.ts +6 -0
- package/dist/providers/deepseek.d.ts.map +1 -0
- package/dist/providers/deepseek.js +17 -0
- package/dist/providers/deepseek.js.map +1 -0
- package/dist/providers/google.d.ts +17 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +141 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +61 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai.d.ts +16 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +194 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/trace/client.d.ts +48 -0
- package/dist/trace/client.d.ts.map +1 -0
- package/dist/trace/client.js +130 -0
- package/dist/trace/client.js.map +1 -0
- package/dist/trace/index.d.ts +7 -0
- package/dist/trace/index.d.ts.map +1 -0
- package/dist/trace/index.js +30 -0
- package/dist/trace/index.js.map +1 -0
- package/dist/trace/middleware.d.ts +70 -0
- package/dist/trace/middleware.d.ts.map +1 -0
- package/dist/trace/middleware.js +104 -0
- package/dist/trace/middleware.js.map +1 -0
- package/dist/trace/providers.d.ts +83 -0
- package/dist/trace/providers.d.ts.map +1 -0
- package/dist/trace/providers.js +340 -0
- package/dist/trace/providers.js.map +1 -0
- package/dist/trace/service.d.ts +59 -0
- package/dist/trace/service.d.ts.map +1 -0
- package/dist/trace/service.js +425 -0
- package/dist/trace/service.js.map +1 -0
- package/dist/trace/types.d.ts +102 -0
- package/dist/trace/types.d.ts.map +1 -0
- package/dist/trace/types.js +3 -0
- package/dist/trace/types.js.map +1 -0
- package/dist/types/failover.d.ts +29 -0
- package/dist/types/failover.d.ts.map +1 -0
- package/dist/types/failover.js +3 -0
- package/dist/types/failover.js.map +1 -0
- package/dist/types/feedback.d.ts +69 -0
- package/dist/types/feedback.d.ts.map +1 -0
- package/dist/types/feedback.js +3 -0
- package/dist/types/feedback.js.map +1 -0
- package/dist/types/gateway.d.ts +303 -0
- package/dist/types/gateway.d.ts.map +1 -0
- package/dist/types/gateway.js +3 -0
- package/dist/types/gateway.js.map +1 -0
- package/dist/types/index.d.ts +242 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +37 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/models.d.ts +7 -0
- package/dist/types/models.d.ts.map +1 -0
- package/dist/types/models.js +3838 -0
- package/dist/types/models.js.map +1 -0
- package/dist/types/providers.d.ts +128 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +10 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/simplified.d.ts +65 -0
- package/dist/types/simplified.d.ts.map +1 -0
- package/dist/types/simplified.js +4 -0
- package/dist/types/simplified.js.map +1 -0
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +154 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pricing.d.ts +30 -0
- package/dist/utils/pricing.d.ts.map +1 -0
- package/dist/utils/pricing.js +148 -0
- package/dist/utils/pricing.js.map +1 -0
- package/dist/utils/validators.d.ts +10 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +133 -0
- package/dist/utils/validators.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseProvider } from './base';
|
|
2
|
+
import { ProviderConfig } from '../types';
|
|
3
|
+
import { ProviderRequest, ProviderResponse, CohereUsage, AnyUsage } from '../types/providers';
|
|
4
|
+
export declare class CohereProvider extends BaseProvider {
|
|
5
|
+
private apiKey;
|
|
6
|
+
private apiUrl;
|
|
7
|
+
constructor(config: ProviderConfig);
|
|
8
|
+
countTokens(text: string, _model: string): Promise<number>;
|
|
9
|
+
makeRequest(request: ProviderRequest): Promise<ProviderResponse>;
|
|
10
|
+
private formatRequestBody;
|
|
11
|
+
private messagesToCohereHistory;
|
|
12
|
+
private formatResponse;
|
|
13
|
+
parseUsage(usage: any): CohereUsage;
|
|
14
|
+
protected getPromptTokens(usage: AnyUsage): number;
|
|
15
|
+
protected getCompletionTokens(usage: AnyUsage): number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cohere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere.d.ts","sourceRoot":"","sources":["../../src/providers/cohere.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAc,MAAM,UAAU,CAAC;AACtD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,QAAQ,EAET,MAAM,oBAAoB,CAAC;AA8B5B,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,cAAc;IAW5B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuCtE,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,cAAc;IAkBtB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,WAAW;IAenC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIlD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;CAGvD"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CohereProvider = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const gpt_3_encoder_1 = require("gpt-3-encoder");
|
|
7
|
+
class CohereProvider extends base_1.BaseProvider {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
super({ ...config, provider: types_1.AIProvider.Cohere });
|
|
10
|
+
if (!config.apiKey) {
|
|
11
|
+
throw new Error('Cohere API key is required');
|
|
12
|
+
}
|
|
13
|
+
this.apiKey = config.apiKey;
|
|
14
|
+
this.apiUrl = config.endpoint || 'https://api.cohere.ai/v1';
|
|
15
|
+
}
|
|
16
|
+
async countTokens(text, _model) {
|
|
17
|
+
try {
|
|
18
|
+
const encoded = (0, gpt_3_encoder_1.encode)(text);
|
|
19
|
+
return Promise.resolve(encoded.length);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.warn('Token counting failed for Cohere model:', error);
|
|
23
|
+
return Promise.resolve(Math.ceil(text.length / 4));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async makeRequest(request) {
|
|
27
|
+
const url = `${this.apiUrl}/chat`;
|
|
28
|
+
const body = this.formatRequestBody(request);
|
|
29
|
+
try {
|
|
30
|
+
const response = await fetch(url, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
Authorization: `Bearer ${this.apiKey}`
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify(body)
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
let errorMsg = response.statusText;
|
|
40
|
+
try {
|
|
41
|
+
const error = await response.json();
|
|
42
|
+
if (typeof error === 'object' && error !== null && 'message' in error) {
|
|
43
|
+
const errObj = error;
|
|
44
|
+
errorMsg = errObj.message || errorMsg;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (_err) {
|
|
48
|
+
console.debug('Error parsing response:', _err);
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Cohere API error: ${errorMsg}`);
|
|
51
|
+
}
|
|
52
|
+
const data = (await response.json());
|
|
53
|
+
return this.formatResponse(data, request);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error instanceof Error) {
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
throw new Error('Failed to make Cohere request');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
formatRequestBody(request) {
|
|
63
|
+
const { model, messages, prompt, maxTokens, temperature, topP } = request;
|
|
64
|
+
const lastMessage = messages ? messages[messages.length - 1] : { content: prompt || '' };
|
|
65
|
+
const chatHistory = messages
|
|
66
|
+
? this.messagesToCohereHistory(messages.slice(0, messages.length - 1))
|
|
67
|
+
: [];
|
|
68
|
+
return {
|
|
69
|
+
model,
|
|
70
|
+
message: lastMessage.content,
|
|
71
|
+
chat_history: chatHistory,
|
|
72
|
+
max_tokens: maxTokens,
|
|
73
|
+
temperature,
|
|
74
|
+
p: topP
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
messagesToCohereHistory(messages) {
|
|
78
|
+
return messages.map(msg => ({
|
|
79
|
+
role: msg.role === 'user' ? 'USER' : 'CHATBOT',
|
|
80
|
+
message: msg.content
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
formatResponse(response, request) {
|
|
84
|
+
return {
|
|
85
|
+
id: response.generation_id,
|
|
86
|
+
model: request.model,
|
|
87
|
+
choices: [
|
|
88
|
+
{
|
|
89
|
+
message: {
|
|
90
|
+
role: 'assistant',
|
|
91
|
+
content: response.text
|
|
92
|
+
},
|
|
93
|
+
index: 0,
|
|
94
|
+
finishReason: response.finish_reason
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
usage: response.meta?.billed_units ?? { input_tokens: 0, output_tokens: 0 }
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
parseUsage(usage) {
|
|
101
|
+
return {
|
|
102
|
+
tokens: {
|
|
103
|
+
input_tokens: usage.input_tokens || 0,
|
|
104
|
+
output_tokens: usage.output_tokens || 0
|
|
105
|
+
},
|
|
106
|
+
meta: {
|
|
107
|
+
billed_units: {
|
|
108
|
+
input_tokens: usage.input_tokens || 0,
|
|
109
|
+
output_tokens: usage.output_tokens || 0
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
getPromptTokens(usage) {
|
|
115
|
+
return usage.meta?.billed_units.input_tokens || 0;
|
|
116
|
+
}
|
|
117
|
+
getCompletionTokens(usage) {
|
|
118
|
+
return usage.meta?.billed_units.output_tokens || 0;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.CohereProvider = CohereProvider;
|
|
122
|
+
//# sourceMappingURL=cohere.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere.js","sourceRoot":"","sources":["../../src/providers/cohere.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AACtC,oCAAsD;AAUtD,iDAAuC;AA2BvC,MAAa,cAAe,SAAQ,mBAAY;IAI9C,YAAY,MAAsB;QAChC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,kBAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,0BAA0B,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,MAAc;QAG5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,sBAAM,EAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAwB;QACxC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACvC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;wBACtE,MAAM,MAAM,GAAG,KAA4B,CAAC;wBAC5C,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;oBACxC,CAAC;gBACH,CAAC;gBAAC,OAAO,IAAI,EAAE,CAAC;oBAEd,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;YACvD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAwB;QAChD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAE1E,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QACzF,MAAM,WAAW,GAAG,QAAQ;YAC1B,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,KAAK;YACL,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,SAAS;YACrB,WAAW;YACX,CAAC,EAAE,IAAI;SACR,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAAC,QAAmB;QACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC9C,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,cAAc,CAAC,QAAwB,EAAE,OAAwB;QACvE,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,aAAa;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,QAAQ,CAAC,IAAI;qBACvB;oBACD,KAAK,EAAE,CAAC;oBACR,YAAY,EAAE,QAAQ,CAAC,aAAa;iBACrC;aACF;YACD,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;SAC5E,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAU;QACnB,OAAO;YACL,MAAM,EAAE;gBACN,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;gBACrC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;aACxC;YACD,IAAI,EAAE;gBACJ,YAAY,EAAE;oBACZ,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;oBACrC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;iBACxC;aACF;SACF,CAAC;IACJ,CAAC;IAES,eAAe,CAAC,KAAe;QACvC,OAAQ,KAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,IAAI,CAAC,CAAC;IACrE,CAAC;IAES,mBAAmB,CAAC,KAAe;QAC3C,OAAQ,KAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,aAAa,IAAI,CAAC,CAAC;IACtE,CAAC;CACF;AAnID,wCAmIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.d.ts","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAc,MAAM,UAAU,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,MAAM,EAAE,cAAc;CAQnC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeepSeekProvider = void 0;
|
|
4
|
+
const openai_1 = require("./openai");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
class DeepSeekProvider extends openai_1.OpenAIProvider {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
const deepSeekConfig = {
|
|
9
|
+
...config,
|
|
10
|
+
provider: types_1.AIProvider.DeepSeek,
|
|
11
|
+
endpoint: 'https://api.deepseek.com/v1'
|
|
12
|
+
};
|
|
13
|
+
super(deepSeekConfig);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.DeepSeekProvider = DeepSeekProvider;
|
|
17
|
+
//# sourceMappingURL=deepseek.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek.js","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,oCAAsD;AAEtD,MAAa,gBAAiB,SAAQ,uBAAc;IAClD,YAAY,MAAsB;QAChC,MAAM,cAAc,GAAmB;YACrC,GAAG,MAAM;YACT,QAAQ,EAAE,kBAAU,CAAC,QAAQ;YAC7B,QAAQ,EAAE,6BAA6B;SACxC,CAAC;QACF,KAAK,CAAC,cAAc,CAAC,CAAC;IACxB,CAAC;CACF;AATD,4CASC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseProvider } from './base';
|
|
2
|
+
import { ProviderConfig } from '../types';
|
|
3
|
+
import { ProviderRequest, ProviderResponse, GoogleUsage, AnyUsage } from '../types/providers';
|
|
4
|
+
export declare class GoogleProvider extends BaseProvider {
|
|
5
|
+
private apiKey;
|
|
6
|
+
private apiUrl;
|
|
7
|
+
constructor(config: ProviderConfig);
|
|
8
|
+
countTokens(text: string, model: string): Promise<number>;
|
|
9
|
+
makeRequest(request: ProviderRequest): Promise<ProviderResponse>;
|
|
10
|
+
private formatRequestBody;
|
|
11
|
+
private messagesToGoogleContents;
|
|
12
|
+
private formatResponse;
|
|
13
|
+
parseUsage(usage: any): GoogleUsage;
|
|
14
|
+
protected getPromptTokens(usage: AnyUsage): number;
|
|
15
|
+
protected getCompletionTokens(usage: AnyUsage): number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=google.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAc,MAAM,UAAU,CAAC;AACtD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,QAAQ,EAET,MAAM,oBAAoB,CAAC;AAoC5B,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,cAAc;IAW5B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BzD,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuCtE,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,cAAc;IA8BtB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,WAAW;IAQnC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIlD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;CAGvD"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GoogleProvider = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
class GoogleProvider extends base_1.BaseProvider {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super({ ...config, provider: types_1.AIProvider.Google });
|
|
9
|
+
if (!config.apiKey) {
|
|
10
|
+
throw new Error('Google API key is required');
|
|
11
|
+
}
|
|
12
|
+
this.apiKey = config.apiKey;
|
|
13
|
+
this.apiUrl = config.endpoint || 'https://generativelanguage.googleapis.com/v1beta';
|
|
14
|
+
}
|
|
15
|
+
async countTokens(text, model) {
|
|
16
|
+
const url = `${this.apiUrl}/models/${model}:countTokens?key=${this.apiKey}`;
|
|
17
|
+
try {
|
|
18
|
+
const response = await fetch(url, {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: { 'Content-Type': 'application/json' },
|
|
21
|
+
body: JSON.stringify({
|
|
22
|
+
generateContentRequest: {
|
|
23
|
+
contents: [{ parts: [{ text }] }]
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
return Math.ceil(text.length / 4);
|
|
29
|
+
}
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
return data.totalTokens || Math.ceil(text.length / 4);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.warn('Token counting failed for Google model:', error);
|
|
35
|
+
return Math.ceil(text.length / 4);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async makeRequest(request) {
|
|
39
|
+
const url = `${this.apiUrl}/models/${request.model}:generateContent?key=${this.apiKey}`;
|
|
40
|
+
const body = this.formatRequestBody(request);
|
|
41
|
+
try {
|
|
42
|
+
const response = await fetch(url, {
|
|
43
|
+
method: 'POST',
|
|
44
|
+
headers: {
|
|
45
|
+
'Content-Type': 'application/json'
|
|
46
|
+
},
|
|
47
|
+
body: JSON.stringify(body)
|
|
48
|
+
});
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
let errorMsg = response.statusText;
|
|
51
|
+
try {
|
|
52
|
+
const error = await response.json();
|
|
53
|
+
if (typeof error === 'object' && error !== null && 'error' in error) {
|
|
54
|
+
const errObj = error;
|
|
55
|
+
errorMsg = errObj.error?.message || errorMsg;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (_err) {
|
|
59
|
+
console.debug('Error parsing response:', _err);
|
|
60
|
+
}
|
|
61
|
+
throw new Error(`Google API error: ${errorMsg}`);
|
|
62
|
+
}
|
|
63
|
+
const data = (await response.json());
|
|
64
|
+
return this.formatResponse(data, request);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (error instanceof Error) {
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
throw new Error('Failed to make Google request');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
formatRequestBody(request) {
|
|
74
|
+
const { messages, prompt, maxTokens, temperature, topP } = request;
|
|
75
|
+
const contents = messages
|
|
76
|
+
? this.messagesToGoogleContents(messages)
|
|
77
|
+
: [{ role: 'user', parts: [{ text: prompt }] }];
|
|
78
|
+
return {
|
|
79
|
+
contents,
|
|
80
|
+
generationConfig: {
|
|
81
|
+
maxOutputTokens: maxTokens,
|
|
82
|
+
temperature,
|
|
83
|
+
topP
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
messagesToGoogleContents(messages) {
|
|
88
|
+
const contents = [];
|
|
89
|
+
messages.forEach(msg => {
|
|
90
|
+
const role = msg.role === 'assistant' ? 'model' : 'user';
|
|
91
|
+
contents.push({
|
|
92
|
+
role: role,
|
|
93
|
+
parts: [{ text: msg.content }]
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
return contents;
|
|
97
|
+
}
|
|
98
|
+
formatResponse(response, request) {
|
|
99
|
+
const choice = response.candidates?.[0];
|
|
100
|
+
const usage = response.usageMetadata ?? {};
|
|
101
|
+
return {
|
|
102
|
+
id: `google-${Date.now()}`,
|
|
103
|
+
model: request.model,
|
|
104
|
+
choices: choice
|
|
105
|
+
? [
|
|
106
|
+
{
|
|
107
|
+
message: {
|
|
108
|
+
role: 'assistant',
|
|
109
|
+
content: choice.content?.parts?.[0]?.text || ''
|
|
110
|
+
},
|
|
111
|
+
index: 0,
|
|
112
|
+
finishReason: choice.finishReason
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
: [],
|
|
116
|
+
usage: {
|
|
117
|
+
promptTokenCount: usage.promptTokenCount ?? 0,
|
|
118
|
+
candidatesTokenCount: usage.candidatesTokenCount ?? 0,
|
|
119
|
+
totalTokenCount: usage.totalTokenCount ?? 0
|
|
120
|
+
},
|
|
121
|
+
metadata: {
|
|
122
|
+
safetyRatings: choice?.safetyRatings
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
parseUsage(usage) {
|
|
127
|
+
return {
|
|
128
|
+
promptTokenCount: usage.promptTokenCount || 0,
|
|
129
|
+
candidatesTokenCount: usage.candidatesTokenCount || 0,
|
|
130
|
+
totalTokenCount: usage.totalTokenCount || 0
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
getPromptTokens(usage) {
|
|
134
|
+
return usage.promptTokenCount;
|
|
135
|
+
}
|
|
136
|
+
getCompletionTokens(usage) {
|
|
137
|
+
return usage.candidatesTokenCount;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.GoogleProvider = GoogleProvider;
|
|
141
|
+
//# sourceMappingURL=google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { BaseProvider } from './base';
|
|
2
|
+
export { OpenAIProvider } from './openai';
|
|
3
|
+
export { BedrockProvider } from './bedrock';
|
|
4
|
+
export { GoogleProvider } from './google';
|
|
5
|
+
export { CohereProvider } from './cohere';
|
|
6
|
+
export { AnthropicProvider } from './anthropic';
|
|
7
|
+
export { AzureProvider } from './azure';
|
|
8
|
+
export { DeepSeekProvider } from './deepseek';
|
|
9
|
+
import { AIProvider, ProviderConfig } from '../types';
|
|
10
|
+
import { BaseProvider } from './base';
|
|
11
|
+
export declare function createProvider(config: ProviderConfig): BaseProvider;
|
|
12
|
+
export declare function isProviderSupported(provider: AIProvider): boolean;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAStC,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAmBnE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAUjE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeepSeekProvider = exports.AzureProvider = exports.AnthropicProvider = exports.CohereProvider = exports.GoogleProvider = exports.BedrockProvider = exports.OpenAIProvider = exports.BaseProvider = void 0;
|
|
4
|
+
exports.createProvider = createProvider;
|
|
5
|
+
exports.isProviderSupported = isProviderSupported;
|
|
6
|
+
var base_1 = require("./base");
|
|
7
|
+
Object.defineProperty(exports, "BaseProvider", { enumerable: true, get: function () { return base_1.BaseProvider; } });
|
|
8
|
+
var openai_1 = require("./openai");
|
|
9
|
+
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_1.OpenAIProvider; } });
|
|
10
|
+
var bedrock_1 = require("./bedrock");
|
|
11
|
+
Object.defineProperty(exports, "BedrockProvider", { enumerable: true, get: function () { return bedrock_1.BedrockProvider; } });
|
|
12
|
+
var google_1 = require("./google");
|
|
13
|
+
Object.defineProperty(exports, "GoogleProvider", { enumerable: true, get: function () { return google_1.GoogleProvider; } });
|
|
14
|
+
var cohere_1 = require("./cohere");
|
|
15
|
+
Object.defineProperty(exports, "CohereProvider", { enumerable: true, get: function () { return cohere_1.CohereProvider; } });
|
|
16
|
+
var anthropic_1 = require("./anthropic");
|
|
17
|
+
Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return anthropic_1.AnthropicProvider; } });
|
|
18
|
+
var azure_1 = require("./azure");
|
|
19
|
+
Object.defineProperty(exports, "AzureProvider", { enumerable: true, get: function () { return azure_1.AzureProvider; } });
|
|
20
|
+
var deepseek_1 = require("./deepseek");
|
|
21
|
+
Object.defineProperty(exports, "DeepSeekProvider", { enumerable: true, get: function () { return deepseek_1.DeepSeekProvider; } });
|
|
22
|
+
const types_1 = require("../types");
|
|
23
|
+
const openai_2 = require("./openai");
|
|
24
|
+
const bedrock_2 = require("./bedrock");
|
|
25
|
+
const google_2 = require("./google");
|
|
26
|
+
const cohere_2 = require("./cohere");
|
|
27
|
+
const anthropic_2 = require("./anthropic");
|
|
28
|
+
const azure_2 = require("./azure");
|
|
29
|
+
const deepseek_2 = require("./deepseek");
|
|
30
|
+
function createProvider(config) {
|
|
31
|
+
switch (config.provider) {
|
|
32
|
+
case types_1.AIProvider.OpenAI:
|
|
33
|
+
return new openai_2.OpenAIProvider(config);
|
|
34
|
+
case types_1.AIProvider.AWSBedrock:
|
|
35
|
+
return new bedrock_2.BedrockProvider(config);
|
|
36
|
+
case types_1.AIProvider.Anthropic:
|
|
37
|
+
return new anthropic_2.AnthropicProvider(config);
|
|
38
|
+
case types_1.AIProvider.Google:
|
|
39
|
+
return new google_2.GoogleProvider(config);
|
|
40
|
+
case types_1.AIProvider.Cohere:
|
|
41
|
+
return new cohere_2.CohereProvider(config);
|
|
42
|
+
case types_1.AIProvider.Azure:
|
|
43
|
+
return new azure_2.AzureProvider(config);
|
|
44
|
+
case types_1.AIProvider.DeepSeek:
|
|
45
|
+
return new deepseek_2.DeepSeekProvider(config);
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(`Unknown or unsupported provider: ${config.provider}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function isProviderSupported(provider) {
|
|
51
|
+
return [
|
|
52
|
+
types_1.AIProvider.OpenAI,
|
|
53
|
+
types_1.AIProvider.AWSBedrock,
|
|
54
|
+
types_1.AIProvider.Anthropic,
|
|
55
|
+
types_1.AIProvider.Google,
|
|
56
|
+
types_1.AIProvider.Cohere,
|
|
57
|
+
types_1.AIProvider.Azure,
|
|
58
|
+
types_1.AIProvider.DeepSeek
|
|
59
|
+
].includes(provider);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;AAmBA,wCAmBC;AAED,kDAUC;AAlDD,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AACrB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAC1B,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AACtB,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AAEzB,oCAAsD;AAEtD,qCAA0C;AAC1C,uCAA4C;AAC5C,qCAA0C;AAC1C,qCAA0C;AAC1C,2CAAgD;AAChD,mCAAwC;AACxC,yCAA8C;AAE9C,SAAgB,cAAc,CAAC,MAAsB;IACnD,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,kBAAU,CAAC,MAAM;YACpB,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,kBAAU,CAAC,UAAU;YACxB,OAAO,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,kBAAU,CAAC,SAAS;YACvB,OAAO,IAAI,6BAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,kBAAU,CAAC,MAAM;YACpB,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,kBAAU,CAAC,MAAM;YACpB,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,kBAAU,CAAC,KAAK;YACnB,OAAO,IAAI,qBAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,kBAAU,CAAC,QAAQ;YACtB,OAAO,IAAI,2BAAgB,CAAC,MAAM,CAAC,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAoB;IACtD,OAAO;QACL,kBAAU,CAAC,MAAM;QACjB,kBAAU,CAAC,UAAU;QACrB,kBAAU,CAAC,SAAS;QACpB,kBAAU,CAAC,MAAM;QACjB,kBAAU,CAAC,MAAM;QACjB,kBAAU,CAAC,KAAK;QAChB,kBAAU,CAAC,QAAQ;KACpB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseProvider } from './base';
|
|
2
|
+
import { ProviderConfig } from '../types';
|
|
3
|
+
import { ProviderRequest, ProviderResponse, OpenAIUsage, AnyUsage } from '../types/providers';
|
|
4
|
+
export declare class OpenAIProvider extends BaseProvider {
|
|
5
|
+
private apiKey;
|
|
6
|
+
private apiUrl;
|
|
7
|
+
constructor(config: ProviderConfig);
|
|
8
|
+
countTokens(text: string, _model: string): Promise<number>;
|
|
9
|
+
makeRequest(request: ProviderRequest): Promise<ProviderResponse>;
|
|
10
|
+
parseUsage(usage: unknown): OpenAIUsage;
|
|
11
|
+
protected getPromptTokens(usage: AnyUsage): number;
|
|
12
|
+
protected getCompletionTokens(usage: AnyUsage): number;
|
|
13
|
+
createEmbedding(input: string | string[], model?: string): Promise<any>;
|
|
14
|
+
listModels(): Promise<unknown[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA+B9F,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,cAAc;IAW5B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmFtE,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW;IAYvC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIlD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAKhD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,GAAE,MAAiC;IAwClF,UAAU;CAsCjB"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenAIProvider = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
const gpt_3_encoder_1 = require("gpt-3-encoder");
|
|
6
|
+
class OpenAIProvider extends base_1.BaseProvider {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super(config);
|
|
9
|
+
if (!config.apiKey) {
|
|
10
|
+
throw new Error('OpenAI API key is required');
|
|
11
|
+
}
|
|
12
|
+
this.apiKey = config.apiKey;
|
|
13
|
+
this.apiUrl = config.endpoint || 'https://api.openai.com/v1';
|
|
14
|
+
}
|
|
15
|
+
async countTokens(text, _model) {
|
|
16
|
+
try {
|
|
17
|
+
const encoded = (0, gpt_3_encoder_1.encode)(text);
|
|
18
|
+
return Promise.resolve(encoded.length);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.warn('Token counting failed for OpenAI model:', error);
|
|
22
|
+
return Promise.resolve(Math.ceil(text.length / 4));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async makeRequest(request) {
|
|
26
|
+
const endpoint = request.messages ? '/chat/completions' : '/completions';
|
|
27
|
+
const url = `${this.apiUrl}${endpoint}`;
|
|
28
|
+
const body = {
|
|
29
|
+
model: request.model,
|
|
30
|
+
max_tokens: request.maxTokens,
|
|
31
|
+
temperature: request.temperature,
|
|
32
|
+
top_p: request.topP,
|
|
33
|
+
stop: request.stopSequences,
|
|
34
|
+
stream: false,
|
|
35
|
+
user: request.userId
|
|
36
|
+
};
|
|
37
|
+
if (request.messages) {
|
|
38
|
+
body.messages = request.messages;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
body.prompt = request.prompt;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch(url, {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
headers: {
|
|
47
|
+
'Content-Type': 'application/json',
|
|
48
|
+
Authorization: `Bearer ${this.apiKey}`
|
|
49
|
+
},
|
|
50
|
+
body: JSON.stringify(body)
|
|
51
|
+
});
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
let errorMsg = response.statusText;
|
|
54
|
+
try {
|
|
55
|
+
const error = await response.json();
|
|
56
|
+
if (typeof error === 'object' && error !== null && 'error' in error) {
|
|
57
|
+
const errObj = error;
|
|
58
|
+
errorMsg = errObj.error?.message || errorMsg;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (_err) {
|
|
62
|
+
console.debug('Error parsing response:', _err);
|
|
63
|
+
}
|
|
64
|
+
throw new Error(`OpenAI API error: ${errorMsg}`);
|
|
65
|
+
}
|
|
66
|
+
const data = await response.json();
|
|
67
|
+
if (!data || typeof data !== 'object') {
|
|
68
|
+
throw new Error('Invalid response from OpenAI API');
|
|
69
|
+
}
|
|
70
|
+
const apiData = data;
|
|
71
|
+
return {
|
|
72
|
+
id: apiData.id,
|
|
73
|
+
model: apiData.model,
|
|
74
|
+
choices: Array.isArray(apiData.choices)
|
|
75
|
+
? apiData.choices.map((choice) => ({
|
|
76
|
+
text: choice.text,
|
|
77
|
+
message: typeof choice.message === 'object' &&
|
|
78
|
+
choice.message !== null &&
|
|
79
|
+
'role' in choice.message &&
|
|
80
|
+
'content' in choice.message
|
|
81
|
+
? choice.message
|
|
82
|
+
: undefined,
|
|
83
|
+
index: choice.index,
|
|
84
|
+
finishReason: choice.finish_reason
|
|
85
|
+
}))
|
|
86
|
+
: [],
|
|
87
|
+
usage: apiData.usage,
|
|
88
|
+
created: apiData.created,
|
|
89
|
+
metadata: {
|
|
90
|
+
object: apiData.object,
|
|
91
|
+
system_fingerprint: apiData.system_fingerprint
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (error instanceof Error) {
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
throw new Error('Failed to make OpenAI request');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
parseUsage(usage) {
|
|
103
|
+
if (typeof usage === 'object' && usage !== null) {
|
|
104
|
+
const u = usage;
|
|
105
|
+
return {
|
|
106
|
+
prompt_tokens: u.prompt_tokens ?? 0,
|
|
107
|
+
completion_tokens: u.completion_tokens ?? 0,
|
|
108
|
+
total_tokens: u.total_tokens ?? 0
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 };
|
|
112
|
+
}
|
|
113
|
+
getPromptTokens(usage) {
|
|
114
|
+
return usage.prompt_tokens;
|
|
115
|
+
}
|
|
116
|
+
getCompletionTokens(usage) {
|
|
117
|
+
return usage.completion_tokens;
|
|
118
|
+
}
|
|
119
|
+
async createEmbedding(input, model = 'text-embedding-ada-002') {
|
|
120
|
+
const url = `${this.apiUrl}/embeddings`;
|
|
121
|
+
try {
|
|
122
|
+
const response = await fetch(url, {
|
|
123
|
+
method: 'POST',
|
|
124
|
+
headers: {
|
|
125
|
+
'Content-Type': 'application/json',
|
|
126
|
+
Authorization: `Bearer ${this.apiKey}`
|
|
127
|
+
},
|
|
128
|
+
body: JSON.stringify({
|
|
129
|
+
input,
|
|
130
|
+
model
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
let errorMsg = response.statusText;
|
|
135
|
+
try {
|
|
136
|
+
const error = await response.json();
|
|
137
|
+
if (typeof error === 'object' && error !== null && 'error' in error) {
|
|
138
|
+
const errObj = error;
|
|
139
|
+
errorMsg = errObj.error?.message || errorMsg;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (_err) {
|
|
143
|
+
console.debug('Error parsing response:', _err);
|
|
144
|
+
}
|
|
145
|
+
throw new Error(`OpenAI API error: ${errorMsg}`);
|
|
146
|
+
}
|
|
147
|
+
return await response.json();
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
if (error instanceof Error) {
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
throw new Error('Failed to create embedding');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async listModels() {
|
|
157
|
+
const url = `${this.apiUrl}/models`;
|
|
158
|
+
try {
|
|
159
|
+
const response = await fetch(url, {
|
|
160
|
+
method: 'GET',
|
|
161
|
+
headers: {
|
|
162
|
+
Authorization: `Bearer ${this.apiKey}`
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
if (!response.ok) {
|
|
166
|
+
let errorMsg = response.statusText;
|
|
167
|
+
try {
|
|
168
|
+
const error = await response.json();
|
|
169
|
+
if (typeof error === 'object' && error !== null && 'error' in error) {
|
|
170
|
+
const errObj = error;
|
|
171
|
+
errorMsg = errObj.error?.message || errorMsg;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (_err) {
|
|
175
|
+
console.debug('Error parsing response:', _err);
|
|
176
|
+
}
|
|
177
|
+
throw new Error(`OpenAI API error: ${errorMsg}`);
|
|
178
|
+
}
|
|
179
|
+
const data = await response.json();
|
|
180
|
+
if (!data || typeof data !== 'object' || !('data' in data)) {
|
|
181
|
+
throw new Error('Invalid response from OpenAI API');
|
|
182
|
+
}
|
|
183
|
+
return data.data;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
if (error instanceof Error) {
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
throw new Error('Failed to list models');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.OpenAIProvider = OpenAIProvider;
|
|
194
|
+
//# sourceMappingURL=openai.js.map
|