e-naxosMAF COURSE / COURS
English

MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1

Demo120 — Tool Hallucination

Refuser une valeur inventée quand la facture est absente.

Objectifs

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.

Projets à lancer
ProjetRôle
demos/Demo120_ToolHallucination/Demo120.App.csprojApp

Lancer depuis la racine

dotnet run --project demos/Demo120_ToolHallucination/Demo120.App.csproj -c Release --no-build

Modes 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());

demos/Demo120_ToolHallucination/Program.cs · L27–L32 · 9a895c94534c

Code source · Demo120 · Dossier

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.

Poursuivre et vérifier

Prérequis

Pour poursuivre

Dossier complet de la démo · README

lot007-foundations-1 · 2026-10-24 · 9a895c94534cd5fc6f3da883e37e5f7856e588c1