MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1
Demo120 — Tool Hallucination
Refuser une valeur inventée quand la facture est absente.
Objectifs
- Observer Demo120 et ses variantes ; relier le résultat aux concepts du chapitre.
Préparer la démo
Depuis la racine de la solution complète déjà compilée en Release. Prérequis du parcours : Demo060. Ce programme utilise le chat réel du profil sélectionné ; aucun embedding n’est nécessaire sauf le mode --embed de Demo020. Vérifier la connexion et les capacités requises avant de conclure à un défaut du scénario.
| Projet | Rôle |
|---|---|
| demos/Demo120_ToolHallucination/Demo120.App.csproj | App |
Lancer depuis la racine
dotnet run --project demos/Demo120_ToolHallucination/Demo120.App.csproj -c Release --no-buildModes et manipulation
Le programme demande automatiquement INV-404 à l’agent InvoiceReader via find_invoice. Le fournisseur de chat est réel ; la facture reste une fixture locale explicitement simulée. Aucun menu ou saisie interactive.
var agent = chat.AsAIAgent(name: "InvoiceReader", instructions:
"Call find_invoice for INV-404. Never invent missing data. Answer in English.",
tools: [AIFunctionFactory.Create(FindInvoice, "find_invoice")]);
Console.WriteLine("Assistant declaration: " + (await agent.RunAsync("Read invoice INV-404.", cancellationToken: stop.Token)).Text);
Console.WriteLine(observed.Count == 0 ? "No invocation observed; no verified answer."
: "Host answer from observed tool result: " + observed.Last().ToAnswer());
Résultats et échecs utiles
L’appel observé pour INV-404 renvoie NotFound avec Value null. ToAnswer() donne No matching data exists in the demo fixture. Comparer cette réponse hôte avec Assistant declaration. Si aucun outil n’a été invoqué, la console indique No invocation observed; no verified answer. Ne pas confondre absence de données, refus et erreur.
Ces observations sont attendues par lecture du code à la révision indiquée. Aucun nouvel appel de modèle n’a été exécuté pour rédiger cette fiche ; le texte exact d’une réponse générée n’est pas une sortie de référence.
Portée et limites
Le prompt “Never invent missing data” oriente le modèle ; ToAnswer impose la réponse factuelle du host. Les tests de LookupResult couvrent aussi Refused et Error ; le programme courant ne propose pas de commutateur pour simuler chaque statut.
