Intégration résiliente d'un modèle de langage dans un moteur de recherche commercial
10 octobre 2026 · 4 min de lecture
Une équipe de développement a intégré un modèle de langage au cœur de son système de recherche pour sites web, en concevant l'architecture dès le départ pour gérer les défaillances inévitables de l'intelligence artificielle. Cette approche vise à permettre au moteur de comprendre les requêtes formulées en langage naturel par les utilisateurs, telles que des demandes spécifiques pour des travaux de jardinage ou des idées de cadeaux, tout en garantissant que le service reste opérationnel même si le modèle cesse de répondre correctement. Le système repose sur une fonction unique qui gère toutes les interactions avec le modèle, acceptant un prompt système, un texte et un schéma JSON en entrée pour produire un dictionnaire ou une valeur nulle en sortie, sans jamais lever d'exception vers le code appelant.
La conception technique isole strictement la logique dépendante du modèle dans un fichier unique d'environ cent lignes, permettant de changer de fournisseur par une simple modification de configuration. L'infrastructure prend actuellement en charge deux voies distinctes : l'utilisation de Claude avec un schéma JSON strict et n'importe quel point de terminaison compatible avec OpenAI. Bien que le fournisseur DeepSeek soit actuellement utilisé en production, le code alternatif reste actif et testé. Cette séparation empêche les problèmes spécifiques à un modèle donné de se propager à travers l'ensemble du service, facilitant ainsi la maintenance et les tests unitaires ciblés sur le comportement de l'intelligence artificielle.
La gestion des réponses varie considérablement selon le fournisseur choisi, nécessitant des stratégies de parsing adaptées. Avec Claude, le schéma est inclus dans les paramètres de la requête pour garantir un JSON valide, tandis que les points de terminaison compatibles OpenAI reçoivent le schéma sous forme de texte dans le prompt, accompagné d'une demande de format JSON et d'une température basse. Puisque cette dernière méthode n'offre aucune garantie stricte, le système extrait manuellement le contenu situé entre la première accolade ouvrante et la dernière accolade fermante, ignorant tout texte environnant ou raisonnement préalable. Une attention particulière est portée aux modèles de raisonnement qui peuvent consommer leur quota de jetons pour réfléchir, laissant le champ de contenu vide malgré un statut de réussite de l'API, ce qui oblige le code à vérifier également le champ de contenu de raisonnement pour y trouver une réponse potentielle.
Pour éviter que le système ne bascule silencieusement en mode dégradé sans que personne ne s'en aperçoive, une nouvelle procédure de signalement des incidents a été mise en place. Auparavant, toute erreur du modèle était simplement journalisée et ignorée, permettant au moteur de fonctionner avec un simple dictionnaire de mots-clés sans alerter les administrateurs d'une perte de fonctionnalité intelligente sur une longue période. Désormais, chaque échec de fournisseur, qu'il s'agisse d'une clé expirée ou d'un solde épuisé, génère une alerte de haute priorité dans le panneau d'administration, détaillant le fournisseur, le modèle et le message d'erreur, assurant ainsi que la dégradation de la qualité du search soit rapidement identifiée et corrigée par l'équipe technique.
Des règles de validation strictes sont appliquées au contenu généré par le modèle avant qu'il ne soit présenté à l'utilisateur final. Le système rejette toute réponse contenant un identifiant de produit qui n'existe pas dans la liste des candidats proposés, empêchant ainsi le modèle d'halluciner des articles inexistants. De plus, le code impose des limites rigoureuses, telles qu'un maximum de dix étiquettes et un nombre défini de questions de clarification, indépendamment de ce que le modèle pourrait tenter de retourner. Les explications fournies aux utilisateurs sont également filtrées pour interdire toute mention de la technologie sous-jacente, des étiquettes internes ou du catalogue, obligeant le modèle à se concentrer uniquement sur les caractéristiques pertinentes des produits eux-mêmes.
Enfin, chaque fonctionnalité assistée par l'intelligence artificielle dispose d'une alternative fonctionnelle complète pour les scénarios où le modèle est indisponible. Lorsque le modèle attribue des étiquettes lors de l'indexation, le système utilise un dictionnaire statique en secours. Si le modèle doit analyser une requête ou poser une question de clarification, le moteur revient à des correspondances par mots-clés et ne pose aucune question. Pour la sélection du meilleur produit et la justification du choix, des modèles prédéfinis basés sur des faits objectifs comme le classement, l'expérience et le prix remplacent les explications générées dynamiquement, assurant une expérience utilisateur cohérente quelle que soit la disponibilité du service de modèle de langage.