# 📖 Glossaire Technique de l'Ingénierie IA & Backend Ce glossaire technique rassemble les définitions des termes indispensables à maîtriser pour concevoir, optimiser et sécuriser des architectures logicielles intégrant l'IA et les APIs de LLM. --- ### 1. Concepts Fondamentaux des LLM * **LLM (Large Language Model) :** Modèle de réseau de neurones entraîné sur d'immenses volumes de données textuelles pour prédire le mot suivant dans un contexte donné. * **Prompt (Consigne) :** Le texte d'entrée fourni au modèle pour guider sa génération. * *System Prompt (Prompt Système) :* Consignes de haut niveau définissant le rôle, les contraintes et le comportement du modèle (non modifiables par l'utilisateur final). * *User Prompt (Prompt Utilisateur) :* La requête ou la question posée par l'utilisateur. * **Token (Jeton) :** L'unité de base traitée par un LLM. Un token représente environ 4 caractères ou 0,75 mot en anglais. Les API facturent à l'usage des tokens (tokens d'entrée + tokens de sortie). * **Fenêtre de Contexte (Context Window) :** La quantité maximale de tokens (entrée + sortie) que le modèle peut traiter en une seule fois (ex: 128k tokens pour GPT-4o ou 1M pour Gemini 2.5 Flash). * **Température :** Paramètre contrôlant le niveau de créativité ou de déterminisme de la réponse. * *Température proche de 0 :* Réponses très factuelles, répétitives et déterministes. * *Température proche de 1 :* Réponses créatives, variées et moins prévisibles. * **Hallucination :** Phénomène par lequel le LLM génère une affirmation fausse ou déconnectée de la réalité de manière très convaincante. * **TTFT (Time To First Token) :** Mesure de la latence représentant le temps écoulé entre l'envoi de la requête au LLM et la réception du tout premier jeton (token) de réponse. C'est l'indicateur d'expérience utilisateur (UX) le plus critique dans les interfaces de streaming. --- ### 2. Intégration IA & Structured Outputs * **JSON Mode :** Paramètre d'API qui force le modèle à retourner un flux textuel respectant strictement la syntaxe JSON, sous peine d'erreur de génération. * **Structured Outputs (Sorties Structurées) :** Fonctionnalité avancée des API de LLM (comme Gemini ou OpenAI) qui garantit à 100% que la structure du JSON retourné respecte un schéma strict (ex: schéma JSON ou classe Pydantic/Zod). Le moteur d'inférence bride le modèle pour rejeter toute déviation. * **Pydantic Field Aliases (Alias Virtuels Pydantic) :** Technique permettant d'associer des identifiants virtuels valides en Python à des clés JSON arbitraires pouvant contenir des caractères spéciaux (ex: points, tirets, accents ou emojis comme `auth.login.title` ou `✨_key`). * **Function Calling (Appel de Fonctions / Tools) :** Mécanisme par lequel le LLM détecte qu'il a besoin d'une information externe, suspend sa génération, décrit l'appel d'une fonction logicielle (nom de la fonction + arguments JSON) à exécuter par le code hôte, puis reprend sa génération une fois que le code lui a renvoyé le résultat de l'exécution. * **Batching (Traitement par lots) :** Regroupement de plusieurs requêtes ou données individuelles en une seule requête API pour réduire la latence réseau, optimiser l'usage des tokens et contourner les limitations de fréquence d'appels. * **Prompt Drift (Dérive de prompt) :** Altération involontaire et imprévisible du comportement ou de la qualité de réponse d'un prompt au fil du temps, souvent provoquée par des mises à jour internes et discrètes apportées par les fournisseurs de modèles. --- ### 3. Recherche Sémantique & RAG * **RAG (Retrieval-Augmented Generation) :** Architecture consistant à enrichir le prompt du LLM avec des documents pertinents extraits d'une base de données externe en temps réel, afin de limiter les hallucinations et de lui permettre de répondre sur des données privées ou récentes. * **Chunking (Découpage sémantique) :** Action de découper un long document en morceaux (chunks) de taille fixe ou variable, tout en préservant le contexte sémantique (chevauchement / overlap). * **Chunk Overlap (Recouvrement) :** La quantité de caractères ou de mots dupliqués entre deux segments (chunks) consécutifs. Ce recouvrement évite de couper une phrase ou une idée logique en plein milieu et préserve le contexte sémantique lors de la vectorisation. * **Embedding (Plongement lexical) :** Représentation vectorielle (une liste de nombres réels, ex: 1536 dimensions) d'un segment de texte. Deux textes ayant un sens sémantique similaire auront des vecteurs proches dans l'espace multidimensionnel. * **Base de Données Vectorielle (Vector DB) :** Base de données optimisée pour stocker des vecteurs d'embeddings et y effectuer des recherches ultra-rapides par similarité cosinus ou distance euclidienne (ex: Qdrant, ChromaDB, pgvector). --- ### 4. Robustesse & Architecture Backend * **Post-traitement Regex (Regex Normalization) :** Nettoyage automatique par expressions régulières pour corriger et resserrer les espaces parasites créés par l'IA autour des variables d'interpolation (`{user}`, `{{count}}`) et des balises HTML (``). * **Checkpointing (Persistance d'état) :** Enregistrement incrémental sur disque de l'avancement d'un traitement par lots. Permet de reprendre automatiquement là où le traitement s'est arrêté après une panne ou un redémarrage, évitant de ré-exécuter le travail déjà accompli. * **Écriture Atomique sur Disque (Atomic Write) :** Technique de persistance consistant à écrire les données dans un fichier temporaire `.tmp`, à forcer la purge sur disque physique via `os.fsync()`, puis à effectuer un remplacement atomique système (`Path.replace()`). Empêche la corruption du fichier d'origine en cas de panne de courant ou d'interruption pendant l'écriture. * **Exponential Backoff (Retrait exponentiel) :** Algorithme de ré-essai où le délai d'attente entre deux tentatives double à chaque échec ($1s \to 2s \to 4s \dots$). Permet de laisser le temps à un serveur saturé de récupérer lors d'un Rate Limit (HTTP 429). * **Jitter (Bruit aléatoire) :** Ajout d'une composante temporelle aléatoire ($+0.0 \dots 0.5s$) au délai de ré-essai afin de désynchroniser les ré-essais de multiples clients concurrents. * **Thundering Herd Problem (Effet de meute) :** Surcharge système produite lorsque des centaines de requêtes en échec ré-essaient toutes exactement au même instant, faisant recrasher immédiatement le serveur en cours de rétablissement. Le Jitter résout ce problème. * **Rate Limits (Limites de taux) :** Restrictions imposées par les API sur le nombre de requêtes par minute (RPM) ou de tokens par minute (TPM). * **RPM vs TPM (Requests vs Tokens Per Minute) :** Distanciation des limitations d'API. On peut saturer les RPM en effectuant de nombreuses requêtes légères, ou saturer les TPM en effectuant une seule requête contenant un très grand nombre de jetons. * **Pattern Façade (Facade Design Pattern) :** Pattern d'architecture logicielle offrant une interface unique unifiée (`src/core.py`) au-dessus de plusieurs sous-modules spécialisés (`json_utils`, `regex_utils`, `checkpoint`, `retry`), simplifiant l'utilisation et garantissant zéro breaking change. * **Blueprints Flask :** Pattern d'organisation pour les applications web Flask permettant d'encapsuler et de modulariser les routes HTTP par domaines métiers indépendants (`dashboard/routes/`). * **Idempotence :** Propriété d'une opération qui produit le même résultat qu'elle soit exécutée une seule fois ou plusieurs fois de suite. --- ### 5. Microservices & Architecture Cloud * **FastAPI :** Framework web moderne, asynchrone et ultra-rapide pour Python 3.10+, fondé sur Starlette, Pydantic et le standard OpenAPI / Swagger. * **Uvicorn :** Serveur web ASGI (Asynchronous Server Gateway Interface) haute performance permettant d'exécuter des applications et microservices Python asynchrones. * **Microservice REST :** Architecture logicielle dans laquelle les fonctionnalités métiers (ex: le moteur de traduction i18n) sont découpées en services autonomes, indépendants et communiquant via le protocole HTTP/JSON. * **Proxy Inverse (Reverse Proxying) :** Serveur ou composant réseau intermédiaire (ex: le serveur Flask) qui intercepte les requêtes clients et les délègue de manière transparente à des microservices d'arrière-plan (ex: FastAPI sur le port 8000). * **CORS (Cross-Origin Resource Sharing) :** En-têtes HTTP de sécurité permettant aux navigateurs et applications clientes d'exécuter des requêtes cross-domain depuis des origines ou ports différents en toute sécurité. * **Docker Multi-Stage Build :** Technique de construction d'images Docker permettant d'enchaîner plusieurs étapes (`FROM ... AS builder` puis `FROM ... AS runner`) afin d'isoler la phase de compilation et de produire une image finale minimale et ultra-légère sans outils de build inutiles. * **Conteneurisation Sécurisée (Non-Root User) :** Pratique de sécurité consistant à exécuter le microservice à l'intérieur du conteneur sous un compte utilisateur sans privilège (`appuser` UID 1000) au lieu de `root`. * **Sonde de Santé (Healthcheck) :** Instruction du conteneur (`HEALTHCHECK CMD curl -f http://localhost:8000/health`) permettant à l'orchestrateur (Docker / Google Cloud Run) d'interroger périodiquement le microservice et de relancer le conteneur si nécessaire. * **Google Cloud Run :** Plateforme Serverless managée de Google Cloud permettant d'exécuter des conteneurs HTTP stateless avec mise à l'échelle automatique de 0 à N instances. * **Google Artifact Registry :** Registre de conteneurs cloud sécurisé de Google (`*.docker.pkg.dev`) pour héberger et versionner les images Docker multi-stage de production. * **GCP Secret Manager :** Service de coffre-fort chiffré permettant de stocker et d'injecter la clé `GEMINI_API_KEY` dans Cloud Run sans l'inscrire en clair dans le code. * **Google Cloud Build (`cloudbuild.yaml`) :** Moteur CI/CD managé exécutant automatiquement la compilation d'image Docker et le déploiement sur Google Cloud Run.