<?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/pl/tags/multi-agent/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>pl</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/pl/tags/multi-agent/index.xml" rel="self" type="application/rss+xml"/><item><title>Tworzenie interfejsów użytkownika dla multi-agentowych systemów w czasie rzeczywistym — bez efektu czarnej skrzynki</title><link>https://thedotnetblog.com/pl/posts/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/pl/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/</guid><description>AG-UI i Microsoft Agent Framework łączą siły, by zapewnić multi-agentowym przepływom pracy właściwy frontend — ze streamingiem w czasie rzeczywistym, zatwierdzeniami przez człowieka i pełną widocznością działań agentów.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Ten post został automatycznie przetłumaczony. Aby przejść do oryginału, &lt;a href="https://thedotnetblog.com/pl/posts/emiliano-montesdeoca/ag-ui-real-time-multi-agent-ui-maf/"&gt;kliknij tutaj&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Oto rzecz o systemach wieloagentowych: w demonstracjach wyglądają niesamowicie. Trzy agenty przekazują sobie pracę, rozwiązują problemy, podejmują decyzje. Potem próbujesz pokazać to prawdziwym użytkownikom i&amp;hellip; cisza. Kręcący się wskaźnik. Nikt nie wie, który agent co robi ani dlaczego system jest wstrzymany. To nie jest produkt — to problem zaufania.&lt;/p&gt;
&lt;p&gt;Zespół Microsoft Agent Framework właśnie opublikował &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;świetny przewodnik&lt;/a&gt; dotyczący łączenia przepływów pracy MAF z &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;AG-UI&lt;/a&gt; — otwartym protokołem do strumieniowania zdarzeń wykonania agentów do frontendu przez Server-Sent Events. I szczerze? To jest właśnie ten most, którego nam brakowało.&lt;/p&gt;
&lt;h2 id="dlaczego-to-ważne-dla-programistów-net"&gt;Dlaczego to ważne dla programistów .NET&lt;/h2&gt;
&lt;p&gt;Jeśli budujesz aplikacje oparte na AI, prawdopodobnie trafiłeś już na tę ścianę. Twoja orkiestracja backendowa działa świetnie — agenty przekazują sobie zadania, narzędzia się uruchamiają, decyzje są podejmowane. Ale frontend nie ma pojęcia, co dzieje się za kulisami. AG-UI rozwiązuje to, definiując standardowy protokół do strumieniowania zdarzeń agentów (takich jak &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;) bezpośrednio do warstwy interfejsu przez SSE.&lt;/p&gt;
&lt;p&gt;Demonstracja, którą zbudowali, to przepływ pracy obsługi klienta z trzema agentami: agent triaży kierujący żądaniami, agent zwrotów obsługujący pieniądze i agent zamówień zarządzający wymianami. Każdy agent ma własne narzędzia, a topologia przekazywania jest jawnie zdefiniowana — żadnego &amp;ldquo;wyczuj to z kontekstu prompta&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="topologia-przekazywania-to-prawdziwa-gwiazda"&gt;Topologia przekazywania to prawdziwa gwiazda&lt;/h2&gt;
&lt;p&gt;Zwróciło moją uwagę to, jak &lt;code&gt;HandoffBuilder&lt;/code&gt; pozwala zadeklarować skierowany graf routingu między agentami:&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;Każde &lt;code&gt;add_handoff&lt;/code&gt; tworzy skierowaną krawędź z opisem w języku naturalnym. Framework generuje narzędzia przekazywania dla każdego agenta na podstawie tej topologii. Decyzje dotyczące routingu są zakorzenione w strukturze orkiestracji, a nie w tym, na co ma ochotę LLM. To ogromna rzecz dla niezawodności produkcji.&lt;/p&gt;
&lt;h2 id="człowiek-w-pętli-który-naprawdę-działa"&gt;Człowiek w pętli, który naprawdę działa&lt;/h2&gt;
&lt;p&gt;Demonstracja prezentuje dwa wzorce przerwań, które są potrzebne w każdej prawdziwej aplikacji agentowej:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Przerwania zatwierdzania narzędzi&lt;/strong&gt; — gdy agent wywołuje narzędzie oznaczone jako &lt;code&gt;approval_mode=&amp;quot;always_require&amp;quot;&lt;/code&gt;, przepływ pracy wstrzymuje się i emituje zdarzenie. Frontend renderuje modal zatwierdzenia z nazwą narzędzia i argumentami. Żadnych pętli ponownych prób — tylko czysty przepływ wstrzymaj-zatwierdź-wznów.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Przerwania żądania informacji&lt;/strong&gt; — gdy agent potrzebuje więcej kontekstu od użytkownika (jak numer zamówienia), wstrzymuje się i pyta. Frontend wyświetla pytanie, użytkownik odpowiada, a wykonanie wznawia się dokładnie tam, gdzie się zatrzymało.&lt;/p&gt;
&lt;p&gt;Oba wzorce są strumieniowane jako standardowe zdarzenia AG-UI, więc frontend nie potrzebuje niestandardowej logiki dla każdego agenta — po prostu renderuje to, co przychodzi przez połączenie SSE.&lt;/p&gt;
&lt;h2 id="podłączenie-jest-zaskakująco-proste"&gt;Podłączenie jest zaskakująco proste&lt;/h2&gt;
&lt;p&gt;Integracja między MAF a AG-UI to jedno wywołanie funkcji:&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;&lt;code&gt;workflow_factory&lt;/code&gt; tworzy nowy przepływ pracy dla każdego wątku, więc każda rozmowa otrzymuje izolowany stan. Endpoint automatycznie obsługuje całe &amp;ldquo;hydrauliczne&amp;rdquo; SSE. Jeśli już używasz FastAPI (lub możesz dodać go jako lekką warstwę), to właściwie zerowe tarcie.&lt;/p&gt;
&lt;h2 id="moje-zdanie"&gt;Moje zdanie&lt;/h2&gt;
&lt;p&gt;Dla nas, programistów .NET, natychmiastowe pytanie brzmi: &amp;ldquo;Czy mogę to zrobić w C#?&amp;rdquo; Agent Framework jest dostępny zarówno dla .NET, jak i Python, a protokół AG-UI jest niezależny od języka (to po prostu SSE). Więc choć ta konkretna demonstracja używa Python i FastAPI, wzorzec przekłada się bezpośrednio. Możesz podpiąć minimalne API ASP.NET Core z endpointami SSE zgodnie z tym samym schematem zdarzeń AG-UI.&lt;/p&gt;
&lt;p&gt;Ważniejszy wniosek: interfejsy użytkownika dla wielu agentów stają się pierwszoklasowym zagadnieniem, a nie przemyśleniem. Jeśli budujesz cokolwiek, gdzie agenty wchodzą w interakcje z ludźmi — obsługa klienta, przepływy zatwierdzeń, przetwarzanie dokumentów — ta kombinacja orkiestracji MAF i przejrzystości AG-UI to wzorzec do naśladowania.&lt;/p&gt;
&lt;h2 id="podsumowanie"&gt;Podsumowanie&lt;/h2&gt;
&lt;p&gt;AG-UI + Microsoft Agent Framework zapewnia to, co najlepsze z obu światów: solidną orkiestrację wieloagentową na backendzie i widoczność w czasie rzeczywistym na frontendzie. Koniec z interakcjami agentów jako czarną skrzynką.&lt;/p&gt;
&lt;p&gt;Sprawdź &lt;a href="https://devblogs.microsoft.com/agent-framework/ag-ui-multi-agent-workflow-demo/"&gt;pełny przewodnik&lt;/a&gt; i &lt;a href="https://github.com/ag-ui-protocol/ag-ui"&gt;repozytorium protokołu AG-UI&lt;/a&gt;, by zagłębić się w temat.&lt;/p&gt;</content:encoded></item><item><title>Microsoft Agent Framework osiąga wersję 1.0 — co naprawdę ważne dla programistów .NET</title><link>https://thedotnetblog.com/pl/posts/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/pl/posts/emiliano-montesdeoca/agent-framework-1-0-production-ready/</guid><description>Microsoft Agent Framework 1.0 jest gotowy do produkcji ze stabilnym API, orkiestracją wieloagentową i łącznikami dla każdego głównego dostawcy AI. Oto co musisz wiedzieć jako programista .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Ten post został automatycznie przetłumaczony. Aby przejść do oryginału, &lt;a href="https://thedotnetblog.com/pl/posts/emiliano-montesdeoca/agent-framework-1-0-production-ready/"&gt;kliknij tutaj&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jeśli śledzisz historię Agent Framework od wczesnych dni Semantic Kernel i AutoGen, ta wiadomość jest znacząca. Microsoft Agent Framework właśnie &lt;a href="https://devblogs.microsoft.com/agent-framework/microsoft-agent-framework-version-1-0/"&gt;osiągnął wersję 1.0&lt;/a&gt; — gotowy do produkcji, stabilne API, zobowiązanie do długoterminowego wsparcia. Jest dostępny zarówno dla .NET, jak i Python i naprawdę gotowy na prawdziwe obciążenia.&lt;/p&gt;
&lt;p&gt;Pominę hałas ogłoszenia i skupię się na tym, co ważne, jeśli budujesz aplikacje oparte na AI w .NET.&lt;/p&gt;
&lt;h2 id="krótka-wersja"&gt;Krótka wersja&lt;/h2&gt;
&lt;p&gt;Agent Framework 1.0 łączy to, co kiedyś było Semantic Kernel i AutoGen, w jeden otwarty SDK. Jedna abstrakcja agenta. Jeden silnik orkiestracji. Wielu dostawców AI. Jeśli skakałeś między Semantic Kernel dla wzorców enterprise i AutoGen dla przepływów pracy wieloagentowych klasy badawczej, możesz przestać. To jest teraz jeden SDK.&lt;/p&gt;
&lt;h2 id="pierwsze-kroki-są-niemal-wstydliwie-proste"&gt;Pierwsze kroki są niemal wstydliwie proste&lt;/h2&gt;
&lt;p&gt;Oto działający agent w .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;To wszystko. Kilka linii i masz agenta AI działającego przeciwko Azure Foundry. Odpowiednik w Python jest równie zwięzły. Dodawaj narzędzia funkcji, rozmowy wieloturowe i streaming w miarę potrzeb — powierzchnia API skaluje się bez dziwactw.&lt;/p&gt;
&lt;h2 id="orkiestracja-wieloagentowa--to-jest-prawdziwa-sprawa"&gt;Orkiestracja wieloagentowa — to jest prawdziwa sprawa&lt;/h2&gt;
&lt;p&gt;Pojedynczy agent jest w porządku dla demonstracji, ale scenariusze produkcyjne zazwyczaj wymagają koordynacji. Agent Framework 1.0 dostarcza przetestowane w boju wzorce orkiestracji prosto z Microsoft Research i AutoGen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sekwencyjne&lt;/strong&gt; — agenty przetwarzają po kolei (autor → recenzent → redaktor)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Współbieżne&lt;/strong&gt; — rozgałęź do wielu agentów równolegle, zbierz wyniki&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Przekazywanie&lt;/strong&gt; — jeden agent deleguje do innego na podstawie intencji&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Czat grupowy&lt;/strong&gt; — wielu agentów dyskutuje i dochodzi do rozwiązania&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magentic-One&lt;/strong&gt; — wzorzec wieloagentowy klasy badawczej z MSR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wszystkie wspierają streaming, punkty kontrolne, zatwierdzenia przez człowieka w pętli oraz wstrzymanie/wznowienie. Część dotycząca punktów kontrolnych jest kluczowa — długo działające przepływy pracy przeżywają ponowne uruchomienie procesu. Dla nas, programistów .NET, którzy budowali trwałe przepływy pracy z Azure Functions, to brzmi znajomo.&lt;/p&gt;
&lt;h2 id="funkcje-które-mają-największe-znaczenie"&gt;Funkcje, które mają największe znaczenie&lt;/h2&gt;
&lt;p&gt;Oto moja lista tego, co warto znać:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Haki middleware.&lt;/strong&gt; Wiesz, jak ASP.NET Core ma potoki middleware? Ten sam koncept, ale dla wykonania agenta. Przechwytuj każdy etap — dodawaj bezpieczeństwo treści, logowanie, zasady zgodności — bez dotykania promptów agenta. To właśnie sprawia, że agenty są gotowe na środowisko enterprise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Podłączalna pamięć.&lt;/strong&gt; Historia rozmów, trwały stan klucz-wartość, wyszukiwanie wektorowe. Wybierz backend: Foundry Agent Service, Mem0, Redis, Neo4j lub własny. Pamięć to właśnie to, co zmienia bezstanowe wywołanie LLM w agenta, który naprawdę zapamiętuje kontekst.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deklaratywne agenty YAML.&lt;/strong&gt; Zdefiniuj instrukcje, narzędzia, pamięć i topologię orkiestracji agenta w wersjonowanych plikach YAML. Ładuj i uruchamiaj jednym wywołaniem API. To zmienia zasady gry dla zespołów, które chcą iterować zachowanie agentów bez ponownego wdrażania kodu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wsparcie A2A i MCP.&lt;/strong&gt; MCP (Model Context Protocol) pozwala agentom dynamicznie odkrywać i wywoływać zewnętrzne narzędzia. A2A (protokół Agent-to-Agent) umożliwia współpracę między różnymi środowiskami uruchomieniowymi — twoje agenty .NET mogą koordynować z agentami działającymi w innych frameworkach. Wsparcie A2A 1.0 pojawi się wkrótce.&lt;/p&gt;
&lt;h2 id="funkcje-podglądowe-warte-obserwowania"&gt;Funkcje podglądowe warte obserwowania&lt;/h2&gt;
&lt;p&gt;Niektóre funkcje zostały dostarczone jako podgląd w 1.0 — działające, ale API może się ewoluować:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevUI&lt;/strong&gt; — lokalny debugger w przeglądarce do wizualizacji wykonania agenta, przepływów wiadomości i wywołań narzędzi w czasie rzeczywistym. Pomyśl Application Insights, ale dla rozumowania agenta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot SDK i Claude Code SDK&lt;/strong&gt; — używaj Copilot lub Claude jako narzędzia agenta bezpośrednio z kodu orkiestracji. Skomponuj agenta zdolnego do kodowania obok innych agentów w tym samym przepływie pracy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Harness&lt;/strong&gt; — konfigurowalne lokalne środowisko uruchomieniowe dające agentom dostęp do powłoki, systemu plików i pętli wiadomości. Pomyśl agenty kodujące i wzorce automatyzacji.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills&lt;/strong&gt; — pakiety wielokrotnego użytku z możliwościami domeny, które od razu dają agentom ustrukturyzowane umiejętności.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="migracja-z-semantic-kernel-lub-autogen"&gt;Migracja z Semantic Kernel lub AutoGen&lt;/h2&gt;
&lt;p&gt;Jeśli masz istniejący kod Semantic Kernel lub AutoGen, dostępne są dedykowane asystenty migracji, które analizują kod i generują plany migracji krok po kroku. &lt;a href="https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-semantic-kernel"&gt;Przewodnik migracji z Semantic Kernel&lt;/a&gt; i &lt;a href="https://learn.microsoft.com/en-us/agent-framework/migration-guide/from-autogen"&gt;przewodnik migracji z AutoGen&lt;/a&gt; prowadzą przez wszystko.&lt;/p&gt;
&lt;p&gt;Jeśli korzystałeś z pakietów RC, uaktualnienie do 1.0 to tylko zmiana wersji.&lt;/p&gt;
&lt;h2 id="podsumowanie"&gt;Podsumowanie&lt;/h2&gt;
&lt;p&gt;Agent Framework 1.0 to kamień milowy produkcji, na który czekały zespoły enterprise. Stabilne API, wsparcie dla wielu dostawców, wzorce orkiestracji działające w skali i ścieżki migracji zarówno z Semantic Kernel, jak i AutoGen.&lt;/p&gt;
&lt;p&gt;Framework jest &lt;a href="https://github.com/microsoft/agent-framework"&gt;w pełni open source na GitHub&lt;/a&gt;, a możesz zacząć już dziś z &lt;code&gt;dotnet add package Microsoft.Agents.AI&lt;/code&gt;. Sprawdź &lt;a href="https://learn.microsoft.com/en-us/agent-framework/get-started/"&gt;przewodnik szybkiego startu&lt;/a&gt; i &lt;a href="https://github.com/microsoft/agent-framework"&gt;przykłady&lt;/a&gt;, by zabrać się do pracy.&lt;/p&gt;
&lt;p&gt;Jeśli czekałeś na sygnał &amp;ldquo;bezpieczne do użycia w produkcji&amp;rdquo; — to jest właśnie ten moment.&lt;/p&gt;</content:encoded></item></channel></rss>