arshenoy commited on
Commit
e5bb0d3
·
verified ·
1 Parent(s): 04c9599

Update services/geminiService.ts

Browse files
Files changed (1) hide show
  1. services/geminiService.ts +7 -7
services/geminiService.ts CHANGED
@@ -29,11 +29,11 @@ const ai = new GoogleGenAI({ apiKey: API_KEY });
29
 
30
  // --- TIERED MODEL STRATEGY ---
31
  // 1. Primary: Gemini 2.5 Flash (Highest Quality/Speed Balance)
32
- // 2. Secondary: Gemini Flash Lite (Quota Rescue)
33
  // 3. Tertiary: Local/HuggingFace Backends (Privacy/Offline/No-Quota Fallback)
34
  const MODEL_PRIMARY = 'gemini-2.5-flash';
35
- const MODEL_SECONDARY = 'gemini-flash-lite-latest';
36
- const MODEL_TTS = 'gemini-2.5-flash-preview-tts';
37
 
38
  // --- UTILITIES ---
39
  const cleanText = (text: string) => {
@@ -139,14 +139,14 @@ async function executePipeline<T>(
139
 
140
  try {
141
  // 1. Primary Model
142
- if (onStatus) onStatus("⚡ Using Gemini Flash...");
143
  return await geminiTask(MODEL_PRIMARY);
144
  } catch (error: any) {
145
  // Check for Quota/Rate Limits or Model Overload
146
  if (error.toString().includes('429') || error.toString().includes('Quota') || error.toString().includes('503')) {
147
  try {
148
  // 2. Secondary Model
149
- if (onStatus) onStatus("⚠️ Quota limit. Switching to Flash-Lite...");
150
  return await geminiTask(MODEL_SECONDARY);
151
  } catch (secondaryError) {
152
  console.warn("Secondary model failed:", secondaryError);
@@ -295,7 +295,7 @@ export const analyzeRisk = async (
295
  });
296
 
297
  const parsed = parseRiskResponse(response.text || "{}", calculatedScore);
298
- return { ...parsed, source: model === MODEL_PRIMARY ? 'Gemini 2.5 Flash' : 'Gemini Flash Lite' };
299
  };
300
 
301
  const fallbackTask = async () => {
@@ -329,7 +329,7 @@ export const generateChatResponse = async (
329
  contents.push({ role: 'user', parts: [{ text: context + "\nUser: " + currentMessage }, ...(image ? [{ inlineData: { mimeType: 'image/jpeg', data: image.split('base64,')[1] } }] : [])] });
330
 
331
  const geminiTask = async (model: string) => {
332
- onSource(model === MODEL_PRIMARY ? 'Gemini 2.5 Flash' : 'Gemini Flash Lite');
333
  const response = await ai.models.generateContent({
334
  model: model,
335
  contents: contents,
 
29
 
30
  // --- TIERED MODEL STRATEGY ---
31
  // 1. Primary: Gemini 2.5 Flash (Highest Quality/Speed Balance)
32
+ // 2. Secondary: Gemini 2.5 Flash Lite (Quota Rescue / Higher Throughput)
33
  // 3. Tertiary: Local/HuggingFace Backends (Privacy/Offline/No-Quota Fallback)
34
  const MODEL_PRIMARY = 'gemini-2.5-flash';
35
+ const MODEL_SECONDARY = 'gemini-2.5-flash-lite';
36
+ const MODEL_TTS = 'gemini-2.5-flash-tts';
37
 
38
  // --- UTILITIES ---
39
  const cleanText = (text: string) => {
 
139
 
140
  try {
141
  // 1. Primary Model
142
+ if (onStatus) onStatus("⚡ Using Gemini 2.5 Flash...");
143
  return await geminiTask(MODEL_PRIMARY);
144
  } catch (error: any) {
145
  // Check for Quota/Rate Limits or Model Overload
146
  if (error.toString().includes('429') || error.toString().includes('Quota') || error.toString().includes('503')) {
147
  try {
148
  // 2. Secondary Model
149
+ if (onStatus) onStatus("⚠️ Quota limit. Switching to 2.5 Flash Lite...");
150
  return await geminiTask(MODEL_SECONDARY);
151
  } catch (secondaryError) {
152
  console.warn("Secondary model failed:", secondaryError);
 
295
  });
296
 
297
  const parsed = parseRiskResponse(response.text || "{}", calculatedScore);
298
+ return { ...parsed, source: model === MODEL_PRIMARY ? 'Gemini 2.5 Flash' : 'Gemini 2.5 Flash Lite' };
299
  };
300
 
301
  const fallbackTask = async () => {
 
329
  contents.push({ role: 'user', parts: [{ text: context + "\nUser: " + currentMessage }, ...(image ? [{ inlineData: { mimeType: 'image/jpeg', data: image.split('base64,')[1] } }] : [])] });
330
 
331
  const geminiTask = async (model: string) => {
332
+ onSource(model === MODEL_PRIMARY ? 'Gemini 2.5 Flash' : 'Gemini 2.5 Flash Lite');
333
  const response = await ai.models.generateContent({
334
  model: model,
335
  contents: contents,