<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Multi-Agent | The .NET Blog</title><link>https://thedotnetblog.com/fr/tags/multi-agent/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>fr</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Mon, 01 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/fr/tags/multi-agent/index.xml" rel="self" type="application/rss+xml"/><item><title>Le Modèle Handoff : Quand Un Agent Ne Suffit Pas</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/maf-handoff-orchestration-pattern-tour/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/maf-handoff-orchestration-pattern-tour/</guid><description>Le modèle d'orchestration Handoff de Microsoft Agent Framework permet aux agents de décider qui gère le prochain tour — sans perdre le contexte de la conversation ni enfreindre les règles de topologie.</description><content:encoded>&lt;p&gt;À un moment donné, tout système multi-agents dépasse un simple routeur. Le premier signe apparaît généralement quand un agent spécialiste doit poser une question de suivi, ou réalise en milieu de tour qu&amp;rsquo;un autre agent devrait continuer. Un pipeline fixe échoue là. Un routeur à passage unique échoue là.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est exactement le problème que le modèle d&amp;rsquo;orchestration Handoff dans Microsoft Agent Framework est conçu pour résoudre.&lt;/p&gt;
&lt;h2 id="comment-fonctionne-handoff"&gt;Comment Fonctionne Handoff&lt;/h2&gt;
&lt;p&gt;Le développeur déclare un graphe : voici les agents, voici les arêtes entre eux. Le framework fait le reste — il synthétise un outil handoff par arête sortante et l&amp;rsquo;injecte dans chaque agent. Quand un agent décide de passer le contrôle, il appelle l&amp;rsquo;outil. Le framework applique la topologie.&lt;/p&gt;
&lt;p&gt;Trois choses rendent cela différent du fait d&amp;rsquo;avoir simplement des agents qui s&amp;rsquo;appellent mutuellement :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Une transcription partagée&lt;/strong&gt; — l&amp;rsquo;agent récepteur voit l&amp;rsquo;intégralité de l&amp;rsquo;historique de conversation. Pas de recommencement à zéro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application de la topologie&lt;/strong&gt; — un agent ne peut faire handoff qu&amp;rsquo;à des cibles déclarées. Vous détectez les bugs de routage au moment de l&amp;rsquo;authoring, pas en production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminaison naturelle&lt;/strong&gt; — quand l&amp;rsquo;agent actif termine son tour sans appeler un outil handoff, le workflow cède à l&amp;rsquo;utilisateur. Pas de polling, pas de conditions de sortie explicites.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="un-exemple-minimal"&gt;Un Exemple Minimal&lt;/h2&gt;
&lt;p&gt;En .NET, construire un workflow handoff ressemble à ceci :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI.Workflows&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;triage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Route to the right specialist.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Triage&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;billing&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Handle billing questions.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Billing&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AIAgent&lt;/span&gt; &lt;span class="n"&gt;tech&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chatClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Handle technical support.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Tech&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HandoffWorkflow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Triage peut envoyer à l&amp;rsquo;un ou l&amp;rsquo;autre spécialiste. Les deux spécialistes peuvent renvoyer vers triage. Le graphe est compatible avec l&amp;rsquo;acyclique mais prend en charge les arêtes arrière quand vous en avez besoin (&amp;ldquo;j&amp;rsquo;ai besoin de plus d&amp;rsquo;informations&amp;rdquo; → retour à la recherche).&lt;/p&gt;
&lt;h2 id="quand-utiliser-handoff-et-quand-ne-pas-le-faire"&gt;Quand Utiliser Handoff (et Quand Ne Pas Le Faire)&lt;/h2&gt;
&lt;p&gt;Handoff est un bon choix quand :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La propriété peut changer en cours de conversation&lt;/strong&gt; — un agent peut réaliser qu&amp;rsquo;il est le mauvais spécialiste&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les arêtes arrière comptent&lt;/strong&gt; — vous pourriez avoir besoin de revisiter une étape antérieure sans repartir à zéro&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les décisions de routage sont floues&lt;/strong&gt; — la décision de faire un handoff est contextuelle et mieux prise par le modèle que par des prédicats typés&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce n&amp;rsquo;est &lt;em&gt;pas&lt;/em&gt; le bon choix quand :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Votre pipeline est fixe et séquentiel — utilisez le workflow &lt;code&gt;Sequential&lt;/code&gt; pour cela&lt;/li&gt;
&lt;li&gt;Chaque étape est indépendante — des agents partageant une transcription où seul l&amp;rsquo;un d&amp;rsquo;eux en avait besoin n&amp;rsquo;est que du bruit&lt;/li&gt;
&lt;li&gt;Vous avez besoin de garanties strictes de traitement — le non-déterminisme du routage piloté par modèle n&amp;rsquo;est pas ce que vous voulez&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="arêtes-arrière-et-humain-dans-la-boucle"&gt;Arêtes Arrière et Humain-dans-la-Boucle&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;une des formes les plus intéressantes qu&amp;rsquo;Handoff permet est les vraies arêtes arrière. Un agent peut décider &amp;ldquo;je n&amp;rsquo;ai pas assez d&amp;rsquo;informations&amp;rdquo; et revenir à une étape de recherche, pas avec une boucle codée en dur, mais parce que le modèle décide que c&amp;rsquo;est la bonne décision.&lt;/p&gt;
&lt;p&gt;Les interactions humain-dans-la-boucle se composent également naturellement. Quand un spécialiste a besoin d&amp;rsquo;une entrée de l&amp;rsquo;utilisateur, le workflow cède à l&amp;rsquo;utilisateur via la boucle de tour par défaut, recueille la réponse et reprend avec le contexte complet. L&amp;rsquo;agent n&amp;rsquo;a jamais perdu la conversation.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Handoff est l&amp;rsquo;un de ces modèles qui semble simple mais permet beaucoup une fois intégré : routage décentralisé, contexte partagé, topologie appliquée, terminaison naturelle. C&amp;rsquo;est la prochaine étape appropriée quand vos agents commencent à dire &amp;ldquo;en fait, quelqu&amp;rsquo;un d&amp;rsquo;autre devrait gérer ça.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Lisez le guide complet dans le post original : &lt;a href="https://devblogs.microsoft.com/agent-framework/a-tour-of-handoff-orchestration-pattern/"&gt;A Tour of the Handoff Orchestration Pattern&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Construire des UIs Multi-Agents en Temps Réel Qui Ne Ressemblent Pas à une Boîte Noire</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/</guid><description>AG-UI et Microsoft Agent Framework s'associent pour offrir aux workflows multi-agents un vrai frontend — avec du streaming en temps réel, des approbations humaines et une visibilité totale sur ce que font vos agents.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Voilà le truc avec les systèmes multi-agents : ils sont incroyables en démo. Trois agents qui se passent le travail, résolvent des problèmes, prennent des décisions. Puis tu essaies de le mettre devant de vrais utilisateurs et&amp;hellip; silence. Un indicateur qui tourne. Aucune idée de quel agent fait quoi ni pourquoi le système est en pause. Ce n&amp;rsquo;est pas un produit — c&amp;rsquo;est un problème de confiance.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;équipe Microsoft Agent Framework vient de publier un &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;excellent tutoriel&lt;/a&gt; sur le couplage des workflows MAF avec &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;AG-UI&lt;/a&gt;, un protocole ouvert pour streamer les événements d&amp;rsquo;exécution des agents vers un frontend via les Server-Sent Events. Et franchement ? C&amp;rsquo;est exactement le pont qui nous manquait.&lt;/p&gt;
&lt;h2 id="pourquoi-cest-important-pour-les-développeurs-net"&gt;Pourquoi c&amp;rsquo;est important pour les développeurs .NET&lt;/h2&gt;
&lt;p&gt;Si tu construis des applications alimentées par l&amp;rsquo;IA, tu as probablement déjà heurté ce mur. Ton orchestration backend fonctionne parfaitement — les agents se passent le relais, les outils se déclenchent, les décisions sont prises. Mais le frontend n&amp;rsquo;a aucune idée de ce qui se passe en coulisses. AG-UI résout ça en définissant un protocole standard pour streamer les événements d&amp;rsquo;agents (pense à &lt;code&gt;RUN_STARTED&lt;/code&gt;, &lt;code&gt;STEP_STARTED&lt;/code&gt;, &lt;code&gt;TOOL_CALL_*&lt;/code&gt;, &lt;code&gt;TEXT_MESSAGE_*&lt;/code&gt;) directement vers ta couche UI via SSE.&lt;/p&gt;
&lt;p&gt;La démo est un workflow de support client avec trois agents : un agent de triage qui route les demandes, un agent de remboursement qui gère les questions d&amp;rsquo;argent, et un agent de commandes qui gère les remplacements. Chaque agent a ses propres outils, et la topologie de handoff est définie explicitement — pas de « devine à partir du prompt ».&lt;/p&gt;
&lt;h2 id="la-topologie-de-handoff-est-la-vraie-star"&gt;La topologie de handoff est la vraie star&lt;/h2&gt;
&lt;p&gt;Ce qui m&amp;rsquo;a marqué, c&amp;rsquo;est comment &lt;code&gt;HandoffBuilder&lt;/code&gt; te permet de déclarer un graphe de routage dirigé entre les agents :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;HandoffBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ag_ui_handoff_workflow_demo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;participants&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;termination_condition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;termination_condition&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Refunds, damaged-item claims...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Replacement, exchange...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Replacement logistics needed after refund.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_handoff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;triage&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;After replacement/shipping tasks complete.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Chaque &lt;code&gt;add_handoff&lt;/code&gt; crée une arête dirigée avec une description en langage naturel. Le framework génère des outils de handoff pour chaque agent en se basant sur cette topologie. Les décisions de routage reposent donc sur ta structure d&amp;rsquo;orchestration, pas juste sur ce que le LLM a envie de faire. C&amp;rsquo;est un gain énorme pour la fiabilité en production.&lt;/p&gt;
&lt;h2 id="le-human-in-the-loop-qui-fonctionne-vraiment"&gt;Le human-in-the-loop qui fonctionne vraiment&lt;/h2&gt;
&lt;p&gt;La démo présente deux patterns d&amp;rsquo;interruption dont toute app d&amp;rsquo;agents réelle a besoin :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interruptions d&amp;rsquo;approbation d&amp;rsquo;outils&lt;/strong&gt; — quand un agent appelle un outil marqué avec &lt;code&gt;approval_mode=&amp;quot;always_require&amp;quot;&lt;/code&gt;, le workflow se met en pause et émet un événement. Le frontend affiche un modal d&amp;rsquo;approbation avec le nom de l&amp;rsquo;outil et ses arguments. Pas de boucles de retry qui brûlent des tokens — juste un flux propre pause-approbation-reprise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interruptions de demande d&amp;rsquo;information&lt;/strong&gt; — quand un agent a besoin de plus de contexte de la part de l&amp;rsquo;utilisateur (comme un ID de commande), il se met en pause et pose la question. Le frontend affiche la question, l&amp;rsquo;utilisateur répond, et l&amp;rsquo;exécution reprend exactement là où elle s&amp;rsquo;était arrêtée.&lt;/p&gt;
&lt;p&gt;Les deux patterns sont streamés en tant qu&amp;rsquo;événements AG-UI standard, donc ton frontend n&amp;rsquo;a pas besoin de logique personnalisée par agent — il affiche simplement chaque événement qui arrive via la connexion SSE.&lt;/p&gt;
&lt;h2 id="lintégration-est-étonnamment-simple"&gt;L&amp;rsquo;intégration est étonnamment simple&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;intégration entre MAF et AG-UI se résume à un seul appel de fonction :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;agent_framework.ag_ui&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AgentFrameworkWorkflow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;add_agent_framework_fastapi_endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;demo_workflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AgentFrameworkWorkflow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;workflow_factory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;_thread_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;create_handoff_workflow&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ag_ui_handoff_workflow_demo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;add_agent_framework_fastapi_endpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;demo_workflow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/handoff_demo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La &lt;code&gt;workflow_factory&lt;/code&gt; crée un workflow frais par thread, pour que chaque conversation ait son propre état isolé. L&amp;rsquo;endpoint gère toute la plomberie SSE automatiquement. Si tu utilises déjà FastAPI (ou que tu peux l&amp;rsquo;ajouter comme couche légère), c&amp;rsquo;est quasiment zéro friction.&lt;/p&gt;
&lt;h2 id="mon-avis"&gt;Mon avis&lt;/h2&gt;
&lt;p&gt;Pour nous développeurs .NET, la question immédiate est : « Est-ce que je peux faire ça en C# ? » L&amp;rsquo;Agent Framework est disponible pour .NET et Python, et le protocole AG-UI est agnostique au langage (c&amp;rsquo;est juste du SSE). Donc même si cette démo spécifique utilise Python et FastAPI, le pattern se transpose directement. Tu pourrais câbler une API minimale ASP.NET Core avec des endpoints SSE suivant le même schéma d&amp;rsquo;événements AG-UI.&lt;/p&gt;
&lt;p&gt;Le point plus important est que les UIs multi-agents deviennent une préoccupation de premier plan, pas un ajout après coup. Si tu construis quoi que ce soit où des agents interagissent avec des humains — support client, workflows d&amp;rsquo;approbation, traitement de documents — cette combinaison d&amp;rsquo;orchestration MAF et de transparence AG-UI est le pattern à suivre.&lt;/p&gt;
&lt;h2 id="pour-conclure"&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;AG-UI + Microsoft Agent Framework te donne le meilleur des deux mondes : une orchestration multi-agents robuste côté backend et une visibilité en temps réel côté frontend. Fini les interactions d&amp;rsquo;agents en boîte noire.&lt;/p&gt;
&lt;p&gt;Consulte le &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;tutoriel complet&lt;/a&gt; et le &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;dépôt du protocole AG-UI&lt;/a&gt; pour aller plus loin.&lt;/p&gt;</content:encoded></item><item><title>Microsoft Agent Framework Atteint la 1.0 — Voici Ce Qui Compte Vraiment pour les Développeurs .NET</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/agent-framework-1-0-production-ready/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/agent-framework-1-0-production-ready/</guid><description>Microsoft Agent Framework 1.0 est prêt pour la production avec des APIs stables, une orchestration multi-agent et des connecteurs pour tous les principaux fournisseurs d'IA. Voici ce que vous devez savoir en tant que développeur .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/agent-framework-1-0-production-ready/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si vous avez suivi le parcours d&amp;rsquo;Agent Framework depuis les premiers jours de Semantic Kernel et AutoGen, celui-ci est significatif. Microsoft Agent Framework vient d&amp;rsquo;&lt;a href="https://devblogs.microsoft.com/agent-framework/microsoft-agent-framework-version-1-0/"&gt;atteindre la version 1.0&lt;/a&gt; — prêt pour la production, APIs stables, engagement de support à long terme. Il est disponible pour .NET et Python, et il est véritablement prêt pour les charges de travail réelles.&lt;/p&gt;
&lt;p&gt;Laissez-moi couper à travers le bruit de l&amp;rsquo;annonce et me concentrer sur ce qui compte si vous construisez des applications alimentées par l&amp;rsquo;IA avec .NET.&lt;/p&gt;
&lt;h2 id="la-version-courte"&gt;La version courte&lt;/h2&gt;
&lt;p&gt;Agent Framework 1.0 unifie ce qui était auparavant Semantic Kernel et AutoGen en un seul SDK open source. Une abstraction d&amp;rsquo;agent. Un moteur d&amp;rsquo;orchestration. Plusieurs fournisseurs d&amp;rsquo;IA. Si vous avez jonglé entre Semantic Kernel pour les patterns entreprise et AutoGen pour les workflows multi-agent de niveau recherche, vous pouvez arrêter. C&amp;rsquo;est le seul SDK maintenant.&lt;/p&gt;
&lt;h2 id="démarrer-est-presque-injustement-simple"&gt;Démarrer est presque injustement simple&lt;/h2&gt;
&lt;p&gt;Voici un agent fonctionnel en .NET :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// dotnet add package Microsoft.Agents.AI.OpenAI --prerelease&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI.Foundry&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Azure.Identity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;https://your-project.services.ai.azure.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetResponsesClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;gpt-5.3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AsAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;HaikuBot&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;You are an upbeat assistant that writes beautifully.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Write a haiku about shipping 1.0.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;C&amp;rsquo;est tout. Une poignée de lignes et vous avez un agent IA qui tourne contre Azure Foundry. L&amp;rsquo;équivalent Python est tout aussi concis. Ajoutez des outils de fonctions, des conversations multi-tours et du streaming au fur et à mesure — la surface de l&amp;rsquo;API monte en puissance sans devenir bizarre.&lt;/p&gt;
&lt;h2 id="orchestration-multi-agent--cest-du-sérieux"&gt;Orchestration multi-agent — c&amp;rsquo;est du sérieux&lt;/h2&gt;
&lt;p&gt;Les agents individuels sont bien pour les démos, mais les scénarios de production nécessitent généralement de la coordination. Agent Framework 1.0 est livré avec des patterns d&amp;rsquo;orchestration éprouvés au combat directement de Microsoft Research et AutoGen :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Séquentiel&lt;/strong&gt; — les agents traitent dans l&amp;rsquo;ordre (rédacteur → réviseur → éditeur)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrent&lt;/strong&gt; — distribue vers plusieurs agents en parallèle, converge les résultats&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handoff&lt;/strong&gt; — un agent délègue à un autre basé sur l&amp;rsquo;intention&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat de groupe&lt;/strong&gt; — plusieurs agents discutent et convergent vers une solution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magentic-One&lt;/strong&gt; — le pattern multi-agent de niveau recherche de MSR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tous supportent le streaming, le checkpointing, les approbations humain-dans-la-boucle, et la pause/reprise. La partie checkpointing est cruciale — les workflows de longue durée survivent aux redémarrages de processus. Pour nous, développeurs .NET qui avons construit des workflows durables avec Azure Functions, ça nous parle.&lt;/p&gt;
&lt;h2 id="les-fonctionnalités-qui-comptent-le-plus"&gt;Les fonctionnalités qui comptent le plus&lt;/h2&gt;
&lt;p&gt;Voici ma liste de ce qui vaut la peine d&amp;rsquo;être connu :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hooks middleware.&lt;/strong&gt; Vous savez comment ASP.NET Core a des pipelines middleware ? Même concept, mais pour l&amp;rsquo;exécution des agents. Interceptez chaque étape — ajoutez la sécurité du contenu, le logging, les politiques de conformité — sans toucher aux prompts de l&amp;rsquo;agent. C&amp;rsquo;est comme ça que vous rendez les agents prêts pour l&amp;rsquo;entreprise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mémoire pluggable.&lt;/strong&gt; Historique conversationnel, état persistant clé-valeur, récupération basée sur les vecteurs. Choisissez votre backend : Foundry Agent Service, Mem0, Redis, Neo4j, ou créez le vôtre. La mémoire est ce qui transforme un appel LLM sans état en un agent qui se souvient réellement du contexte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agents YAML déclaratifs.&lt;/strong&gt; Définissez les instructions de votre agent, ses outils, sa mémoire et sa topologie d&amp;rsquo;orchestration dans des fichiers YAML versionnés. Chargez et exécutez avec un seul appel API. C&amp;rsquo;est un changement de donne pour les équipes qui veulent itérer sur le comportement de l&amp;rsquo;agent sans redéployer du code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Support A2A et MCP.&lt;/strong&gt; MCP (Model Context Protocol) permet aux agents de découvrir et d&amp;rsquo;invoquer des outils externes dynamiquement. A2A (protocole Agent-to-Agent) permet la collaboration inter-runtime — vos agents .NET peuvent se coordonner avec des agents s&amp;rsquo;exécutant dans d&amp;rsquo;autres frameworks. Le support A2A 1.0 arrive bientôt.&lt;/p&gt;
&lt;h2 id="les-fonctionnalités-en-preview-à-surveiller"&gt;Les fonctionnalités en preview à surveiller&lt;/h2&gt;
&lt;p&gt;Certaines fonctionnalités ont été livrées en preview dans la 1.0 — fonctionnelles mais les APIs peuvent évoluer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevUI&lt;/strong&gt; — un débogueur local basé navigateur pour visualiser l&amp;rsquo;exécution de l&amp;rsquo;agent, les flux de messages et les appels d&amp;rsquo;outils en temps réel. Pensez Application Insights, mais pour le raisonnement de l&amp;rsquo;agent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot SDK et Claude Code SDK&lt;/strong&gt; — utilisez Copilot ou Claude comme harness d&amp;rsquo;agent directement depuis votre code d&amp;rsquo;orchestration. Composez un agent capable de coder aux côtés de vos autres agents dans le même workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Harness&lt;/strong&gt; — un runtime local personnalisable donnant aux agents l&amp;rsquo;accès au shell, au système de fichiers et aux boucles de messagerie. Pensez agents de codage et patterns d&amp;rsquo;automatisation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills&lt;/strong&gt; — des packages de capacités de domaine réutilisables qui donnent aux agents des capacités structurées prêtes à l&amp;rsquo;emploi.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="migration-depuis-semantic-kernel-ou-autogen"&gt;Migration depuis Semantic Kernel ou AutoGen&lt;/h2&gt;
&lt;p&gt;Si vous avez du code Semantic Kernel ou AutoGen existant, il existe des assistants de migration dédiés qui analysent votre code et génèrent des plans de migration étape par étape. Le &lt;a href="https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-semantic-kernel"&gt;guide de migration Semantic Kernel&lt;/a&gt; et le &lt;a href="https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-autogen"&gt;guide de migration AutoGen&lt;/a&gt; vous accompagnent à travers tout.&lt;/p&gt;
&lt;p&gt;Si vous étiez sur les packages RC, la mise à niveau vers 1.0 est juste un changement de version.&lt;/p&gt;
&lt;h2 id="pour-conclure"&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Agent Framework 1.0 est le jalon de production que les équipes entreprise attendaient. APIs stables, support multi-fournisseur, patterns d&amp;rsquo;orchestration qui fonctionnent réellement à l&amp;rsquo;échelle, et des chemins de migration depuis Semantic Kernel et AutoGen.&lt;/p&gt;
&lt;p&gt;Le framework est &lt;a href="https://github.com/microsoft/agent-framework"&gt;entièrement open source sur GitHub&lt;/a&gt;, et vous pouvez commencer dès aujourd&amp;rsquo;hui avec &lt;code&gt;dotnet add package Microsoft.Agents.AI&lt;/code&gt;. Consultez le &lt;a href="https://learn.microsoft.com/en-us/agent-framework/get-started/"&gt;guide de démarrage rapide&lt;/a&gt; et les &lt;a href="https://github.com/microsoft/agent-framework"&gt;exemples&lt;/a&gt; pour mettre les mains dans le cambouis.&lt;/p&gt;
&lt;p&gt;Si vous attendiez le signal « utilisable en production en toute sécurité » — c&amp;rsquo;est celui-ci.&lt;/p&gt;</content:encoded></item></channel></rss>