Recherche · Résolveur universel

Une question en langage naturel, le bon moteur pour y répondre

Un responsable pose une question comme il la formulerait à un collègue. Le résolveur universel de VVL reconnaît de quel type de problème il s'agit, puis le confie au moteur spécialisé capable de le résoudre de façon exacte : calcul, optimisation, logique, système expert ou extraction. Il rend une réponse accompagnée de ses hypothèses et de son niveau de confiance.

Comment il fonctionne

Le résolveur s'écrit en une ligne, sous la forme longue ou sous son alias. Il enchaîne quatre étapes.

[resolve "Combien font 15% de 240 ?"]
[§§ "Combien font 15% de 240 ?"]          # même chose, forme courte
  1. Classer la question
  2. Contrôler la confiance
  3. Confier au spécialiste
  4. Rendre une approximation

La classification est faite par Jev lorsque le mode Jev est actif, par le modèle de langage sinon. Si la confiance est trop faible, sous 0,55, aucun moteur n'est lancé : le résolveur demande une précision au lieu de deviner. Sinon, la question part vers l'une de huit familles de spécialistes.

FamilleMoteur utiliséExemple de question
CalculCode VVL généré puis exécutéMensualité d'un crédit, marge, ratio
OptimisationSolveur de contraintesPlanifier huit tâches sur trois machines
Requête relationnelleMoteur logique de type PrologQuels clients dépendent de ce fournisseur ?
Induction de règlesApprentissage de règlesQuelle règle distingue les clients fidèles ?
Recherche factuelleModèle de langage et base documentaireQue dit notre procédure qualité ?
ExtractionExtraction structurée, champs manquants signalésNom, montant et échéance d'une facture
Système expertExpert enregistré dans la sessionÉvaluer un dossier de crédit
ComposéeDeux à quatre sous-tâches enchaînéesExtraire un effectif, puis calculer des équipes

La réponse n'est jamais une simple valeur : c'est une approximation qui porte la valeur, une confiance qui dépend de la part fournie par le modèle de langage, une fourchette, et la liste des hypothèses avec leur source. Chaque hypothèse peut être remplacée par une valeur connue pour rejouer le calcul.

Exemples en entreprise

Finance : la mensualité d'un financement

Le directeur financier pose la question telle quelle. Le résolveur la classe comme un calcul, fait écrire la formule d'amortissement puis l'exécute.

$r = [§§? "Calcule la mensualité d'un crédit de 250000 EUR sur 20 ans à 3,5% taux fixe."]
$r.value           # 1449.90
$r.confidence      # "moderate" : la formule a été choisie par le modèle de langage
[approximation:trace $r]

Résultat documenté : 1 449,90 € par mois, avec la trace complète du calcul.

Ressources humaines : une question en deux temps

La question mélange une extraction et un calcul. Le résolveur la découpe en sous-tâches, les exécute dans l'ordre et combine les résultats.

$r = [§§? "Extrais le nombre d'employés de 'Acme Corp compte 87 employés', puis calcule combien d'équipes de 5 personnes on peut former."]
$r.value           # "17 équipes de 5"

Crédit : la question est confiée au système expert

Une fois un système expert enregistré dans la session, le résolveur reconnaît les questions qui relèvent de son domaine et les lui transmet. La décision est prise par les règles de l'expert, pas par le modèle de langage.

[expert "Domaine evaluation risque credit. Dossier client : nom, revenu,
 score_credit (eleve/moyen/faible), anciennete (longue/moyenne/recente),
 decision. ..." "Scoring"]
$r = [§§? "Évalue le dossier de Alice Dubois, revenu 4500, score élevé, ancienneté longue"]
$r.value           # {..., 'decision': 'approuve'}

Après la construction de l'expert, chaque question ne coûte qu'un appel au modèle de langage, pour extraire les données du dossier ; l'inférence n'en utilise aucun.

Investissement : rejouer le calcul avec ses propres chiffres

Un projet de gîte est évalué à partir d'hypothèses fournies par le modèle de langage. Le gestionnaire remplace ces hypothèses par ses chiffres réels et le calcul est rejoué, sans nouvel appel au modèle.

$q = [resolve "Grange achetée 320 000 EUR, à rénover en gîte : en combien d'années est-elle rentabilisée ?"]
$q.value           # 35.55 ans (hypothèses : 50 nuits par an à 180 EUR)
$a = [approximation:revise $q [JSON '{"cout_renovation": 250000}']]
$a.value           # 27.78
$b = [approximation:revise $q [JSON '{"cout_renovation": 280000, "Grange.tarif_moyen_nuit": 220}']]
$b.value           # 25.45

Quand toutes les hypothèses issues du modèle de langage sont remplacées par des valeurs connues, la confiance devient exacte.

Contrôle : vérifier l'aiguillage avant de faire confiance

Avant d'utiliser une réponse, on peut demander au résolveur comment il a classé la question, ou obtenir la trace complète de l'aiguillage et du code généré.

[resolve:classify "Combien font 15% de 240 ?"]   # {family, sub_kind, confidence, reasoning}
[resolve "Combien font 15% de 240 ?"]            # 36.0
[resolve:trace "Combien font 15% de 240 ?"]      # trace complète au format JSON

Ce qu'il garantit, et ses limites

  • Une question ambiguë n'est pas devinée : sous le seuil de confiance, le résolveur demande une précision.
  • Une extraction ne remplit jamais un champ absent du texte : les champs manquants sont signalés.
  • Chaque réponse porte ses hypothèses, leur source et un niveau de confiance ; elle peut être rejouée avec d'autres valeurs.
  • Le résolveur n'est pas un assistant conversationnel : il sert à résoudre des questions qui relèvent d'un moteur précis. Il utilise toujours au moins un appel au modèle de langage pour classer la question.

Appliquer ces travaux à vos processus ?

Le diagnostic part de votre fonctionnement réel et identifie les décisions qui peuvent être confiées à l'IA.

Discuter avec nous sur WhatsApp