@xbg.solutions/utils-llm-connector 1.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/lib/index.d.ts +16 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +54 -0
- package/lib/index.js.map +1 -0
- package/lib/llm-connector.d.ts +67 -0
- package/lib/llm-connector.d.ts.map +1 -0
- package/lib/llm-connector.js +206 -0
- package/lib/llm-connector.js.map +1 -0
- package/lib/providers/base.provider.d.ts +51 -0
- package/lib/providers/base.provider.d.ts.map +1 -0
- package/lib/providers/base.provider.js +106 -0
- package/lib/providers/base.provider.js.map +1 -0
- package/lib/providers/claude.provider.d.ts +26 -0
- package/lib/providers/claude.provider.d.ts.map +1 -0
- package/lib/providers/claude.provider.js +180 -0
- package/lib/providers/claude.provider.js.map +1 -0
- package/lib/providers/gemini.provider.d.ts +34 -0
- package/lib/providers/gemini.provider.d.ts.map +1 -0
- package/lib/providers/gemini.provider.js +285 -0
- package/lib/providers/gemini.provider.js.map +1 -0
- package/lib/providers/google-lens.provider.d.ts +58 -0
- package/lib/providers/google-lens.provider.d.ts.map +1 -0
- package/lib/providers/google-lens.provider.js +354 -0
- package/lib/providers/google-lens.provider.js.map +1 -0
- package/lib/providers/index.d.ts +6 -0
- package/lib/providers/index.d.ts.map +1 -0
- package/lib/providers/index.js +16 -0
- package/lib/providers/index.js.map +1 -0
- package/lib/providers/openai.provider.d.ts +30 -0
- package/lib/providers/openai.provider.d.ts.map +1 -0
- package/lib/providers/openai.provider.js +258 -0
- package/lib/providers/openai.provider.js.map +1 -0
- package/lib/providers/providers.types.d.ts +64 -0
- package/lib/providers/providers.types.d.ts.map +1 -0
- package/lib/providers/providers.types.js +3 -0
- package/lib/providers/providers.types.js.map +1 -0
- package/lib/requests.types.d.ts +69 -0
- package/lib/requests.types.d.ts.map +1 -0
- package/lib/requests.types.js +3 -0
- package/lib/requests.types.js.map +1 -0
- package/lib/types.d.ts +7 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +25 -0
- package/lib/types.js.map +1 -0
- package/package.json +30 -0
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LLMConnector } from './llm-connector';
|
|
2
|
+
export { LLMConnector };
|
|
3
|
+
export * from './types';
|
|
4
|
+
export * from './providers';
|
|
5
|
+
/**
|
|
6
|
+
* Get the default LLM connector instance
|
|
7
|
+
* Uses project configuration if available, otherwise falls back to environment-based config
|
|
8
|
+
*/
|
|
9
|
+
export declare function getLLMConnector(): LLMConnector;
|
|
10
|
+
/**
|
|
11
|
+
* Singleton instance for convenience
|
|
12
|
+
* This will use the project configuration automatically
|
|
13
|
+
*/
|
|
14
|
+
export declare const llmConnector: LLMConnector;
|
|
15
|
+
export default llmConnector;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAK5B;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAa9C;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,cAAoB,CAAC;AAG9C,eAAe,YAAY,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.llmConnector = exports.LLMConnector = void 0;
|
|
18
|
+
exports.getLLMConnector = getLLMConnector;
|
|
19
|
+
// Main connector class
|
|
20
|
+
const llm_connector_1 = require("./llm-connector");
|
|
21
|
+
Object.defineProperty(exports, "LLMConnector", { enumerable: true, get: function () { return llm_connector_1.LLMConnector; } });
|
|
22
|
+
// Types
|
|
23
|
+
__exportStar(require("./types"), exports);
|
|
24
|
+
// Providers (for advanced usage)
|
|
25
|
+
__exportStar(require("./providers"), exports);
|
|
26
|
+
// Create singleton instance with project config
|
|
27
|
+
let defaultConnector = null;
|
|
28
|
+
/**
|
|
29
|
+
* Get the default LLM connector instance
|
|
30
|
+
* Uses project configuration if available, otherwise falls back to environment-based config
|
|
31
|
+
*/
|
|
32
|
+
function getLLMConnector() {
|
|
33
|
+
if (!defaultConnector) {
|
|
34
|
+
try {
|
|
35
|
+
// Try to import project-specific configuration
|
|
36
|
+
const { PROVIDER_CONFIGS } = require('../../config/llm-providers.config');
|
|
37
|
+
defaultConnector = new llm_connector_1.LLMConnector(PROVIDER_CONFIGS);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// Fall back to default configuration if project config not found
|
|
41
|
+
console.warn('Project LLM configuration not found, using default configuration');
|
|
42
|
+
defaultConnector = new llm_connector_1.LLMConnector();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return defaultConnector;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Singleton instance for convenience
|
|
49
|
+
* This will use the project configuration automatically
|
|
50
|
+
*/
|
|
51
|
+
exports.llmConnector = getLLMConnector();
|
|
52
|
+
// Re-export for convenience
|
|
53
|
+
exports.default = exports.llmConnector;
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiBA,0CAaC;AA9BD,uBAAuB;AACvB,mDAA+C;AACtC,6FADA,4BAAY,OACA;AAErB,QAAQ;AACR,0CAAwB;AAExB,iCAAiC;AACjC,8CAA4B;AAE5B,gDAAgD;AAChD,IAAI,gBAAgB,GAAwB,IAAI,CAAC;AAEjD;;;GAGG;AACH,SAAgB,eAAe;IAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAC1E,gBAAgB,GAAG,IAAI,4BAAY,CAAC,gBAAgB,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACjF,gBAAgB,GAAG,IAAI,4BAAY,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACU,QAAA,YAAY,GAAG,eAAe,EAAE,CAAC;AAE9C,4BAA4B;AAC5B,kBAAe,oBAAY,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { TextGenerationRequest, TextGenerationResponse, ImageAnalysisRequest, ImageAnalysisResponse, ProviderInfo, ProviderConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Main LLM Connector class that orchestrates multiple providers
|
|
4
|
+
* Provides a unified interface for text generation and image analysis
|
|
5
|
+
*/
|
|
6
|
+
export declare class LLMConnector {
|
|
7
|
+
private providers;
|
|
8
|
+
private config;
|
|
9
|
+
constructor(config?: Record<string, ProviderConfig>);
|
|
10
|
+
/**
|
|
11
|
+
* Generate text completion using specified provider
|
|
12
|
+
*/
|
|
13
|
+
generateText(request: TextGenerationRequest): Promise<TextGenerationResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* Analyze image content using specified provider
|
|
16
|
+
*/
|
|
17
|
+
analyzeImage(request: ImageAnalysisRequest): Promise<ImageAnalysisResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Get information about all available providers
|
|
20
|
+
*/
|
|
21
|
+
getAvailableProviders(): ProviderInfo[];
|
|
22
|
+
/**
|
|
23
|
+
* Get information about a specific provider
|
|
24
|
+
*/
|
|
25
|
+
getProviderInfo(providerName: string): ProviderInfo;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a provider supports a specific feature
|
|
28
|
+
*/
|
|
29
|
+
supportsFeature(providerName: string, feature: 'text-generation' | 'image-analysis'): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get enabled provider names
|
|
32
|
+
*/
|
|
33
|
+
getEnabledProviders(): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Get provider configuration
|
|
36
|
+
*/
|
|
37
|
+
getProviderConfig(providerName: string): ProviderConfig | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Update provider configuration (runtime reconfiguration)
|
|
40
|
+
*/
|
|
41
|
+
updateProviderConfig(providerName: string, newConfig: Partial<ProviderConfig>): void;
|
|
42
|
+
/**
|
|
43
|
+
* Add a new provider dynamically
|
|
44
|
+
*/
|
|
45
|
+
addProvider(name: string, config: ProviderConfig): void;
|
|
46
|
+
/**
|
|
47
|
+
* Remove a provider
|
|
48
|
+
*/
|
|
49
|
+
removeProvider(providerName: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get a provider instance
|
|
52
|
+
*/
|
|
53
|
+
private getProvider;
|
|
54
|
+
/**
|
|
55
|
+
* Initialize all enabled providers
|
|
56
|
+
*/
|
|
57
|
+
private initializeProviders;
|
|
58
|
+
/**
|
|
59
|
+
* Initialize a single provider
|
|
60
|
+
*/
|
|
61
|
+
private initializeProvider;
|
|
62
|
+
/**
|
|
63
|
+
* Get default configuration (fallback when no config provided)
|
|
64
|
+
*/
|
|
65
|
+
private getDefaultConfig;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=llm-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-connector.d.ts","sourceRoot":"","sources":["../src/llm-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACf,MAAM,SAAS,CAAC;AAUjB;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAAiC;gBAEnC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAcnD;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAUnF;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUjF;;OAEG;IACH,qBAAqB,IAAI,YAAY,EAAE;IAIvC;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAKnD;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,OAAO;IAU7F;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAM/B;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAInE;;OAEG;IACH,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAkBpF;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAOvD;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK1C;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAiCzB"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLMConnector = void 0;
|
|
4
|
+
const providers_1 = require("./providers");
|
|
5
|
+
/**
|
|
6
|
+
* Main LLM Connector class that orchestrates multiple providers
|
|
7
|
+
* Provides a unified interface for text generation and image analysis
|
|
8
|
+
*/
|
|
9
|
+
class LLMConnector {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.providers = new Map();
|
|
12
|
+
// Use provided config or import default config
|
|
13
|
+
if (config) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
// Import default config dynamically to avoid circular dependencies
|
|
18
|
+
this.config = this.getDefaultConfig();
|
|
19
|
+
}
|
|
20
|
+
this.initializeProviders();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate text completion using specified provider
|
|
24
|
+
*/
|
|
25
|
+
async generateText(request) {
|
|
26
|
+
const provider = this.getProvider(request.provider);
|
|
27
|
+
if (!this.supportsFeature(request.provider, 'text-generation')) {
|
|
28
|
+
throw new Error(`Provider '${request.provider}' does not support text generation`);
|
|
29
|
+
}
|
|
30
|
+
return await provider.generateText(request);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Analyze image content using specified provider
|
|
34
|
+
*/
|
|
35
|
+
async analyzeImage(request) {
|
|
36
|
+
const provider = this.getProvider(request.provider);
|
|
37
|
+
if (!this.supportsFeature(request.provider, 'image-analysis')) {
|
|
38
|
+
throw new Error(`Provider '${request.provider}' does not support image analysis`);
|
|
39
|
+
}
|
|
40
|
+
return await provider.analyzeImage(request);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get information about all available providers
|
|
44
|
+
*/
|
|
45
|
+
getAvailableProviders() {
|
|
46
|
+
return Array.from(this.providers.values()).map(provider => provider.getInfo());
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get information about a specific provider
|
|
50
|
+
*/
|
|
51
|
+
getProviderInfo(providerName) {
|
|
52
|
+
const provider = this.getProvider(providerName);
|
|
53
|
+
return provider.getInfo();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if a provider supports a specific feature
|
|
57
|
+
*/
|
|
58
|
+
supportsFeature(providerName, feature) {
|
|
59
|
+
try {
|
|
60
|
+
const provider = this.getProvider(providerName);
|
|
61
|
+
const info = provider.getInfo();
|
|
62
|
+
return info.supportedFeatures.includes(feature);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get enabled provider names
|
|
70
|
+
*/
|
|
71
|
+
getEnabledProviders() {
|
|
72
|
+
return Object.entries(this.config)
|
|
73
|
+
.filter(([, config]) => config.enabled)
|
|
74
|
+
.map(([name]) => name);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get provider configuration
|
|
78
|
+
*/
|
|
79
|
+
getProviderConfig(providerName) {
|
|
80
|
+
return this.config[providerName];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Update provider configuration (runtime reconfiguration)
|
|
84
|
+
*/
|
|
85
|
+
updateProviderConfig(providerName, newConfig) {
|
|
86
|
+
const currentConfig = this.config[providerName];
|
|
87
|
+
if (!currentConfig) {
|
|
88
|
+
throw new Error(`Provider '${providerName}' not found in configuration`);
|
|
89
|
+
}
|
|
90
|
+
// Update config
|
|
91
|
+
this.config[providerName] = Object.assign(Object.assign({}, currentConfig), newConfig);
|
|
92
|
+
// Reinitialize provider if it exists and is still enabled
|
|
93
|
+
if (this.config[providerName].enabled) {
|
|
94
|
+
this.initializeProvider(providerName, this.config[providerName]);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Remove provider if disabled
|
|
98
|
+
this.providers.delete(providerName);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Add a new provider dynamically
|
|
103
|
+
*/
|
|
104
|
+
addProvider(name, config) {
|
|
105
|
+
this.config[name] = config;
|
|
106
|
+
if (config.enabled) {
|
|
107
|
+
this.initializeProvider(name, config);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Remove a provider
|
|
112
|
+
*/
|
|
113
|
+
removeProvider(providerName) {
|
|
114
|
+
this.providers.delete(providerName);
|
|
115
|
+
delete this.config[providerName];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get a provider instance
|
|
119
|
+
*/
|
|
120
|
+
getProvider(providerName) {
|
|
121
|
+
const provider = this.providers.get(providerName);
|
|
122
|
+
if (!provider) {
|
|
123
|
+
const availableProviders = Array.from(this.providers.keys()).join(', ');
|
|
124
|
+
throw new Error(`Provider '${providerName}' not found or not enabled. Available providers: ${availableProviders}`);
|
|
125
|
+
}
|
|
126
|
+
return provider;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Initialize all enabled providers
|
|
130
|
+
*/
|
|
131
|
+
initializeProviders() {
|
|
132
|
+
Object.entries(this.config).forEach(([name, config]) => {
|
|
133
|
+
if (config.enabled) {
|
|
134
|
+
try {
|
|
135
|
+
this.initializeProvider(name, config);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.warn(`Failed to initialize provider '${name}':`, error);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
if (this.providers.size === 0) {
|
|
143
|
+
console.warn('No LLM providers were successfully initialized');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Initialize a single provider
|
|
148
|
+
*/
|
|
149
|
+
initializeProvider(name, config) {
|
|
150
|
+
switch (name) {
|
|
151
|
+
case 'claude':
|
|
152
|
+
this.providers.set(name, new providers_1.ClaudeProvider(config));
|
|
153
|
+
break;
|
|
154
|
+
case 'openai':
|
|
155
|
+
this.providers.set(name, new providers_1.OpenAIProvider(config));
|
|
156
|
+
break;
|
|
157
|
+
case 'gemini':
|
|
158
|
+
this.providers.set(name, new providers_1.GeminiProvider(config));
|
|
159
|
+
break;
|
|
160
|
+
case 'google-lens':
|
|
161
|
+
this.providers.set(name, new providers_1.GoogleLensProvider(config));
|
|
162
|
+
break;
|
|
163
|
+
default:
|
|
164
|
+
console.warn(`Unknown provider: ${name}. Skipping initialization.`);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get default configuration (fallback when no config provided)
|
|
170
|
+
*/
|
|
171
|
+
getDefaultConfig() {
|
|
172
|
+
// Minimal default configuration
|
|
173
|
+
return {
|
|
174
|
+
claude: {
|
|
175
|
+
name: 'claude',
|
|
176
|
+
enabled: !!process.env.ANTHROPIC_API_KEY,
|
|
177
|
+
defaultModel: 'claude-3-5-sonnet-20241022',
|
|
178
|
+
timeout: 30000,
|
|
179
|
+
maxRetries: 2
|
|
180
|
+
},
|
|
181
|
+
openai: {
|
|
182
|
+
name: 'openai',
|
|
183
|
+
enabled: !!process.env.OPENAI_API_KEY,
|
|
184
|
+
defaultModel: 'gpt-4o',
|
|
185
|
+
timeout: 30000,
|
|
186
|
+
maxRetries: 2
|
|
187
|
+
},
|
|
188
|
+
gemini: {
|
|
189
|
+
name: 'gemini',
|
|
190
|
+
enabled: !!process.env.GOOGLE_AI_API_KEY,
|
|
191
|
+
defaultModel: 'gemini-1.5-pro',
|
|
192
|
+
timeout: 30000,
|
|
193
|
+
maxRetries: 2
|
|
194
|
+
},
|
|
195
|
+
'google-lens': {
|
|
196
|
+
name: 'google-lens',
|
|
197
|
+
enabled: !!process.env.GOOGLE_CLOUD_API_KEY || !!process.env.GOOGLE_APPLICATION_CREDENTIALS,
|
|
198
|
+
defaultModel: 'vision-product-search',
|
|
199
|
+
timeout: 15000,
|
|
200
|
+
maxRetries: 1
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
exports.LLMConnector = LLMConnector;
|
|
206
|
+
//# sourceMappingURL=llm-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-connector.js","sourceRoot":"","sources":["../src/llm-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { TextGenerationRequest, TextGenerationResponse, ImageAnalysisRequest, ImageAnalysisResponse, BaseResponse, UsageMetrics, ProviderInfo, ProviderConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for all LLM providers
|
|
4
|
+
* Provides common functionality and enforces consistent interface
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class BaseProvider {
|
|
7
|
+
protected name: string;
|
|
8
|
+
protected config: ProviderConfig;
|
|
9
|
+
constructor(name: string, config: ProviderConfig);
|
|
10
|
+
/**
|
|
11
|
+
* Generate text completion
|
|
12
|
+
*/
|
|
13
|
+
abstract generateText(request: TextGenerationRequest): Promise<TextGenerationResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* Analyze image content
|
|
16
|
+
*/
|
|
17
|
+
abstract analyzeImage(request: ImageAnalysisRequest): Promise<ImageAnalysisResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Get provider information
|
|
20
|
+
*/
|
|
21
|
+
abstract getInfo(): ProviderInfo;
|
|
22
|
+
/**
|
|
23
|
+
* Get API key - user provided or environment variable
|
|
24
|
+
*/
|
|
25
|
+
protected getApiKey(userProvidedKey?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get the environment variable name for this provider's API key
|
|
28
|
+
*/
|
|
29
|
+
protected abstract getApiKeyEnvVar(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Create a standardized base response
|
|
32
|
+
*/
|
|
33
|
+
protected createBaseResponse(requestId: string, usage: UsageMetrics): BaseResponse;
|
|
34
|
+
/**
|
|
35
|
+
* Generate a unique request ID for tracking
|
|
36
|
+
*/
|
|
37
|
+
protected generateRequestId(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Handle provider-specific errors with common error mapping
|
|
40
|
+
*/
|
|
41
|
+
protected handleProviderError(error: any, requestId: string, model: string): BaseResponse;
|
|
42
|
+
/**
|
|
43
|
+
* Validate request before processing
|
|
44
|
+
*/
|
|
45
|
+
protected validateRequest(request: TextGenerationRequest | ImageAnalysisRequest): void;
|
|
46
|
+
/**
|
|
47
|
+
* Apply rate limiting if configured
|
|
48
|
+
*/
|
|
49
|
+
protected applyRateLimit(): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=base.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.provider.d.ts","sourceRoot":"","sources":["../../src/providers/base.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,8BAAsB,YAAY;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc;IAKhD;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAEtF;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAEpF;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,YAAY;IAEhC;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;IAarD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,MAAM;IAE5C;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY;IAUlF;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY;IA4BzF;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,GAAG,IAAI;IAqBtF;;OAEG;cACa,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseProvider = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for all LLM providers
|
|
6
|
+
* Provides common functionality and enforces consistent interface
|
|
7
|
+
*/
|
|
8
|
+
class BaseProvider {
|
|
9
|
+
constructor(name, config) {
|
|
10
|
+
this.name = name;
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get API key - user provided or environment variable
|
|
15
|
+
*/
|
|
16
|
+
getApiKey(userProvidedKey) {
|
|
17
|
+
// Use user-provided key if available, otherwise platform key
|
|
18
|
+
if (userProvidedKey) {
|
|
19
|
+
return userProvidedKey;
|
|
20
|
+
}
|
|
21
|
+
const envKey = process.env[this.getApiKeyEnvVar()];
|
|
22
|
+
if (!envKey) {
|
|
23
|
+
throw new Error(`API key not found for provider '${this.name}'. Set ${this.getApiKeyEnvVar()} environment variable.`);
|
|
24
|
+
}
|
|
25
|
+
return envKey;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a standardized base response
|
|
29
|
+
*/
|
|
30
|
+
createBaseResponse(requestId, usage) {
|
|
31
|
+
return {
|
|
32
|
+
success: true,
|
|
33
|
+
usage,
|
|
34
|
+
provider: this.name,
|
|
35
|
+
model: '', // Will be set by concrete implementation
|
|
36
|
+
requestId
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Generate a unique request ID for tracking
|
|
41
|
+
*/
|
|
42
|
+
generateRequestId() {
|
|
43
|
+
return `${this.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Handle provider-specific errors with common error mapping
|
|
47
|
+
*/
|
|
48
|
+
handleProviderError(error, requestId, model) {
|
|
49
|
+
const errorMap = {
|
|
50
|
+
'rate_limit_exceeded': 'Rate limit exceeded for provider',
|
|
51
|
+
'invalid_api_key': 'Invalid API key provided',
|
|
52
|
+
'quota_exceeded': 'API quota exceeded',
|
|
53
|
+
'model_not_found': 'Requested model not available',
|
|
54
|
+
'timeout': 'Request timeout',
|
|
55
|
+
'insufficient_quota': 'Insufficient API quota',
|
|
56
|
+
'invalid_request': 'Invalid request format'
|
|
57
|
+
};
|
|
58
|
+
const mappedError = errorMap[error.code] || error.message || 'Unknown provider error';
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: mappedError,
|
|
62
|
+
usage: {
|
|
63
|
+
inputTokens: 0,
|
|
64
|
+
outputTokens: 0,
|
|
65
|
+
totalTokens: 0,
|
|
66
|
+
processingTimeMs: 0
|
|
67
|
+
},
|
|
68
|
+
provider: this.name,
|
|
69
|
+
model,
|
|
70
|
+
requestId
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validate request before processing
|
|
75
|
+
*/
|
|
76
|
+
validateRequest(request) {
|
|
77
|
+
var _a;
|
|
78
|
+
if (!request.provider || request.provider !== this.name) {
|
|
79
|
+
throw new Error(`Invalid provider. Expected '${this.name}', got '${request.provider}'`);
|
|
80
|
+
}
|
|
81
|
+
if (!request.model) {
|
|
82
|
+
throw new Error('Model is required');
|
|
83
|
+
}
|
|
84
|
+
// Type-specific validation
|
|
85
|
+
if ('prompt' in request && !((_a = request.prompt) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
86
|
+
throw new Error('Prompt is required for text generation');
|
|
87
|
+
}
|
|
88
|
+
if ('imageUrl' in request || 'imageBase64' in request) {
|
|
89
|
+
if (!request.imageUrl && !request.imageBase64) {
|
|
90
|
+
throw new Error('Either imageUrl or imageBase64 is required for image analysis');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Apply rate limiting if configured
|
|
96
|
+
*/
|
|
97
|
+
async applyRateLimit() {
|
|
98
|
+
if (this.config.rateLimits) {
|
|
99
|
+
// Basic rate limiting implementation
|
|
100
|
+
// In production, this would use Redis or similar for distributed rate limiting
|
|
101
|
+
console.log(`Rate limits configured for ${this.name}:`, this.config.rateLimits);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.BaseProvider = BaseProvider;
|
|
106
|
+
//# sourceMappingURL=base.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.provider.js","sourceRoot":"","sources":["../../src/providers/base.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseProvider } from './base.provider';
|
|
2
|
+
import { TextGenerationRequest, TextGenerationResponse, ImageAnalysisRequest, ImageAnalysisResponse, ProviderInfo, ProviderConfig } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Anthropic Claude provider implementation
|
|
5
|
+
* Supports text generation with Claude models
|
|
6
|
+
*/
|
|
7
|
+
export declare class ClaudeProvider extends BaseProvider {
|
|
8
|
+
constructor(config: ProviderConfig);
|
|
9
|
+
generateText(request: TextGenerationRequest): Promise<TextGenerationResponse>;
|
|
10
|
+
analyzeImage(request: ImageAnalysisRequest): Promise<ImageAnalysisResponse>;
|
|
11
|
+
getInfo(): ProviderInfo;
|
|
12
|
+
protected getApiKeyEnvVar(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Calculate estimated cost based on usage and model
|
|
15
|
+
*/
|
|
16
|
+
private calculateCost;
|
|
17
|
+
/**
|
|
18
|
+
* Map Claude's finish reasons to our standard format
|
|
19
|
+
*/
|
|
20
|
+
private mapFinishReason;
|
|
21
|
+
/**
|
|
22
|
+
* Dynamically import Anthropic SDK
|
|
23
|
+
*/
|
|
24
|
+
private getAnthropicSDK;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=claude.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.provider.d.ts","sourceRoot":"","sources":["../../src/providers/claude.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACZ,cAAc,EACf,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,MAAM,EAAE,cAAc;IAI5B,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiE7E,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwBjF,OAAO,IAAI,YAAY;IAkCvB,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;YACW,eAAe;CAQ9B"}
|