martialroberge commited on
Commit
cbae9ff
·
1 Parent(s): 3cb2c3b

Amélioration du prompt pour la détection de langue et de l'interface utilisateur

Browse files
Files changed (1) hide show
  1. app.py +63 -21
app.py CHANGED
@@ -239,14 +239,20 @@ def process_images(api_key, hf_token, images, dataset_name, progress=gr.Progress
239
  nb_questions = random.randint(1, 5)
240
  print(f"❓ Génération de {nb_questions} questions...")
241
 
242
- prompt = f"""Tu es un expert en analyse financière et en création de datasets de haute qualité. Examine attentivement ce document financier et génère exactement {nb_questions} questions/réponses de qualité professionnelle.
 
 
 
 
 
 
243
 
244
  Format de réponse requis (JSON) :
245
  [
246
  {{
247
- "query": "Question financière précise et détaillée",
248
- "answer": "Réponse complète et exacte basée sur le document",
249
- "langue": "fr",
250
  "is_negative": false
251
  }}
252
  ]
@@ -275,10 +281,10 @@ Instructions détaillées pour la création du dataset :
275
  2. QUESTIONS NÉGATIVES (TRÈS IMPORTANT) :
276
  - Tu DOIS générer au moins 1 question sur {nb_questions} où l'information n'est PAS dans le document
277
  - Pour ces questions, tu DOIS mettre "is_negative": true
278
- - La réponse DOIT commencer par "Cette information ne figure pas dans le document"
279
- - Exemples de questions négatives :
280
- * "Quel est le montant exact des provisions pour risques ?" -> "Cette information ne figure pas dans le document"
281
- * "Quelle est la rémunération du directeur financier ?" -> "Cette information ne figure pas dans le document"
282
  - Les questions négatives doivent être plausibles et pertinentes pour un document financier
283
 
284
  3. QUALITÉ DES QUESTIONS :
@@ -295,16 +301,17 @@ Instructions détaillées pour la création du dataset :
295
  * Clarté : formulation professionnelle et précise
296
  * Contexte : inclure les éléments de contexte pertinents
297
  - Pour les questions négatives (is_negative: true) :
298
- * TOUJOURS commencer par "Cette information ne figure pas dans le document"
299
  * Expliquer brièvement pourquoi cette information serait pertinente
300
 
301
  5. RÈGLES STRICTES :
302
- - Questions et réponses UNIQUEMENT en français
303
  - Pas de questions vagues ou générales
304
  - Pas de répétition de questions similaires
305
  - Pas de devinettes ou d'inférences non documentées
306
  - Respect strict du format JSON demandé
307
  - Au moins 1 question négative (is_negative: true) par image
 
308
 
309
  La réponse doit être uniquement le JSON, sans texte supplémentaire."""
310
 
@@ -428,42 +435,77 @@ limitations under the License.
428
  with gr.Blocks() as demo:
429
  gr.Markdown("""
430
  # 🎯 Mini-VLM Dataset Builder
431
- Créez votre propre dataset de questions/réponses pour l'entraînement de modèles Vision-Langage
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
 
433
- ### ⚠️ Important
434
- 1. Vous devez avoir une [clé API Gemini](https://makersuite.google.com/app/apikey)
435
- 2. Vous devez avoir un [token Hugging Face](https://huggingface.co/settings/tokens) avec droits d'écriture
436
  """)
437
 
438
  with gr.Row():
439
  with gr.Column(scale=1):
440
  api_key = gr.Textbox(
441
- label="Clé API Google Gemini",
442
  type="password",
443
  placeholder="Entrez votre clé API Gemini",
444
  value=""
445
  )
446
  hf_token = gr.Textbox(
447
- label="Token Hugging Face",
448
  type="password",
449
  placeholder="Entrez votre token Hugging Face",
450
  value=""
451
  )
452
  dataset_name = gr.Textbox(
453
- label="Nom du dataset",
454
- placeholder="votre-username/nom-du-dataset"
 
455
  )
456
 
457
  with gr.Column(scale=1):
458
  files = gr.File(
459
- label="Documents (PDF, PNG, JPG, JPEG)",
460
  file_count="multiple",
461
  height=200
462
  )
 
 
 
 
 
 
 
 
 
463
 
464
- submit_btn = gr.Button("Créer le dataset", variant="primary")
465
  output = gr.Textbox(
466
- label="Résultat",
467
  lines=3,
468
  interactive=False
469
  )
 
239
  nb_questions = random.randint(1, 5)
240
  print(f"❓ Génération de {nb_questions} questions...")
241
 
242
+ prompt = f"""Tu es un expert en analyse financière, en création de datasets de haute qualité et en analyse multilingue. Examine attentivement ce document financier, IDENTIFIE D'ABORD SA LANGUE, puis génère exactement {nb_questions} questions/réponses de qualité professionnelle dans la même langue que le document.
243
+
244
+ ÉTAPE 1 - IDENTIFICATION DE LA LANGUE :
245
+ - Analyse attentivement le texte dans l'image
246
+ - Identifie la langue principale (fr pour français, en pour anglais, de pour allemand, etc.)
247
+ - Utilise cette langue pour toutes les questions et réponses
248
+ - Si plusieurs langues sont présentes, choisis la langue dominante
249
 
250
  Format de réponse requis (JSON) :
251
  [
252
  {{
253
+ "query": "Question financière précise et détaillée dans la langue du document",
254
+ "answer": "Réponse complète et exacte dans la langue du document",
255
+ "langue": "code ISO de la langue (fr, en, de, etc.)",
256
  "is_negative": false
257
  }}
258
  ]
 
281
  2. QUESTIONS NÉGATIVES (TRÈS IMPORTANT) :
282
  - Tu DOIS générer au moins 1 question sur {nb_questions} où l'information n'est PAS dans le document
283
  - Pour ces questions, tu DOIS mettre "is_negative": true
284
+ - La réponse DOIT commencer par une phrase indiquant l'absence d'information dans la langue du document :
285
+ * FR: "Cette information ne figure pas dans le document"
286
+ * EN: "This information is not present in the document"
287
+ * DE: "Diese Information ist im Dokument nicht enthalten"
288
  - Les questions négatives doivent être plausibles et pertinentes pour un document financier
289
 
290
  3. QUALITÉ DES QUESTIONS :
 
301
  * Clarté : formulation professionnelle et précise
302
  * Contexte : inclure les éléments de contexte pertinents
303
  - Pour les questions négatives (is_negative: true) :
304
+ * TOUJOURS commencer par la phrase d'absence d'information dans la bonne langue
305
  * Expliquer brièvement pourquoi cette information serait pertinente
306
 
307
  5. RÈGLES STRICTES :
308
+ - Questions et réponses UNIQUEMENT dans la langue détectée du document
309
  - Pas de questions vagues ou générales
310
  - Pas de répétition de questions similaires
311
  - Pas de devinettes ou d'inférences non documentées
312
  - Respect strict du format JSON demandé
313
  - Au moins 1 question négative (is_negative: true) par image
314
+ - Code langue ISO correct (fr, en, de, etc.)
315
 
316
  La réponse doit être uniquement le JSON, sans texte supplémentaire."""
317
 
 
435
  with gr.Blocks() as demo:
436
  gr.Markdown("""
437
  # 🎯 Mini-VLM Dataset Builder
438
+ ### Créez des datasets de haute qualité pour l'entraînement de modèles Vision-Langage (VLM)
439
+
440
+ ## 🎓 Pourquoi utiliser cette application ?
441
+
442
+ Cette application permet de créer des datasets de questions/réponses de haute qualité en utilisant l'API Gemini de Google.
443
+ L'objectif est de permettre l'entraînement de petits modèles VLM (Vision-Language Models) plus légers et plus rapides,
444
+ tout en conservant des performances proches des grands modèles comme GPT-4V ou Gemini.
445
+
446
+ ### 🔄 Pipeline de fonctionnement :
447
+ 1. **Upload des documents** : PDF ou images (PNG, JPG, JPEG)
448
+ 2. **Prétraitement** :
449
+ - Conversion des PDFs en images
450
+ - Normalisation des formats
451
+ - Mélange aléatoire pour une meilleure distribution
452
+ 3. **Analyse par Gemini** :
453
+ - Détection automatique de la langue (FR, EN, DE, etc.)
454
+ - Génération de 1 à 5 questions/réponses par image
455
+ - Inclusion de questions négatives pour l'entraînement
456
+ 4. **Structuration du dataset** :
457
+ - Split automatique (80% train, 10% validation, 10% test)
458
+ - Format standardisé avec IDs uniques
459
+ - Métadonnées complètes (langue, type de question, etc.)
460
+ 5. **Publication sur Hugging Face** :
461
+ - Création automatique du repository
462
+ - Upload des images et métadonnées
463
+ - Structure optimisée pour l'entraînement
464
 
465
+ ### ⚠️ Prérequis
466
+ 1. Une [clé API Gemini](https://makersuite.google.com/app/apikey) pour l'analyse des documents
467
+ 2. Un [token Hugging Face](https://huggingface.co/settings/tokens) avec droits d'écriture pour la publication
468
  """)
469
 
470
  with gr.Row():
471
  with gr.Column(scale=1):
472
  api_key = gr.Textbox(
473
+ label="🔑 Clé API Google Gemini",
474
  type="password",
475
  placeholder="Entrez votre clé API Gemini",
476
  value=""
477
  )
478
  hf_token = gr.Textbox(
479
+ label="🔑 Token Hugging Face",
480
  type="password",
481
  placeholder="Entrez votre token Hugging Face",
482
  value=""
483
  )
484
  dataset_name = gr.Textbox(
485
+ label="📁 Nom du dataset",
486
+ placeholder="votre-username/nom-du-dataset",
487
+ info="Format requis : username/nom-du-dataset (exemple: marsouuu/finance-dataset-fr)"
488
  )
489
 
490
  with gr.Column(scale=1):
491
  files = gr.File(
492
+ label="📄 Documents (PDF, PNG, JPG, JPEG)",
493
  file_count="multiple",
494
  height=200
495
  )
496
+ gr.Markdown("""
497
+ ### 📊 Statistiques générées :
498
+ - 80% des images pour l'entraînement
499
+ - 10% pour la validation
500
+ - 10% pour les tests
501
+ - 1 à 5 questions par image
502
+ - Au moins 1 question négative par image
503
+ - Détection automatique de la langue
504
+ """)
505
 
506
+ submit_btn = gr.Button("🚀 Créer le dataset", variant="primary", scale=2)
507
  output = gr.Textbox(
508
+ label="📝 Résultat",
509
  lines=3,
510
  interactive=False
511
  )