hazo_llm_api 1.0.4 → 1.0.5
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/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +7 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/layout.d.ts +21 -0
- package/dist/components/layout/layout.d.ts.map +1 -0
- package/dist/components/layout/layout.js +18 -0
- package/dist/components/layout/layout.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config/config_parser.d.ts +131 -0
- package/dist/lib/config/config_parser.d.ts.map +1 -0
- package/dist/lib/config/config_parser.js +297 -0
- package/dist/lib/config/config_parser.js.map +1 -0
- package/dist/lib/config/index.d.ts +8 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +22 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/provider_loader.d.ts +113 -0
- package/dist/lib/config/provider_loader.d.ts.map +1 -0
- package/dist/lib/config/provider_loader.js +169 -0
- package/dist/lib/config/provider_loader.js.map +1 -0
- package/dist/lib/database/index.d.ts +8 -0
- package/dist/lib/database/index.d.ts.map +1 -0
- package/dist/lib/database/index.js +10 -0
- package/dist/lib/database/index.js.map +1 -0
- package/dist/lib/database/init_database.d.ts +118 -0
- package/dist/lib/database/init_database.d.ts.map +1 -0
- package/dist/lib/database/init_database.js +591 -0
- package/dist/lib/database/init_database.js.map +1 -0
- package/dist/lib/database/utils.d.ts +53 -0
- package/dist/lib/database/utils.d.ts.map +1 -0
- package/dist/lib/database/utils.js +87 -0
- package/dist/lib/database/utils.js.map +1 -0
- package/dist/lib/index.d.ts +14 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +17 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/llm_api/chain_helpers.d.ts +117 -0
- package/dist/lib/llm_api/chain_helpers.d.ts.map +1 -0
- package/dist/lib/llm_api/chain_helpers.js +445 -0
- package/dist/lib/llm_api/chain_helpers.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image.js +94 -0
- package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.js +222 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_text.js +78 -0
- package/dist/lib/llm_api/hazo_llm_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js +368 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image.js +69 -0
- package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.js +154 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_text.js +91 -0
- package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -0
- package/dist/lib/llm_api/index.d.ts +223 -0
- package/dist/lib/llm_api/index.d.ts.map +1 -0
- package/dist/lib/llm_api/index.js +1220 -0
- package/dist/lib/llm_api/index.js.map +1 -0
- package/dist/lib/llm_api/provider_helper.d.ts +163 -0
- package/dist/lib/llm_api/provider_helper.d.ts.map +1 -0
- package/dist/lib/llm_api/provider_helper.js +346 -0
- package/dist/lib/llm_api/provider_helper.js.map +1 -0
- package/dist/lib/llm_api/types.d.ts +667 -0
- package/dist/lib/llm_api/types.d.ts.map +1 -0
- package/dist/lib/llm_api/types.js +49 -0
- package/dist/lib/llm_api/types.js.map +1 -0
- package/dist/lib/prompts/get_prompt.d.ts +76 -0
- package/dist/lib/prompts/get_prompt.d.ts.map +1 -0
- package/dist/lib/prompts/get_prompt.js +342 -0
- package/dist/lib/prompts/get_prompt.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +9 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/index.js +9 -0
- package/dist/lib/prompts/index.js.map +1 -0
- package/dist/lib/prompts/prompt_cache.d.ts +151 -0
- package/dist/lib/prompts/prompt_cache.d.ts.map +1 -0
- package/dist/lib/prompts/prompt_cache.js +276 -0
- package/dist/lib/prompts/prompt_cache.js.map +1 -0
- package/dist/lib/prompts/substitute_variables.d.ts +38 -0
- package/dist/lib/prompts/substitute_variables.d.ts.map +1 -0
- package/dist/lib/prompts/substitute_variables.js +171 -0
- package/dist/lib/prompts/substitute_variables.js.map +1 -0
- package/dist/lib/providers/gemini/gemini_client.d.ts +25 -0
- package/dist/lib/providers/gemini/gemini_client.d.ts.map +1 -0
- package/dist/lib/providers/gemini/gemini_client.js +235 -0
- package/dist/lib/providers/gemini/gemini_client.js.map +1 -0
- package/dist/lib/providers/gemini/gemini_provider.d.ts +111 -0
- package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -0
- package/dist/lib/providers/gemini/gemini_provider.js +431 -0
- package/dist/lib/providers/gemini/gemini_provider.js.map +1 -0
- package/dist/lib/providers/gemini/index.d.ts +8 -0
- package/dist/lib/providers/gemini/index.d.ts.map +1 -0
- package/dist/lib/providers/gemini/index.js +8 -0
- package/dist/lib/providers/gemini/index.js.map +1 -0
- package/dist/lib/providers/index.d.ts +8 -0
- package/dist/lib/providers/index.d.ts.map +1 -0
- package/dist/lib/providers/index.js +8 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/qwen/index.d.ts +8 -0
- package/dist/lib/providers/qwen/index.d.ts.map +1 -0
- package/dist/lib/providers/qwen/index.js +8 -0
- package/dist/lib/providers/qwen/index.js.map +1 -0
- package/dist/lib/providers/qwen/qwen_client.d.ts +154 -0
- package/dist/lib/providers/qwen/qwen_client.d.ts.map +1 -0
- package/dist/lib/providers/qwen/qwen_client.js +1002 -0
- package/dist/lib/providers/qwen/qwen_client.js.map +1 -0
- package/dist/lib/providers/qwen/qwen_provider.d.ts +139 -0
- package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -0
- package/dist/lib/providers/qwen/qwen_provider.js +304 -0
- package/dist/lib/providers/qwen/qwen_provider.js.map +1 -0
- package/dist/lib/providers/registry.d.ts +66 -0
- package/dist/lib/providers/registry.d.ts.map +1 -0
- package/dist/lib/providers/registry.js +158 -0
- package/dist/lib/providers/registry.js.map +1 -0
- package/dist/lib/providers/types.d.ts +145 -0
- package/dist/lib/providers/types.d.ts.map +1 -0
- package/dist/lib/providers/types.js +37 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +50 -0
- package/dist/server.js.map +1 -0
- package/package.json +12 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini API Client Module
|
|
3
|
+
*
|
|
4
|
+
* Handles communication with the Google Gemini API.
|
|
5
|
+
* Formats requests according to Gemini API specification and parses responses.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Gemini API Client
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Call the Gemini API with the given prompt and optional image data
|
|
12
|
+
* @param api_url - The Gemini API endpoint URL
|
|
13
|
+
* @param api_key - The API key for authentication
|
|
14
|
+
* @param prompt_text - The text prompt to send
|
|
15
|
+
* @param b64_data - Optional array of base64 encoded images
|
|
16
|
+
* @param logger - Logger instance
|
|
17
|
+
* @param generation_config - Optional generation configuration parameters
|
|
18
|
+
* @returns LLM response with generated text or error
|
|
19
|
+
*/
|
|
20
|
+
export async function call_gemini_api(api_url, api_key, prompt_text, b64_data, logger, generation_config) {
|
|
21
|
+
const file_name = 'gemini_client.ts';
|
|
22
|
+
try {
|
|
23
|
+
// Build the request body with optional generation config
|
|
24
|
+
const request_body = build_gemini_request(prompt_text, b64_data, generation_config);
|
|
25
|
+
// Convert generation config to API format for logging
|
|
26
|
+
const api_generation_config = build_api_generation_config(generation_config);
|
|
27
|
+
// Log the Gemini API call with generation config
|
|
28
|
+
logger.debug('Calling Gemini API', {
|
|
29
|
+
file: file_name,
|
|
30
|
+
line: 42,
|
|
31
|
+
data: {
|
|
32
|
+
api_url,
|
|
33
|
+
prompt_text,
|
|
34
|
+
has_image_data: b64_data && b64_data.length > 0,
|
|
35
|
+
image_count: b64_data?.length || 0,
|
|
36
|
+
generation_config: api_generation_config || 'none (using defaults)',
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
// Make the API request
|
|
40
|
+
const response = await fetch(api_url, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
headers: {
|
|
43
|
+
'Content-Type': 'application/json',
|
|
44
|
+
'x-goog-api-key': api_key,
|
|
45
|
+
},
|
|
46
|
+
body: JSON.stringify(request_body),
|
|
47
|
+
});
|
|
48
|
+
// Parse the response
|
|
49
|
+
const response_data = await response.json();
|
|
50
|
+
// Check for errors
|
|
51
|
+
if (!response.ok || response_data.error) {
|
|
52
|
+
const error_message = response_data.error?.message || `HTTP ${response.status}`;
|
|
53
|
+
logger.error('Gemini API returned error', {
|
|
54
|
+
file: file_name,
|
|
55
|
+
line: 59,
|
|
56
|
+
data: {
|
|
57
|
+
status: response.status,
|
|
58
|
+
error: response_data.error,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
success: false,
|
|
63
|
+
error: error_message,
|
|
64
|
+
raw_response: response_data,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Extract the generated text from response
|
|
68
|
+
const generated_text = extract_text_from_response(response_data, logger);
|
|
69
|
+
if (generated_text) {
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
text: generated_text,
|
|
73
|
+
raw_response: response_data,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
logger.warn('No text content in Gemini response', {
|
|
78
|
+
file: file_name,
|
|
79
|
+
line: 84,
|
|
80
|
+
data: { raw_response: response_data },
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
error: 'No text content in response',
|
|
85
|
+
raw_response: response_data,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const error_message = error instanceof Error ? error.message : String(error);
|
|
91
|
+
logger.error('Failed to call Gemini API', {
|
|
92
|
+
file: file_name,
|
|
93
|
+
line: 97,
|
|
94
|
+
data: { error: error_message },
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
success: false,
|
|
98
|
+
error: error_message,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// =============================================================================
|
|
103
|
+
// Request Building Functions
|
|
104
|
+
// =============================================================================
|
|
105
|
+
/**
|
|
106
|
+
* Convert snake_case GeminiGenerationConfig to camelCase API format
|
|
107
|
+
* Only includes parameters that are explicitly set (not undefined)
|
|
108
|
+
* @param config - Generation config in snake_case format
|
|
109
|
+
* @returns API-formatted generation config or undefined if no params set
|
|
110
|
+
*/
|
|
111
|
+
function build_api_generation_config(config) {
|
|
112
|
+
if (!config) {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
const api_config = {};
|
|
116
|
+
let has_params = false;
|
|
117
|
+
if (config.temperature !== undefined) {
|
|
118
|
+
api_config.temperature = config.temperature;
|
|
119
|
+
has_params = true;
|
|
120
|
+
}
|
|
121
|
+
if (config.max_output_tokens !== undefined) {
|
|
122
|
+
api_config.maxOutputTokens = config.max_output_tokens;
|
|
123
|
+
has_params = true;
|
|
124
|
+
}
|
|
125
|
+
if (config.top_p !== undefined) {
|
|
126
|
+
api_config.topP = config.top_p;
|
|
127
|
+
has_params = true;
|
|
128
|
+
}
|
|
129
|
+
if (config.top_k !== undefined) {
|
|
130
|
+
api_config.topK = config.top_k;
|
|
131
|
+
has_params = true;
|
|
132
|
+
}
|
|
133
|
+
if (config.candidate_count !== undefined) {
|
|
134
|
+
api_config.candidateCount = config.candidate_count;
|
|
135
|
+
has_params = true;
|
|
136
|
+
}
|
|
137
|
+
if (config.stop_sequences !== undefined && config.stop_sequences.length > 0) {
|
|
138
|
+
api_config.stopSequences = config.stop_sequences;
|
|
139
|
+
has_params = true;
|
|
140
|
+
}
|
|
141
|
+
if (config.response_mime_type !== undefined) {
|
|
142
|
+
api_config.responseMimeType = config.response_mime_type;
|
|
143
|
+
has_params = true;
|
|
144
|
+
}
|
|
145
|
+
return has_params ? api_config : undefined;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Build the Gemini API request body
|
|
149
|
+
* @param prompt_text - The text prompt
|
|
150
|
+
* @param b64_data - Optional base64 encoded images
|
|
151
|
+
* @param generation_config - Optional generation configuration parameters
|
|
152
|
+
* @returns Formatted request body for Gemini API
|
|
153
|
+
*/
|
|
154
|
+
function build_gemini_request(prompt_text, b64_data, generation_config) {
|
|
155
|
+
const parts = [];
|
|
156
|
+
// Add image parts first (if any)
|
|
157
|
+
if (b64_data && b64_data.length > 0) {
|
|
158
|
+
for (const img of b64_data) {
|
|
159
|
+
parts.push({
|
|
160
|
+
inline_data: {
|
|
161
|
+
mime_type: img.mime_type,
|
|
162
|
+
data: img.data,
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Add the text prompt
|
|
168
|
+
parts.push({
|
|
169
|
+
text: prompt_text,
|
|
170
|
+
});
|
|
171
|
+
const request_body = {
|
|
172
|
+
contents: [
|
|
173
|
+
{
|
|
174
|
+
parts,
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
// Add generation config if any parameters are set
|
|
179
|
+
const api_generation_config = build_api_generation_config(generation_config);
|
|
180
|
+
if (api_generation_config) {
|
|
181
|
+
request_body.generationConfig = api_generation_config;
|
|
182
|
+
}
|
|
183
|
+
return request_body;
|
|
184
|
+
}
|
|
185
|
+
// =============================================================================
|
|
186
|
+
// Response Parsing Functions
|
|
187
|
+
// =============================================================================
|
|
188
|
+
/**
|
|
189
|
+
* Extract text content from Gemini API response
|
|
190
|
+
* @param response - The Gemini API response
|
|
191
|
+
* @param logger - Logger instance
|
|
192
|
+
* @returns The generated text or null if not found
|
|
193
|
+
*/
|
|
194
|
+
function extract_text_from_response(response, logger) {
|
|
195
|
+
const file_name = 'gemini_client.ts';
|
|
196
|
+
if (!response.candidates || response.candidates.length === 0) {
|
|
197
|
+
logger.debug('No candidates in response', {
|
|
198
|
+
file: file_name,
|
|
199
|
+
line: 195,
|
|
200
|
+
});
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
const first_candidate = response.candidates[0];
|
|
204
|
+
if (!first_candidate.content || !first_candidate.content.parts) {
|
|
205
|
+
logger.debug('No content parts in first candidate', {
|
|
206
|
+
file: file_name,
|
|
207
|
+
line: 204,
|
|
208
|
+
});
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
// Concatenate all text parts
|
|
212
|
+
const text_parts = [];
|
|
213
|
+
for (const part of first_candidate.content.parts) {
|
|
214
|
+
if ('text' in part && part.text) {
|
|
215
|
+
text_parts.push(part.text);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (text_parts.length === 0) {
|
|
219
|
+
logger.debug('No text parts found in candidate', {
|
|
220
|
+
file: file_name,
|
|
221
|
+
line: 219,
|
|
222
|
+
});
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
return text_parts.join('');
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get the default Gemini API URL
|
|
229
|
+
* @param model - The model name (default: gemini-2.5-flash)
|
|
230
|
+
* @returns The API URL
|
|
231
|
+
*/
|
|
232
|
+
export function get_gemini_api_url(model = 'gemini-2.5-flash') {
|
|
233
|
+
return `https://generativelanguage.googleapis.com/v1/models/${model}:generateContent`;
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=gemini_client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini_client.js","sourceRoot":"","sources":["../../../../src/lib/providers/gemini/gemini_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements the LLMProvider interface for Google's Gemini API.
|
|
5
|
+
* Handles all Gemini-specific logic including API calls, configuration, and capabilities.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMProvider, LLMCapabilities, ServiceType } from '../types.js';
|
|
8
|
+
import type { TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, LLMResponse, Logger, GeminiGenerationConfig } from '../../llm_api/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for Gemini provider
|
|
11
|
+
*/
|
|
12
|
+
export interface GeminiProviderConfig {
|
|
13
|
+
/** API key from .env.local (GEMINI_API_KEY) */
|
|
14
|
+
api_key: string;
|
|
15
|
+
/** Base API URL for text generation */
|
|
16
|
+
api_url?: string;
|
|
17
|
+
/** API URL for image generation (optional) */
|
|
18
|
+
api_url_image?: string;
|
|
19
|
+
/** Model for text_text service (e.g., gemini-2.5-flash) */
|
|
20
|
+
model_text_text?: string;
|
|
21
|
+
/** Model for image_text service */
|
|
22
|
+
model_image_text?: string;
|
|
23
|
+
/** Model for text_image service */
|
|
24
|
+
model_text_image?: string;
|
|
25
|
+
/** Model for image_image service */
|
|
26
|
+
model_image_image?: string;
|
|
27
|
+
/** Generation config for text API calls */
|
|
28
|
+
text_config?: GeminiGenerationConfig;
|
|
29
|
+
/** Generation config for image API calls */
|
|
30
|
+
image_config?: GeminiGenerationConfig;
|
|
31
|
+
/** Capabilities this provider supports */
|
|
32
|
+
capabilities?: ServiceType[];
|
|
33
|
+
/** Logger instance */
|
|
34
|
+
logger: Logger;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gemini LLM Provider
|
|
38
|
+
* Implements the LLMProvider interface for Google Gemini API
|
|
39
|
+
*/
|
|
40
|
+
export declare class GeminiProvider implements LLMProvider {
|
|
41
|
+
private readonly name;
|
|
42
|
+
private readonly api_key;
|
|
43
|
+
private readonly api_url;
|
|
44
|
+
private readonly api_url_image;
|
|
45
|
+
private readonly model_text_text;
|
|
46
|
+
private readonly model_image_text;
|
|
47
|
+
private readonly model_text_image;
|
|
48
|
+
private readonly model_image_image;
|
|
49
|
+
private readonly text_config;
|
|
50
|
+
private readonly image_config;
|
|
51
|
+
private readonly capabilities;
|
|
52
|
+
private readonly logger;
|
|
53
|
+
/**
|
|
54
|
+
* Create a new Gemini provider instance
|
|
55
|
+
* @param config - Gemini provider configuration
|
|
56
|
+
*/
|
|
57
|
+
constructor(config: GeminiProviderConfig);
|
|
58
|
+
/**
|
|
59
|
+
* Get the provider name
|
|
60
|
+
* @returns Provider name
|
|
61
|
+
*/
|
|
62
|
+
get_name(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Get the capabilities this provider supports
|
|
65
|
+
* @returns Set of supported service types
|
|
66
|
+
*/
|
|
67
|
+
get_capabilities(): LLMCapabilities;
|
|
68
|
+
/**
|
|
69
|
+
* Get the model name configured for a specific service type
|
|
70
|
+
* @param service_type - The service type to get the model for
|
|
71
|
+
* @returns Model name or undefined if not configured
|
|
72
|
+
*/
|
|
73
|
+
get_model_for_service(service_type: ServiceType): string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Text input → Text output
|
|
76
|
+
* Generate text from a text prompt
|
|
77
|
+
*
|
|
78
|
+
* @param params - Text input parameters
|
|
79
|
+
* @param logger - Logger instance
|
|
80
|
+
* @returns LLM response with generated text
|
|
81
|
+
*/
|
|
82
|
+
text_text(params: TextTextParams, logger: Logger): Promise<LLMResponse>;
|
|
83
|
+
/**
|
|
84
|
+
* Image input → Text output
|
|
85
|
+
* Analyze an image and generate text description
|
|
86
|
+
*
|
|
87
|
+
* @param params - Image input parameters
|
|
88
|
+
* @param logger - Logger instance
|
|
89
|
+
* @returns LLM response with generated text
|
|
90
|
+
*/
|
|
91
|
+
image_text(params: ImageTextParams, logger: Logger): Promise<LLMResponse>;
|
|
92
|
+
/**
|
|
93
|
+
* Text input → Image output
|
|
94
|
+
* Generate an image from a text prompt
|
|
95
|
+
*
|
|
96
|
+
* @param params - Text input parameters for image generation
|
|
97
|
+
* @param logger - Logger instance
|
|
98
|
+
* @returns LLM response with generated image
|
|
99
|
+
*/
|
|
100
|
+
text_image(params: TextImageParams, logger: Logger): Promise<LLMResponse>;
|
|
101
|
+
/**
|
|
102
|
+
* Image input → Image output
|
|
103
|
+
* Transform/edit an image based on instructions
|
|
104
|
+
*
|
|
105
|
+
* @param params - Image input parameters with transformation instructions
|
|
106
|
+
* @param logger - Logger instance
|
|
107
|
+
* @returns LLM response with transformed image
|
|
108
|
+
*/
|
|
109
|
+
image_image(params: ImageImageParams, logger: Logger): Promise<LLMResponse>;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=gemini_provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini_provider.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/gemini/gemini_provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,MAAM,EAEN,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAShC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC,4CAA4C;IAC5C,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC,0CAA0C;IAC1C,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAE7B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;GAGG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;OAGG;gBACS,MAAM,EAAE,oBAAoB;IA0BxC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,gBAAgB,IAAI,eAAe;IAInC;;;;OAIG;IACH,qBAAqB,CAAC,YAAY,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAepE;;;;;;;OAOG;IACG,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+B7E;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwC/E;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqI/E;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAyKlF"}
|