e-naxosMAF COURSE / COURS
English

MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1

Demo450 — Contract Regression

Séparer la console de classification réelle des régressions applicatives déterministes.

Objectifs

Deux procédures pour deux preuves

Demo450.App utilise le fournisseur chat commun et attend une demande au terminal. AgentCiCd.Tests utilise un agent MAF avec un double déterministe. Les deux exercent la classification mais ne répondent pas à la même question : la console observe une sortie réelle, les tests vérifient les règles face à des sorties choisies. Aucun ticket n’est créé par cette console.

dotnet build BaseTechnique.slnx -m:1 -c Release

Lancer d’abord les régressions

dotnet test tests/AgentCiCd.Tests/AgentCiCd.Tests.csproj -m:1 -c Release --no-build --no-restore

Attendre le résultat du testhost et conserver le TRX. La suite vérifie la branche de risque faible, le routage humain, l’action interdite, le score invalide et la justification vide. Ce sont des sorties de double contrôlées, sans requête au LLM. Pour un essai réel distinct, lancer la console puis saisir la demande ci-dessous au prompt Support request >.

dotnet run --project demos/Demo450_ContractRegression/Demo450.App.csproj -c Release --no-build
I cannot open my support workspace. Please classify this request.
Console.Write("Support request > ");
var input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input)) return;
var result = await SupportTicketAgentFactory.Create(client).HandleAsync(input, stop.Token);
Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(result));
Console.WriteLine("Classification only; no ticket was created. Tests exercise rules, not model quality.");

demos/Demo450_ContractRegression/Program.cs · L7–L12 · 9a895c94534c

Code source · Demo450 · Dossier

Observer les limites métier

Une demande de remboursement permet d’observer la classification réelle sans effectuer de paiement. Dans les tests, la sortie refund_client est rejetée ; riskScore=85 route vers human_review malgré create_ticket. Ces nombres viennent de fixtures de SupportTicketAgentTests ; le seuil de policy est >=70. Ne pas modifier les attendus pour rendre une réponse du modèle conforme.

Lire les résultats au bon niveau

Relever FinalAction, Category, RiskScore et la mention Classification only; no ticket was created. Une action autorisée dans la classification ne démontre aucune écriture. Une sortie de test réussie montre la réaction de l’hôte aux fixtures, pas la qualité sémantique du modèle. Les garanties d’écriture SQLite et d’approbation sont couvertes par Maf.Backlog.Tests.

Ne pas confondre les deux contrats

Le contrat create_ticket/human_review de cette classification est distinct de CandidateAnswer assist/refuse/clarify/abstain de Demo460. Une action inventée ou un score invalide reste une erreur ; aucun ticket de secours n’est généré. EOF ou saisie vide termine sans classification. Le profil modèle et la validation humaine indépendante restent non qualifiés.

Poursuivre vers le banc d’essai

Prérequis

Pour poursuivre

Dossier complet de la démo · README

lot012-observability-1 · 2026-10-24 · 9a895c94534cd5fc6f3da883e37e5f7856e588c1