<?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>Orchestration | The .NET Blog</title><link>https://thedotnetblog.com/tr/tags/orchestration/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>tr</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/tr/tags/orchestration/index.xml" rel="self" type="application/rss+xml"/><item><title>Handoff Deseni: Tek Bir Ajan Yetmediğinde</title><link>https://thedotnetblog.com/tr/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/tr/news/emiliano-montesdeoca/maf-handoff-orchestration-pattern-tour/</guid><description>Microsoft Agent Framework'ün Handoff orkestrasyonu deseni, ajanların konuşma bağlamını kaybetmeden veya topoloji kurallarını çiğnemeden bir sonraki turu kimin yöneteceğine karar vermesini sağlar.</description><content:encoded>&lt;p&gt;Bir noktada, her çok ajanlı sistem basit bir yönlendiricinin ötesine geçer. İlk işaret genellikle bir uzman ajanın takip sorusu sorması gerektiğinde veya bir turun ortasında başka bir ajanın devam etmesi gerektiğini fark ettiğinde gelir. Sabit pipeline orada başarısız olur. Tek geçişli yönlendirici orada başarısız olur.&lt;/p&gt;
&lt;p&gt;Microsoft Agent Framework&amp;rsquo;teki Handoff orkestrasyonu deseni tam olarak bu sorunu çözmek için tasarlanmıştır.&lt;/p&gt;
&lt;h2 id="handoff-nasıl-çalışır"&gt;Handoff Nasıl Çalışır&lt;/h2&gt;
&lt;p&gt;Geliştirici bir grafik bildirir: bunlar ajanlar, bunlar aralarındaki kenarlar. Framework gerisini halleder — her giden kenar için bir handoff aracı sentezler ve her ajana enjekte eder. Bir ajan kontrolü devretmeye karar verdiğinde, aracı çağırır. Framework topolojiyi uygular.&lt;/p&gt;
&lt;p&gt;Bu onu ajanların birbirini çağırmasından farklı kılan üç şey:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Paylaşılan bir transkript&lt;/strong&gt; — alıcı ajan tam konuşma geçmişini görür. Sıfırdan başlamadan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Topoloji zorlaması&lt;/strong&gt; — bir ajan yalnızca bildirilen hedeflere handoff yapabilir. Yönlendirme hataları üretimde değil, geliştirme aşamasında yakalanır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Doğal sonlanma&lt;/strong&gt; — aktif ajan bir handoff aracı çağırmadan turunu bitirdiğinde, iş akışı kullanıcıya bırakır. Yoklama yok, açık çıkış koşulu yok.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="minimal-bir-örnek"&gt;Minimal Bir Örnek&lt;/h2&gt;
&lt;p&gt;.NET&amp;rsquo;te bir handoff iş akışı oluşturmak şöyle görünür:&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 her iki uzmana da gönderebilir. Her iki uzman da triage&amp;rsquo;a geri gönderebilir. Grafik döngüsüz uyumludur ancak gerektiğinde (&amp;ldquo;daha fazla bilgiye ihtiyacım var&amp;rdquo; → araştırmaya geri) geri kenarları destekler.&lt;/p&gt;
&lt;h2 id="handoffu-ne-zaman-kullanmalı-ve-ne-zaman-kullanmamalı"&gt;Handoff&amp;rsquo;u Ne Zaman Kullanmalı (ve Ne Zaman Kullanmamalı)&lt;/h2&gt;
&lt;p&gt;Handoff şu durumlarda iyi bir seçimdir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sahiplik konuşmanın ortasında değişebilir&lt;/strong&gt; — bir ajan yanlış uzman olduğunu fark edebilir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geri kenarlar önemlidir&lt;/strong&gt; — yeniden başlatmadan önceki bir adıma dönmeniz gerekebilir&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yönlendirme kararları nüanslıdır&lt;/strong&gt; — handoff kararı bağlamsal ve tiplenmiş tahminlerden ziyade model tarafından daha iyi alınır&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Şu durumlarda &lt;em&gt;doğru&lt;/em&gt; seçim değildir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pipeline&amp;rsquo;ınız sabit ve sıralı — bunun için &lt;code&gt;Sequential&lt;/code&gt; iş akışını kullanın&lt;/li&gt;
&lt;li&gt;Her adım bağımsız — yalnızca birinin ihtiyaç duyduğu bir transkripti paylaşan ajanlar sadece gürültüdür&lt;/li&gt;
&lt;li&gt;Katı işleme garantilerine ihtiyacınız var — model odaklı yönlendirmenin belirsizliği istediğiniz şey değildir&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="geri-kenarlar-ve-human-in-the-loop"&gt;Geri Kenarlar ve Human-in-the-Loop&lt;/h2&gt;
&lt;p&gt;Handoff&amp;rsquo;un mümkün kıldığı en ilginç formlardan biri gerçek geri kenarlardır. Bir ajan &amp;ldquo;yeterli bilgim yok&amp;rdquo; kararını verebilir ve sabit kodlu bir döngüyle değil, modelin doğru karar olduğuna karar verdiği için bir araştırma adımına yeniden yönlendirebilir.&lt;/p&gt;
&lt;p&gt;Human-in-the-loop etkileşimleri de doğal olarak oluşur. Bir uzman kullanıcı girdisine ihtiyaç duyduğunda, iş akışı varsayılan tur döngüsü aracılığıyla kullanıcıya bırakır, yanıtı toplar ve tam bağlamla devam eder. Ajan konuşmayı hiç kaybetmedi.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;Handoff, içselleştirildikten sonra çok şeyi mümkün kılan basit görünen desenlerden biridir: merkezsizleştirilmiş yönlendirme, paylaşılan bağlam, zorlanan topoloji, doğal sonlanma. Ajanlarınız &amp;ldquo;aslında bunu başkasının halletmesi gerekiyor&amp;rdquo; demeye başladığında doğru sonraki adımdır.&lt;/p&gt;
&lt;p&gt;Orijinal gönderide tam rehberi okuyun: &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></channel></rss>