← Posts LinkedIn

Le copilote continue de répondre quand le modèle de langage s'éteint

Une offre gratuite plafonnée à 50 appels d'API par jour a dicté chaque décision de conception de ce système. La contrainte a disparu. L'architecture qu'elle a produite est restée, parce qu'elle a gagné sa place.

J’ai construit un copilote d’IA qui continue de répondre même quand son modèle de langage s’éteint. Cette conception vient d’une limite dure rencontrée au début du développement : 50 appels d’API par jour.

Pourquoi cela compte

Un système qui marche en démonstration et un système qui survit en production sont deux choses différentes. L’écart apparaît quand quelque chose casse : quand le quota du modèle s’épuise au milieu de l’après-midi et que le système doit continuer de répondre, sans personne pour intervenir.

Quand le calcul est illimité, l’architecture peut se permettre d’être fragile. Retirez ce budget, et chaque décision de conception change. La contrainte sous laquelle j’ai construit a disparu. L’architecture qu’elle a imposée est restée, parce qu’elle a gagné sa place.

Les systèmes auxquels les entreprises se fient sont ceux qui marchent encore quand le budget de calcul est épuisé.

Comment cela fonctionne

J’ai construit un copilote ERP LangGraph multi-agents pour la chaîne d’approvisionnement et je l’ai déployé sur Azure Kubernetes Service, sur GPT-4o. Pendant le développement initial, le modèle de langage tournait sur une offre gratuite plafonnée à 50 requêtes par jour. Cette limite a façonné toute la conception.

Le système instruit chaque question de deux façons à la fois, puis recontrôle ses propres trouvailles avant de répondre. Dans le détail : un modèle de vectorisation de texte (BGE-large-en-v1.5, 1024 dimensions) trouve les documents par le sens, BM25 les trouve par mot-clé, les deux listes fusionnent par fusion de rang réciproque, un second modèle les reclasse, et une porte de qualité écarte tout fragment qu’elle juge non pertinent avant que le modèle de langage le voie.

Chaque appel d’outil passe par un contrat typé. 6 serveurs valident l’entrée contre un schéma avant qu’un solveur ou une requête de base de données s’exécute, donc une demande malformée est rejetée avant d’atteindre le calcul.

Le système tourne aussi entièrement sans le modèle de langage. La pile asynchrone tient les sessions concurrentes sans blocage. Quand le modèle est indisponible, un classifieur par mots-clés et un moteur de motifs prennent le relais, et les 7 solveurs de recherche opérationnelle tournent intacts. Un analyste des achats qui fait son point du matin obtient quand même une réponse, même si le modèle est tombé pendant la nuit.

Ce qui m’a pris de court : quand le quota s’est épuisé, l’agent du graphe de connaissances n’a pas levé d’erreur. Il a silencieusement renvoyé du vide. Une panne silencieuse vaut moins qu’une panne bruyante. Le correctif a été un repli déterministe qui se déclenche sur toute exception du modèle de langage, pas seulement sur la limite de quota, pour que le système renvoie toujours quelque chose qu’il peut assumer.

Le plus dur, quand on construit sous contrainte, c’est d’accepter que la contrainte soit peut-être la conception.

Through G. M. Nguegnang's Lens. On building AI that survives its own failures