Découvrez comment les LLM interprètent les règles métier, suivent l’état des workflows et vérifient les décisions grâce aux prompts, aux outils, aux tests et à la revue humaine — pas seulement par du code.

Quand on demande si un LLM peut « raisonner sur des règles métier », on veut généralement quelque chose de plus exigeant que « peut-il écrire un if/else ? ». Le raisonnement sur les règles métier, c’est la capacité à appliquer des politiques de façon cohérente, expliquer les décisions, gérer les exceptions et rester aligné avec l’étape courante du flux de travail — surtout quand les entrées sont incomplètes, désordonnées ou changeantes.
La génération de code consiste essentiellement à produire une syntaxe valide dans un langage cible. Le raisonnement sur les règles consiste à préserver l’intention.
Un modèle peut générer du code parfaitement valide qui produit pourtant un mauvais résultat métier parce que :
Autrement dit, la justesse n’est pas « est-ce que ça compile ? » mais « est-ce que cela correspond à ce que l’entreprise déciderait, à chaque fois, et peut-on le prouver ? »
Les LLM peuvent aider à traduire des politiques en règles structurées, suggérer des chemins de décision et rédiger des explications pour les humains. Mais ils ne savent pas automatiquement quelle règle est faisant autorité, quelle source de données est fiable, ni à quelle étape se trouve le dossier. Sans contraintes, ils peuvent choisir avec assurance une réponse plausible plutôt que celle qui est gouvernée.
L’objectif n’est donc pas de « laisser le modèle décider », mais de lui donner de la structure et des vérifications pour qu’il puisse assister de manière fiable.
Une approche pratique ressemble à un pipeline :
C’est la différence entre un extrait de code malin et un système qui peut soutenir de véritables décisions métier.
Avant de parler de la façon dont un LLM « raisonne », il aide de séparer deux choses que les équipes confondent souvent : règles métier et flux de travail.
Les règles métier sont les déclarations de décision que votre organisation veut appliquer de façon cohérente. Elles apparaissent sous forme de politiques et de logiques telles que :
Les règles sont généralement formulées comme des « SI X, ALORS Y » (parfois avec des exceptions), et elles doivent produire un résultat clair : approuver/refuser, prix A/prix B, demander plus d’infos, etc.
Un flux de travail est le processus qui fait avancer le travail du début jusqu’à la fin. Il s’agit moins de décider ce qui est permis et plus de ce qui se passe ensuite. Les flux de travail incluent souvent :
Imaginez une demande de remboursement.
Extrait de règle : « Les remboursements sont autorisés dans les 30 jours suivant l’achat. Exception : les téléchargements numériques ne sont pas remboursables une fois consultés. Exception : les rétrofacturations doivent être escaladées. »
Extrait de workflow :
Les règles deviennent délicates quand elles entrent en conflit (« les clients VIP obtiennent toujours des remboursements » vs « les téléchargements numériques n’en obtiennent jamais »), quand elles dépendent d’un contexte manquant (le téléchargement a-t-il été consulté ?), ou quand elles cachent des cas limites (bundles, remboursements partiels, lois régionales). Les flux de travail ajoutent une couche : les décisions doivent rester cohérentes avec l’état courant, les actions antérieures et les délais.
Les LLM ne « comprennent » pas les règles métier comme un humain. Ils génèrent le mot suivant le plus probable en se basant sur des motifs appris à partir d’un grand corpus de texte. C’est pourquoi un LLM peut paraître convaincant alors qu’il devine — ou qu’il complète discrètement des détails manquants.
Cette limitation compte pour la logique décisionnelle et les flux de travail. Un modèle peut appliquer une règle qui « sonne » juste (« les employés ont toujours besoin d’une approbation manageriale ») alors que la vraie politique a des exceptions (« seulement au-dessus de 500 $ » ou « seulement pour les contractuels »). C’est un mode d’échec courant : application confiante mais incorrecte d’une règle.
Même sans « compréhension » véritable, les LLM sont utiles dès que vous les traitez comme un assistant structuré :
La clé est de placer le modèle dans une position où il ne peut pas facilement dériver vers l’improvisation.
Une façon pratique de réduire l’ambiguïté est la sortie contrainte : exiger que le LLM réponde dans un schéma ou un modèle fixe (par exemple JSON avec des champs précis, ou un tableau avec des colonnes requises). Quand le modèle doit remplir rule_id, conditions, exceptions et decision, il devient plus facile de repérer les lacunes et de valider automatiquement la sortie.
Les formats contraints rendent aussi plus visible quand le modèle ne sait pas quelque chose. Si un champ requis manque, vous pouvez forcer une question de suivi au lieu d’accepter une réponse fragile.
Le constat : le « raisonnement » des LLM est surtout une génération basée sur des motifs guidée par une structure — utile pour organiser et vérifier des règles, mais risqué si vous le traitez comme une autorité infaillible.
Les documents de politique sont écrits pour des humains : ils mélangent objectifs, exceptions et « bon sens » dans le même paragraphe. Un LLM peut résumer ce texte, mais il suivra les règles de façon plus fiable quand vous transformez la politique en entrées explicites et testables.
Les bonnes représentations de règles partagent deux traits : elles sont non ambiguës et vérifiables.
Rédigez les règles comme des énoncés que vous pourriez tester :
Les règles peuvent être fournies au modèle sous plusieurs formes :
Les politiques réelles entrent en conflit. Quand deux règles ne s’accordent pas, le modèle a besoin d’un schéma de priorité clair. Approches courantes :
Énoncez la règle de résolution de conflit directement, ou encodez-la (par exemple priority: 100). Sinon, le LLM peut « moyenniser » les règles.
Texte de politique original :
“Refunds are available within 30 days for annual plans. Monthly plans are non-refundable after 7 days. If the account shows fraud or excessive chargebacks, do not issue a refund. Enterprise customers need Finance approval for refunds over $5,000.”
Structured rules (YAML):
rules:
- id: R1
statement: "IF plan_type = annual AND days_since_purchase <= 30 THEN refund MAY be issued"
priority: 10
- id: R2
statement: "IF plan_type = monthly AND days_since_purchase > 7 THEN refund MUST NOT be issued"
priority: 20
- id: R3
statement: "IF fraud_flag = true OR chargeback_rate = excessive THEN refund MUST NOT be issued"
priority: 100
- id: R4
statement: "IF customer_tier = enterprise AND refund_amount > 5000 THEN finance_approval MUST be obtained"
priority: 50
conflict_resolution: "Higher priority wins; MUST NOT overrides MAY"
Maintenant, le modèle ne devine plus ce qui compte : il applique un ensemble de règles que vous pouvez relire, tester et versionner.
Un flux de travail n’est pas seulement un ensemble de règles ; c’est une séquence d’événements où les étapes antérieures changent ce qui doit se produire ensuite. Cette “mémoire” est l’état : les faits courants sur le dossier (qui a soumis quoi, ce qui a déjà été approuvé, ce qui attend, et quels délais s’appliquent). Si vous ne suivez pas explicitement l’état, les workflows cassent de manière prévisible — approbations dupliquées, vérifications requises sautées, décisions inversées, ou application d’une mauvaise politique parce que le modèle ne peut pas inférer ce qui s’est déjà passé.
Pensez à l’état comme au tableau de score du flux. Il répond : Où en sommes-nous ? Qu’est-ce qui a été fait ? Qu’est-ce qui est autorisé ensuite ? Pour un LLM, disposer d’un résumé clair de l’état l’empêche de re-litiguer des étapes passées ou de deviner.
Quand vous appelez le modèle, incluez un payload d’état compact en plus de la requête utilisateur. Les champs utiles sont :
manager_review: approved, finance_review: pending)Évitez de coller tout l’historique des messages. Fournissez plutôt l’état courant plus un bref journal d’audit des transitions clés.
Considérez le moteur de workflow (base de données, système de tickets, orchestrateur) comme la source unique de vérité. Le LLM doit lire l’état depuis ce système et proposer l’action suivante, mais le système doit être l’autorité qui enregistre les transitions. Cela réduit la « dérive d’état », où la narration du modèle diverge de la réalité.
{
"request_id": "TRV-10482",
"workflow": "travel_reimbursement_v3",
"current_step": "finance_review",
"step_status": {
"submission": "complete",
"manager_review": "approved",
"finance_review": "pending",
"payment": "not_started"
},
"actors": {
"employee_id": "E-2291",
"manager_id": "M-104",
"finance_queue": "FIN-AP"
},
"amount": 842.15,
"currency": "USD",
"submitted_at": "2025-12-12T14:03:22Z",
"last_state_update": "2025-12-13T09:18:05Z",
"flags": {
"receipt_missing": false,
"policy_exception_requested": true,
"needs_escalation": false
}
}
Avec un snapshot comme celui-ci, le modèle peut rester cohérent : il ne redemandera pas l’approbation manageriale, se concentrera sur les vérifications finance, et pourra expliquer les décisions en fonction des flags et de l’étape courante.
Un bon prompt ne demande pas seulement une réponse — il fixe des attentes sur comment le modèle doit appliquer vos règles et comment il doit rendre compte du résultat. L’objectif est des décisions répétables, pas une prose brillante.
Donnez au modèle un rôle concret lié à votre processus. Trois rôles fonctionnent bien ensemble :
Vous pouvez exécuter ces rôles séquentiellement (« analyste → validateur → agent ») ou demander les trois sorties dans une réponse structurée.
Au lieu de demander une « chain-of-thought », spécifiez des étapes visibles et des livrables :
Cela garde le modèle organisé tout en le focalisant sur les livrables : quelles règles ont été utilisées et quelle conséquence en découle.
Les explications libres dérivent. Exigez une justification compacte qui pointe les sources :
Cela accélère la relecture et vous aide à déboguer les désaccords.
Utilisez un modèle fixe à chaque fois :
Le modèle est ainsi poussé à faire remonter les lacunes avant de s’engager dans une action incorrecte.
Un LLM peut rédiger une réponse convaincante même quand il manque des faits clés. C’est utile pour rédiger, mais risqué pour les décisions métier. Si le modèle doit deviner le statut d’un compte, le palier d’un client, un taux fiscal régional, ou si une limite a déjà été atteinte, vous obtiendrez des erreurs d’apparence confiante.
Les outils résolvent cela en transformant le « raisonnement » en un processus en deux étapes : récupérer les preuves d’abord, décider ensuite.
Dans les systèmes axés sur les règles et les workflows, quelques outils simples font la majorité du travail :
La clé est que le modèle ne « fabrique » pas des faits opérationnels — il les demande.
Même si vous conservez toutes les politiques dans un magasin central, vous ne voulez rarement coller l’ensemble dans le prompt. La récupération aide en sélectionnant seulement les fragments les plus pertinents pour le dossier courant, par exemple :
Cela réduit les contradictions et empêche le modèle de suivre une règle obsolète simplement parce qu’elle était présente plus tôt dans le contexte.
Un motif fiable consiste à traiter les résultats d’outils comme des preuves que le modèle doit citer dans sa décision. Par exemple :
get_account(account_id) → status="past_due", plan="Business", usage_this_month=12000retrieve_policies(query="overage fee Business plan") → retourne la règle : “Overage fee applies above 10,000 units at $0.02/unit.”calculate_overage(usage=12000, threshold=10000, rate=0.02) → $40.00La décision n’est alors plus une supposition : c’est une conclusion ancrée sur des entrées spécifiques (« past_due », « 12,000 units », « $0.02/unit »). En cas d’audit, vous pourrez voir exactement quels faits et quelle version de règle ont été utilisés — et corriger la bonne partie quand quelque chose change.
Le texte libre est flexible, mais aussi la façon la plus simple de casser un workflow. Un modèle peut donner une « réponse raisonnable » qui est impossible à automatiser (« ça me semble correct ») ou incohérente d’une étape à l’autre (« approve » vs « approved »). Les sorties contraintes résolvent cela en forçant chaque décision dans une forme prévisible.
Un motif pratique est d’exiger que le modèle réponde par un seul objet JSON que votre système peut parser et router :
{
"decision": "needs_review",
"reasons": [
"Applicant provided proof of income, but the document is expired"
],
"next_action": "request_updated_document",
"missing_info": [
"Income statement dated within the last 90 days"
],
"assumptions": [
"Applicant name matches across documents"
]
}
Cette structure rend la sortie utile même quand le modèle ne peut pas décider entièrement. missing_info et assumptions transforment l’incertitude en suites actionnables, au lieu de rester des suppositions cachées.
Pour réduire la variabilité, définissez des valeurs autorisées (enums) pour les champs clés. Par exemple :
decision : approved | denied | needs_reviewnext_action : approve_case | deny_case | request_more_info | escalate_to_humanAvec des enums, les systèmes en aval n’ont pas besoin d’interpréter des synonymes, la ponctuation ou le ton. Ils se contentent de basculer sur des valeurs connues.
Les schémas font office de garde‑fous. Ils :
reasons).decision et next_action.Le résultat : moins d’ambiguïté, moins d’échecs sur les cas limites, et des décisions qui peuvent traverser un flux de travail de façon cohérente.
Même un modèle bien prompté peut « sonner juste » tout en violant discrètement une règle, en sautant une étape requise, ou en inventant une valeur. La validation est le filet de sécurité qui transforme une réponse plausible en une décision fiable.
Commencez par vérifier que vous disposez du minimum d’informations nécessaire pour appliquer les règles. Les pré-contrôles doivent s’exécuter avant que le modèle ne prenne une décision.
Les pré-contrôles typiques incluent les champs obligatoires (par ex. type de client, total de la commande, région), les formats de base (dates, IDs, devise) et les plages autorisées (montants non négatifs, pourcentages bornés à 100%). Si quelque chose échoue, retournez une erreur claire et actionnable (« Missing ‘region’; cannot choose tax rule set ») au lieu de laisser le modèle deviner.
Après que le modèle a produit un résultat, vérifiez qu’il est cohérent avec votre jeu de règles.
Concentrez-vous sur :
Ajoutez une « deuxième passe » qui réévalue la première réponse. Cela peut être un autre appel modèle ou le même modèle avec un prompt de type validateur qui ne vérifie que la conformité, pas la créativité.
Un motif simple : la première passe produit une décision + une justification ; la deuxième passe renvoie soit valid, soit une liste structurée d’échecs (champs manquants, contraintes violées, interprétation ambiguë des règles).
Pour chaque décision, journalisez les entrées utilisées, la version de la règle/politique, et les résultats de validation (y compris les conclusions de la deuxième passe). Quand quelque chose se trompe, cela vous permet de reproduire les conditions exactes, corriger le mapping de règle, et confirmer la correction — sans deviner ce que le modèle « voulait dire ».
Tester des fonctionnalités LLM axées sur les règles et les workflows, ce n’est pas « a‑t‑il généré quelque chose ? » mais « a‑t‑il pris la même décision qu’un humain attentif, pour la bonne raison, à chaque fois ? » La bonne nouvelle : vous pouvez le tester avec la même rigueur que pour une logique décisionnelle traditionnelle.
Traitez chaque règle comme une fonction : pour des entrées données, elle doit renvoyer un résultat attendu.
Par exemple, pour une règle de remboursement comme « les remboursements sont autorisés dans les 30 jours pour les articles non ouverts », écrivez des cas ciblés avec résultats attendus :
Ces tests unitaires détectent les erreurs d’indice, les champs manquants et le comportement « serviable » du modèle quand il tente de combler les inconnues.
Les flux de travail échouent quand l’état devient incohérent entre les étapes. Les tests de scénario simulent des parcours réels :
L’objectif est de vérifier que le modèle respecte l’état courant et ne réalise que les transitions autorisées.
Créez un jeu de cas réel, anonymisé, avec résultats acceptés (et brefs motifs). Versionnez-le et revoyez‑le à chaque changement de politique. Un petit gold set (même 100–500 cas) est puissant car il reflète la réalité désordonnée — données manquantes, formulations inhabituelles, décisions limites.
Suivez les distributions de décision et les signaux de qualité dans le temps :
needs_review ou de transferts humains (souvent un problème de prompt, de récupération ou de données en amont)Associez la surveillance à un rollback sécurisé : conservez un pack de prompts/règles précédent, activez des feature flags pour les nouvelles versions, et soyez prêt à revenir en arrière rapidement si les métriques se dégradent. Pour des playbooks opérationnels et des règles de mise en production, voir /blog/validation-strategies.
Si vous implémentez les motifs ci‑dessus, vous finirez souvent par construire un petit système autour du modèle : stockage d’état, appels d’outils, récupération, validation de schéma et orchestrateur de flux. Koder.ai est une manière pratique de prototyper et de livrer ce type d’assistant soutenu par un workflow plus rapidement : vous pouvez décrire le flux en chat, générer une application web fonctionnelle (React) plus des services backend (Go avec PostgreSQL), et itérer en sécurité grâce aux snapshots et au rollback.
Cela compte pour le raisonnement sur les règles métier parce que les « garde‑fous » vivent souvent dans l’application, pas dans le prompt :
Les LLM peuvent être étonnamment bons pour appliquer des politiques courantes, mais ce ne sont pas des moteurs de règles déterministes. Considérez‑les comme des assistants de décision qui ont besoin de garde‑fous, pas comme l’autorité finale.
Trois modes d’échec reviennent souvent dans les workflows lourds en règles :
Ajoutez une revue obligatoire lorsque :
Au lieu de laisser le modèle « inventer », définissez des étapes suivantes claires :
Employez les LLM dans des workflows lourds en règles quand vous pouvez répondre « oui » à la plupart de ces questions :
Sinon, maintenez le LLM en rôle d’ébauche/assistant jusqu’à ce que ces contrôles existent.