e-naxosMAF COURSE / COURS
English

MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1

Demo280 — Validated Planning

Extraction JSON, schéma hôte et un retry au maximum précèdent la désérialisation. Après deux échecs, la boucle continue sans exécution simulée de ce plan. Aucun effet de création, même pour un plan valide.

Objectifs

Préparer le programme

Chat réel via la configuration commune, granite4:3b par défaut ; aucun embedding requis. Une API optionnelle est sélectionnée explicitement, sans fallback automatique. Depuis la racine de la distribution complète. Préserver les projets partagés et les fichiers de configuration. Certains prompts et libellés historiques de Demo260–290 sont encore en français dans le code public ; les commandes et identifiants restent ceux de cette révision.

dotnet build BaseTechnique.slnx -m:1 -c Release
Projets nécessaires
ProjetRôle
demos/Demo280_ValidatedPlanning/Demo280.App.csprojApplication
shared/Maf.DemoConnection/Maf.DemoConnection.csprojImplémentation partagée

Commandes depuis la racine

dotnet run --project demos/Demo280_ValidatedPlanning/Demo280.App.csproj -c Release --no-build

Manipulations et variantes

Comparer les deux demandes de Demo270, puis suivre l’injection de plan invalide du chapitre dans une copie séparée.

    // 3) Validation JSON Schema (+ retry unique si invalide)
    if (!ValidatePlanJson(jsonText, out var err))
    {
        Console.WriteLine("⚠️ Plan JSON invalide. Retry unique...");
        Console.WriteLine(err);

        var repairPrompt = $"""
Tu as renvoyé un JSON invalide ou non conforme.
Corrige-le et renvoie UNIQUEMENT un JSON valide, sans texte autour, conforme à ce schéma :

{PlanJsonSchema}

Demande utilisateur :
{input}
""";

        var rawResp2 = await planner.RunAsync(message: repairPrompt, session: session);
        var rawText2 = GetResponseText(rawResp2);
        jsonText = ExtractJsonObject(rawText2);

        if (!ValidatePlanJson(jsonText, out err))
        {
            Console.WriteLine("⛔ JSON toujours invalide après retry. Arrêt.");
            Console.WriteLine(err);
            Console.WriteLine();
            continue;
        }
    }

    // 4) Désérialisation une fois validé

demos/Demo280_ValidatedPlanning/Program.cs · L92–L121 · 9a895c94534c

Code source · Demo280 · Dossier

Ce qui doit être observable

Extraction JSON, schéma hôte et un retry au maximum précèdent la désérialisation. Après deux échecs, la boucle continue sans exécution simulée de ce plan. Aucun effet de création, même pour un plan valide.

Ces résultats sont attendus à partir du code lié. Les observations effectivement rejouées pour ce lot sont distinguées dans les exercices et la réception ; aucune sortie live non mesurée n’est donnée comme observée.

Limites et état conservé

Pour Demo230–250, graphe neuf à chaque entrée ; aucun effet métier écrit. Demo260 conserve ses deux sessions seulement en processus. Demo270–290 interprètent un plan par affichage simulé, sans moteur de workflow. Les appels réels dépendent du profil et les tests scriptés ne qualifient pas le modèle.

Contrats et prérequis

Prérequis

Pour poursuivre

Dossier complet de la démo · README

lot009-workflows-1 · 2026-10-24 · 9a895c94534cd5fc6f3da883e37e5f7856e588c1