MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1
Demo440 — Context Budget
Comparer contexte brut, sélection, résumé et mémoire avec une comptabilité complète des appels.
Objectifs
- Observer Demo440 et ses variantes ; relier le résultat aux concepts du chapitre.
Préparer l’expérience réelle
Demo440.App référence Maf.Memory, Maf.Observability et la connexion commune. Il faut un fournisseur chat disponible, Ollama granite4:3b par défaut ou API explicitement configurée. Aucun embedding ou RAG n’est utilisé dans ce scénario. Le fichier Donnees/dossier_support_volumineux.txt est copié dans la sortie ; son contenu reste inchangé, y compris les libellés français utilisés par le filtre.
dotnet build BaseTechnique.slnx -m:1 -c ReleaseExécuter jusqu’au ledger final
dotnet run --project demos/Demo440_ContextBudget/Demo440.App.csproj -c Release --no-buildLe programme s’exécute puis termine sans menu. Lire successivement raw-corpus et scenario-specific-line-filter, les mises à jour de mémoire, les politiques de contexte, puis NativeWindow et Experiment coverage including auxiliary calls. Conserver pour chaque étape taille, usage fournisseur disponible et réponse. Une erreur sort à 1 avec Context experiment failed ; aucun gain n’en est déduit.
string selected = string.Join('\n', corpus.Split('\n').Where(line =>
line.StartsWith("Client :", StringComparison.OrdinalIgnoreCase)
|| line.StartsWith("Situation :", StringComparison.OrdinalIgnoreCase)
|| line.StartsWith("Impact :", StringComparison.OrdinalIgnoreCase)
|| line.StartsWith("Contrainte", StringComparison.OrdinalIgnoreCase)
|| line.StartsWith("Point métier", StringComparison.OrdinalIgnoreCase)
|| line.Contains("billing.outbound", StringComparison.OrdinalIgnoreCase)));
if (string.IsNullOrWhiteSpace(selected))
throw new InvalidDataException("The explicit scenario filter selected no lines. No fallback.");
Comparer les faits conservés
Dans une copie du corpus, déplacer une interdiction hors des préfixes sélectionnés ; relever si elle disparaît du contexte envoyé. Dans ContextExperiment, comparer full, window-last-3, generated-summary-unverified et bounded-user-facts avec la même question. Vérifier Billing, SQL Server 2022 et l’interdiction du redémarrage nocturne. Ne pas transformer une réponse plausible en preuve de fidélité.
Tenir un tableau attribuable
| Mécanisme | Portée |
|---|---|
| Contexte | Nom de politique ; fichier et empreinte ; caractères ; estimation étiquetée |
| Transport | Nombre d’appels ; compteurs connus/absents ; sous-totaux et couverture |
| Qualité | Correction présente ; interdiction préservée ; inconnues dites |
| Comparabilité | Profil, paramètres, ordre, durée, répétitions et appels auxiliaires |
Console.WriteLine("This line filter is deterministic selection for this fixture. Native MAF compaction and history policies follow.");
await ContextExperiment.RunAsync(chat, stop.Token);
Console.WriteLine("Experiment coverage including auxiliary calls: " + JsonSerializer.Serialize(ledger.Summarize()));
Console.WriteLine("All extraction, summary and compaction calls are reported separately. No cost or savings claim; answer quality must be evaluated separately.");
Interpréter sans annoncer une économie
L’estimation ne couvre pas nécessairement toute la requête. Le résumé peut perdre ou inventer un fait ; la compaction par fenêtre retire des tours sans résumer. L’extraction et le résumé ajoutent des appels. Les valeurs nulles restent inconnues. Cette page ne publie aucune nouvelle campagne live ni comparaison tarifaire ; le profil par défaut reste non qualifié.
