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
- Observer Demo450 et ses variantes ; relier le résultat aux concepts du chapitre.
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 ReleaseLancer d’abord les régressions
dotnet test tests/AgentCiCd.Tests/AgentCiCd.Tests.csproj -m:1 -c Release --no-build --no-restoreAttendre 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-buildI 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.");
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.
