Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions MyIA.AI.Notebooks/GenAI/SemanticKernel/fort-boyard-csharp.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -442,11 +442,23 @@
},
{
"cell_type": "markdown",
"id": "ef9f8d8c",
"metadata": {},
"source": [
"**Lecture de la conversation** — l'orchestrateur a produit un échange de **charade** : le Père Fouras ouvre (« Mon premier est une préposition... Mon deuxième est une graine... Mon troisième évoque les règles d'un texte fondamental »), et Laurent Jalabert devine **tour par tour** (« 'à' ? » → non → « 'dans' ? » → non → « 'de' ? » → « Bravo ! Mon premier est effectivement 'de' ! »), puis « grain » et « loi » confirmés.\n",
"### Lecture — l'orchestrateur alterne les agents tout seul\n",
"\n",
"**Ce que cet output démontre** : la trace alterne rigoureusement `Pere_Fouras` / `Laurent_Jalabert` sans qu'aucun code ne dicte l'ordre — c'est la **stratégie de sélection** du `AgentGroupChat`. Notez aussi que les agents **improvisent** : la charade générée ne décompose pas exactement `Anticonstitutionnellement` — le modèle crée sa propre énigme cohérente. C'est une propriété émergente des systèmes multi-agent : le comportement naît de l'interaction des prompts, pas d'un script."
"La sortie committée montre **3 tours** :\n",
"1. **Père Fouras** : une charade en 4 parties (« Mon premier est le contraire de pro… Mon quatrième se termine par ment »). Le modèle a *inventé* sa propre charade — elle ne décompose pas `Anticonstitutionnellement` de façon canonique, mais reste cohérente.\n",
"2. **Laurent Jalabert** : propose « amendement » — **faux** mais proche (le mot commence par une longue suite de lettres).\n",
"3. **Père Fouras** : encourage (« Tu t'approches ») sans révéler — la stratégie de sélection lui redonne la parole automatiquement.\n",
"\n",
"Ce que le code fait et que l'output démontre :\n",
"- **`chat.ResetAsync()` + `chat.IsComplete = false`** : on repart d'un historique vide — rejouer la cellule relance une partie fraîche.\n",
"- **`await foreach (var content in chat.InvokeAsync())`** : la boucle consomme un flux asynchrone. L'orchestrateur décide *à chaque tour* quel agent parle (sélection) et s'il faut s'arrêter (terminaison). Le code ne dicte pas l'ordre.\n",
"- **`content.AuthorName`** : rend la trace lisible (`Pere_Fouras` / `Laurent_Jalabert`). C'est le `Name` posé en cell 9 — sans lui, la trace serait indistinguible.\n",
"- **La terminaison n'a pas déclenché** : Laurent n'a pas dit `Anticonstitutionnellement` — la sortie s'arrête à 3 tours (output tronqué, l'itération continue au-delà). Le `MaximumIterations = 10` protège contre une partie infinie.\n",
"\n",
"Notez aussi que les agents **improvisent** : la charade générée ne décompose pas exactement `Anticonstitutionnellement` — le modèle crée sa propre énigme cohérente. C'est une propriété émergente des systèmes multi-agent : le comportement naît de l'interaction des prompts, pas d'un script.\n"
]
},
{
Expand Down
Loading