CognxSafeTrack commited on
Commit
6da0dd6
·
1 Parent(s): b073e6a

chore(qa): final QA adjustments for multimodal and search

Browse files
apps/api/src/services/ai/gemini-provider.ts CHANGED
@@ -8,9 +8,11 @@ export class GeminiProvider implements LLMProvider {
8
  private proModel: GenerativeModel;
9
 
10
  constructor(apiKey: string) {
11
- console.log('[GEMINI] Initializing Google AI SDK...');
12
  this.genAI = new GoogleGenerativeAI(apiKey);
 
13
  this.flashModel = this.genAI.getGenerativeModel({ model: 'gemini-2.0-flash' });
 
14
  this.proModel = this.genAI.getGenerativeModel({ model: 'gemini-1.5-pro' });
15
  }
16
 
@@ -19,7 +21,7 @@ export class GeminiProvider implements LLMProvider {
19
  // Use Pro for complex docs (OnePager/PitchDeck) - detected by prompt length or keyword
20
  const isComplex = prompt.includes('PITCH_DECK') || prompt.includes('ONE_PAGER') || prompt.length > 2000;
21
  const model = isComplex ? this.proModel : this.flashModel;
22
- const modelName = isComplex ? 'gemini-1.5-pro' : 'gemini-1.5-flash';
23
 
24
  console.log(`[GEMINI] Generating structured data with ${modelName}... (Vision: ${!!imageUrl})`);
25
 
 
8
  private proModel: GenerativeModel;
9
 
10
  constructor(apiKey: string) {
11
+ console.log('[GEMINI] Initializing SDK...');
12
  this.genAI = new GoogleGenerativeAI(apiKey);
13
+ // Standard model for normal requests
14
  this.flashModel = this.genAI.getGenerativeModel({ model: 'gemini-2.0-flash' });
15
+ // Pro model for long context & complex doc generation
16
  this.proModel = this.genAI.getGenerativeModel({ model: 'gemini-1.5-pro' });
17
  }
18
 
 
21
  // Use Pro for complex docs (OnePager/PitchDeck) - detected by prompt length or keyword
22
  const isComplex = prompt.includes('PITCH_DECK') || prompt.includes('ONE_PAGER') || prompt.length > 2000;
23
  const model = isComplex ? this.proModel : this.flashModel;
24
+ const modelName = isComplex ? 'gemini-1.5-pro' : 'gemini-2.0-flash';
25
 
26
  console.log(`[GEMINI] Generating structured data with ${modelName}... (Vision: ${!!imageUrl})`);
27
 
apps/api/src/services/ai/index.ts CHANGED
@@ -214,6 +214,8 @@ class AIService {
214
  query = `startups concurrents ${cleanActivity} ${region} Sénégal solutions paiement UEMOA`;
215
  } else if (dayNumber === 11) {
216
  query = `benchmarks marges rentabilité ${cleanActivity} Afrique de l'Ouest tech business model`;
 
 
217
  }
218
 
219
  try {
@@ -284,7 +286,7 @@ class AIService {
284
  📸 ANALYSE VISUELLE (MULTIMODAL) :
285
  - L'utilisateur a envoyé une image comme preuve ou illustration.
286
  - TU DOIS analyser visuellement cette image et intégrer ton constat dans le feedback.
287
- - Si c'est un trophée (ex: Blue Ocean Awards), un diplôme ou un logo, souligne sa valeur pour la crédibilité et la 'Slide Confiance'.
288
  - Si l'image contient des chiffres ou des contrats, extrais-les pour confirmer les données financières.` : ''}
289
 
290
  ⚠️ INTERDICTION ABSOLUE (Anti-Remediation Loop) :
 
214
  query = `startups concurrents ${cleanActivity} ${region} Sénégal solutions paiement UEMOA`;
215
  } else if (dayNumber === 11) {
216
  query = `benchmarks marges rentabilité ${cleanActivity} Afrique de l'Ouest tech business model`;
217
+ } else if (dayNumber === 12) {
218
+ query = `benchmarks revenus levée de fonds analyse concurrents locaux ${cleanActivity} Afrique de l'Ouest`;
219
  }
220
 
221
  try {
 
286
  📸 ANALYSE VISUELLE (MULTIMODAL) :
287
  - L'utilisateur a envoyé une image comme preuve ou illustration.
288
  - TU DOIS analyser visuellement cette image et intégrer ton constat dans le feedback.
289
+ - Analyse l'image jointe (photo, diplôme, capture d'écran) et intègre sa description comme une preuve de crédibilité dans le feedback et les métadonnées de la Slide Confiance.
290
  - Si l'image contient des chiffres ou des contrats, extrais-les pour confirmer les données financières.` : ''}
291
 
292
  ⚠️ INTERDICTION ABSOLUE (Anti-Remediation Loop) :