Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quand Symfony, ApiPlatform, OpenAI et LangChain...

Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…

Conférence AFUP Montpellier – 10 juin

Retour d'expérience sur le déploiement d'une solution d'IA en production, combinant Symfony, API Platform, LangChain et OpenAI, pour automatiser l'analyse des Fiches de Données de Sécurité (FDS) — l'équivalent, pour les produits chimiques, des notices pour les médicaments : de véritables cartes d'identité détaillant risques, substances, pictogrammes et précautions d'usage.

L'objectif : remplacer une saisie manuelle longue (20 min/document) par une extraction automatisée, fiable et structurée.

Un enjeu majeur pour les professionnels du BTP, exposés chaque jour à des produits potentiellement dangereux et soumis à des obligations strictes en matière de sécurité.
En résumé : une sorte de Yuka des produits chimiques, au service de la prévention sur les chantiers.

Résultat : un traitement 10 fois plus rapide, une nette réduction des erreurs, et une architecture IA robuste, évolutive et prête pour l’échelle industrielle.

Avatar for Ahmed EBEN HASSINE

Ahmed EBEN HASSINE

June 30, 2025
Tweet

Other Decks in Programming

Transcript

  1. Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos

    PDF : De la théorie à la production… Ahmed EBEN HASSINE Ingénieur développeur backend, certifié Symfony
  2. 4 pôles d'expertise Développement, Hébergement-Infogérance, Conseil stratégique et Data. Qui

    sommes-nous ? Agence Open-Source certifiée Symfony & Ibexa Notre ADN : l’expertise technique 40 collaborateurs Implantés à Strasbourg et Montpellier.
  3. Au programme Contexte & Problématique • Pourquoi analyser des PDF

    avec l’IA ? • Les limites des approches traditionnelles Notre architecture technique • API Platform + Python en orchestration • LangChain 🦜 & OpenAI pour le traitement IA Les Défis Clés et Nos Solutions • Hallucinations, limitation de token, rate limits, • RAG & Fine-Tuning Bilan • Ce qui a fonctionné (ou pas !) • Les leçons pour vos futurs projets IA SOMMAIRE
  4. Le socle technique GPT 3.5-Turbo (Generative Pretrained Transformer) Interface utilisateur

    fluide : SPA Extraction intelligente des données des Fiches de sécurité (FDS) Moteur de la plateforme (Api Platform)
  5. Cas d’usage initial : Extraire les données d’un PDF avec

    un format non-fixe Ce qu’on a testé Extraction par expressions régulières • Complexité : 3/5 • Coûts : $ • Qualité résultat : 40% Sélection manuelle des zones avec Tabula • Complexité : 4/5 • Coûts : $$ • Qualité résultat : 10% Extraction via LLM • Complexité : 2/5 • Coûts : $ • Qualité résultat : 90% ANALYSE DES SOLUTIONS POSSIBLES POUR EFFECTUER L’EXTRACTION
  6. Maîtriser les Rôles dans vos prompts Les 3 rôles les

    plus utilisés 1. system (Le Chef d'Orchestre) → Définit l’expertise de l’IA (ex: "Expert en Fiches de Données de Sécurité") 2. user (La Donnée Brute) → Contient l’input à analyser (ex: texte PDF d’une FDS) + instructions 3. assistant (L’Exemple Pratique) → Exemples de réponses pour finetuner (si besoin)
  7. • La qualité d’un prompt ne se juge pas à

    l’intuition : il faut le tester, le mesurer, l’améliorer. Une étape essentielle pour garantir des résultats cohérents et solides. • Pouvoir soumettre un jeu de tests, comparer automatiquement les résultats entre modèles, suivre les évolutions, et automatiser les vérifications avant mise en production. Évaluation de la performance d’un prompt https://platform.openai.com/docs/guides/evals
  8. 1. Les challenges relevés Qualité des données sources • Extraction

    du text (pdftotext) • PDF scanné (fitz), OCR (pytesseract) Token limitation • La taille de l’input et l’output ont une limite Données manquantes et hallucinations (5 à 10% des extractions sont incomplètes ou erronées) • OpenAI est un assistant - Nécessite une vérification pour les éléments critiques Rate limite • Plusieurs jours d’exécution pour ~ 30k fiches produits • OpenAI Batch API (https:/ /platform.openai.com/docs/guides/batch) • https://api.openai.com/v1/chat/completions • https://api.openai.com/v1/batches
  9. • Un token, c’est une unité de mesure de longueur

    de base de texte. Les modèles ont des tailles de contexte prompt fixes. • Chaque token est converti en un vecteur matriciel dans un espace multidimensionnel. Capter les relations sémantiques entre les mots. • Consommation CPU et facturation augmente de façon non-linéaire avec le nombre de tokens. 2. Token limitation / coût https://platform.openai.com/docs/pricing
  10. Hallucination en IA : c’est quoi ? C’est un phénomène

    où un modèle d’intelligence artificielle génère des informations erronées, inventées ou non fondées, comme s’il « imaginait » des faits sans aucune base réelle. 3. Hallucination Pourquoi ça arrive ? • Parfois, pas assez de contexte, elles n’ont pas assez vu d’exemples fiables, donc elles comblent les trous. • Et si les réglages (comme la température) sont trop permissifs, elles partent en freestyle.
  11. Limites de l’OCR : • Ne gère pas bien les

    tableaux mal structurés. • Perte des relations logiques entre lignes et colonnes. Solution : LlamaParse , MistralOCR, Docling • Des outils basés sur un modèle reconnaissance de machine learning • Capable de traiter les PDF scannés + Génère un Markdown structuré (meilleure compatibilité) • Préserve la hiérarchie et les relations entre les lignes et les colonnes. 1. Prétraitement de la fiche PDF https://docs.llamaindex.ai/en/stable/llama_cloud/llama_parse/
  12. Limites des LLMs • Pas à jour : “Je suis

    désolé, ma dernière mise à jour date de janvier 2022..." • Limite de tokens : "The message exceeds the maximum token limit." Solution : RAG Hybride (vectoriel + BM25) 1. Découper les documents en fragments avec une stratégie chunking par chevauchement 2. Après la fragmentation, vient la transformation en vecteurs (embedding) via (text-embedding-ada-002) + stocker dans une base vectorielle (FAISS ou ChromeDb) 3. Similarité cosinus 🔍 : Comparaison du vecteur du prompt avec les données de la bv pour trouver les top-k chunks les plus proches 4. En parallèle, on effectue une recherche basée sur les mots-clés de la requête, en pondérant leur importance à l’aide de l’algorithme BM25. 5. On combine ensuite les résultats des deux approches : la recherche locale par mots-clés + la recherche vectorielle. 6. Enfin, on enrichit notre prompt et l’on envoie au modèle GPT via l’API d’OpenAI pour générer la réponse finale 2. RAG (Retrieval-Augmented Generation) + BM25 https://help.openai.com/en/articles/8868588-retrieval-augmented-generation-rag-and-semantic-search-for-gpts
  13. Fonction : Le fine-tuning, c’est entraîner un modèle déjà performant

    sur des exemples précis pour qu’il devienne encore meilleur dans un domaine particulier. Produisant ainsi des réponses mieux adaptées à un style ou des règles spécifiques. Exemple : Application des règles de classification des risques • Problème : Codes de danger comme H225 (inflammable) et H301 (toxique) doivent être combinés pour évaluer le risque global. • Limite d’un modèle standard : Un prompt simple extrait les codes, mais ne comprend pas leur relation pour évaluer correctement le risque. Solution : Le fine-tuning 3. Supervised Fine-tuning https://platform.openai.com/docs/guides/fine-tuning
  14. Conclusion L’IA, un véritable atout Gain de temps et d'efficacité

    L’IA est un assistant, pas un remplaçant Elle nécessite toujours une supervision humaine. Confidentialité Les données ne sont pas utilisées pour ré-entraîner les modèles. Elles sont retenues 30 jours, mais… OpenAI propose des options “Zero Retention” pour les clients Enterprise Finetune Réduire les risques d’hallucinations en adaptant le modèle à un domaine spécifique ou des règles de gestion complexe RAG + BM25 Exploiter des données privées tout en contournant les limitations de tokens Intégration fluide de l’IA Grâce à LangChain et Sf Processor, son intégration a été simple et efficace.