Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Arka plan aracıları, bir ana aracının bağımsız görevleri adlandırılmış alt aracılara devretmesine olanak tanır. Her görev, kendi alt aracı oturumunda eşzamanlı olarak çalışırken, ebeveyn; görevin tamamlanmasını beklemek, sonuçları almak, çalışmayı sürdürmek veya görevi bırakmak için kullanabileceği bir görev kimliğini saklar.
Önemli
Arka plan aracıları deneyseldir.
Arka plan aracıları arka plan yanıtlarından farklıdır. Arka plan yanıtı, uygulamanın sorguladığı veya devam ettirdiği bir sağlayıcı isteğini temsil eder. Bir arka plan aracı görevi, başka bir Agent Framework aracısını çağırır ve daha sonra bu aracının metin çıktısını üst aracıya geri iletir.
Arka plan aracılarını el ile ayarlama
Her alt aracının boş olmayan ve büyük/küçük harf farkı gözetilmeksizin benzersiz bir adı olmalıdır. Alt temsilcilere hedefe yönelik yönergeler ve yalnızca kendilerine devredilen rol için gereken araçları verin.
BackgroundAgentsProvider öğesini içe aktarın ve ChatClientAgentOptions.AIContextProviders aracılığıyla normal bir aracıya ekleyin:
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
var backgroundProvider = new BackgroundAgentsProvider(
[webSearchAgent, codeAnalysisAgent]);
AIAgent parentAgent = chatClient.AsAIAgent(new ChatClientAgentOptions
{
Name = "research-coordinator",
AIContextProviders = [backgroundProvider],
});
AgentSession session = await parentAgent.CreateSessionAsync();
BackgroundAgentsProviderOptions sağlayıcı yönergelerini ve aracı listesi biçimlendirmesini özelleştirir.
from agent_framework import Agent, BackgroundAgentsProvider
background_provider = BackgroundAgentsProvider(
[web_search_agent, code_analysis_agent],
wait_timeout_seconds=30,
)
parent_agent = Agent(
client=client,
name="research-coordinator",
context_providers=[background_provider],
)
session = parent_agent.create_session()
Yönergelerini değiştirmek için instructions= öğesini BackgroundAgentsProvider öğesine geçirin. Biçimlendirilmiş alt aracı listesinin yer alması gereken yere {background_agents} ekleyin.
wait_timeout_seconds, background_agents_wait_for_first_completion için yapılan her çağrının ne kadar bekleyeceğini ayarlar. Pozitif bir tamsayı olmalı ve varsayılan olarak 300 saniye olmalıdır. Zaman aşımı süresi dolarsa, araç normal biçimde döner ve üst sürecin onu yeniden çağırabilmesi için görevleri çalışır durumda bırakır.
Uyarı
Bu sayfada açıklanan paketlenmiş arka plan aracısı sağlayıcısı şu anda Go'da kullanılamıyor.
Görev yaşam döngüsü
Sağlayıcı, .NET ve Python'da aynı modele yönelik araçları sunar:
| Araç | Yaşam döngüsü eylemi |
|---|---|
background_agents_start_task |
Adlandırılmış bir ajan üzerinde engellemeyen bir görev başlatın ve onun tam sayı görev kimliğini döndürün. |
background_agents_wait_for_first_completion |
Sağlanan kümedeki ilk görev terminal durumuna ulaşana kadar bekleyin. |
background_agents_get_task_results |
Tamamlanan metni, hata iletisini veya geçerli durumu döndürür. |
background_agents_get_all_tasks |
Kimlikleri, durumları, aracı adlarını ve açıklamaları listeleyin. |
background_agents_continue_task |
Bir görev tamamlandıktan veya başarısız olduktan sonra mevcut alt oturumda takip girdisini çalıştırın. |
background_agents_clear_completed_task |
Bir terminal görevini kaldırın ve alt oturumunu serbest bırakın. |
Tipik bir üst ajan-alt ajan dizilimi şöyledir:
- Beklemeden önce her bağımsız görevi başlatın, böylece görevler eşzamanlı olarak çalışır.
- İlk tamamlanmayı bekleyin, bu sonucu alın ve hiçbir görev çalışmayana kadar yineleyin.
- Devam çalışmasının mevcut konuşma bağlamına ihtiyaç duyduğunda, tamamlanmış veya başarısız olmuş bir göreve devam edin.
- Sonuçlarını aldıktan sonra, sürdürüleceklerse hariç terminal görevlerini temizleyin.
Görev durumu , running, completedveya failedşeklindedirlost. Bir görev, işlemdeki görev tutamacına veya alt oturuma erişilemediğinde, örneğin bir işlemin yeniden başlatılmasından ya da oturumun geri yüklenmesinden sonra kaybolur. Serileştirilebilir görev meta verileri ana oturumda kalabilir, ancak devam eden işlemler ve alt oturum işaretçileri bu sınırı aşamaz.
Sağlayıcıda iptal aracı yoktur. Görevleri temizlemeden önce çalışan görevlerin terminal durumuna ulaşmasına izin verin.
Turlar boyunca aynı ana oturumu yeniden kullanın. Her görev ayrılmış bir alt oturum alır. Bir terminal görevini sürdürmek, ilgili alt oturumu yeniden kullanır; temizlemek ise görev meta verilerini kaldırır ve alt oturum tutamacını serbest bırakır.
Görev sonuçları üst öğeye metin olarak döndürülür. Sağlayıcı, bir alt ajanın yapılandırılmış araç onay isteğini üst ajan üzerinden geri iletmez; bu nedenle alt ajanları, etkileşimli onay gerektirmeden devredilen işi tamamlayacak veya onaylarını alt ajanı barındıran ana bilgisayar içinde işleyecek şekilde yapılandırın.
Ana bilgisayardan bir üst oturumu serbest bırakma
Uyarı
Ana bilgisayar tarafında arka plan aracısı oturumunun serbest bırakılması şu anda .NET'te desteklenmemektedir.
Ana bilgisayar bir üst oturumu çıkarır veya atarsa, sağlayıcının işlem içi görevini ve alt oturum tanıtıcılarını finally bloğunda serbest bırakın:
session = parent_agent.create_session()
try:
await parent_agent.run("Coordinate the research.", session=session)
finally:
await background_provider.release_session(session)
release_session(session, *, cancel_running=True, timeout=30.0), modele yönelik bir araç değil, ana bilgisayar taraflı bir yaşam döngüsü API'sidir. Varsayılan olarak, alt görevlerin çalıştırılmasını iptal eder ve üst oturum için tüm çalışma zamanı durumunu yayınlamadan önce iptal için 30 saniyeye kadar bekler. Görevler çalışırken yayını reddetmek için cancel_running=False değerini, süresiz beklemek için ise timeout=None değerini ayarlayın.
Buna karşılık, background_agents_clear_completed_task modelin konuşma sırasında bir terminal görevini ve alt oturumunu kaldırmasına izin verir. Çalışmakta olan görevleri reddeder ve ana bilgisayar tarafındaki ana oturum sonlandırmasının yerini almaz.
Uyarı
Ana bilgisayar tarafı arka plan aracısı oturum sürümü şu anda Go'da kullanılamıyor.
Otomatik beklemeyi el ile ekleme
Manuel olarak oluşturulan üst öğeyi LoopAgent ile sarın.
BackgroundTaskCompletionLoopEvaluator, yalnızca bir görev Running durumunda kaldığı sürece devam eder:
AIAgent loopingParent = new LoopAgent(
parentAgent,
new BackgroundTaskCompletionLoopEvaluator(),
new LoopAgentOptions { MaxIterations = 10 });
Değerlendirici, tamamlanan, başarısız olan ve kaybolan görevlerde durur.
AgentLoopMiddleware öğesini normal üst öğeye ekleyin ve arka plan görevi koşulunu sonraki ileti yardımcısıyla eşleştirin:
from agent_framework import (
Agent,
AgentLoopMiddleware,
background_tasks_running,
background_tasks_running_message,
)
parent_agent = Agent(
client=client,
context_providers=[background_provider],
middleware=[
AgentLoopMiddleware(
background_tasks_running(),
next_message=background_tasks_running_message,
max_iterations=10,
)
],
)
Koşul yalnızca kalıcı görev durumu hala çalışan bir görevi bildirirken devam eder.
Otomatik arka plan görev döngüsü tümleştirmesi şu anda Go'da kullanılamıyor.
Harness Agent ile arka plan ajanlarını kullanma
Harness Agent’in varsayılan planlama, bellek, onay ve gözlemlenebilirlik işlem hattını da istiyorsanız bu kurulumu kullanın.
HarnessAgentOptions.BackgroundAgentsayarlayın. Üst süreç, devredilen iş çalışmayı bırakana kadar çalışmaya devam etmeliyse tamamlama değerlendiricisini ekleyin:
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
var options = new HarnessAgentOptions
{
Name = "research-coordinator",
BackgroundAgents = [webSearchAgent, codeAnalysisAgent],
LoopEvaluators = [new BackgroundTaskCompletionLoopEvaluator()],
LoopAgentOptions = new LoopAgentOptions { MaxIterations = 10 },
};
HarnessAgent parentAgent = chatClient.AsHarnessAgent(options);
// Equivalent construction: new HarnessAgent(chatClient, options)
AgentSession session = await parentAgent.CreateSessionAsync();
Sağlayıcı yönergelerini ve aracı listesi biçimlendirmesini özelleştirmek için kullanın HarnessAgentOptions.BackgroundAgentsProviderOptions .
LoopEvaluators öğesinin atlanması, otomatik olarak yeniden çağrılmadan arka plan devrinin kullanılabilir kalmasını sağlar.
background_agents öğesini create_harness_agent hedefine sağlayın. Üst öğe otomatik olarak beklemesi gerektiğinde bunu sınırlanmış bir döngüyle eşleştirin:
from agent_framework import (
background_tasks_running,
background_tasks_running_message,
create_harness_agent,
)
parent_agent = create_harness_agent(
client=client,
name="research-coordinator",
background_agents=[web_search_agent, code_analysis_agent],
background_agents_wait_timeout_seconds=30,
loop_should_continue=background_tasks_running(),
loop_next_message=background_tasks_running_message,
loop_max_iterations=10,
)
session = parent_agent.create_session()
Sağlayıcı yönergelerini değiştirmek için kullanın background_agents_instructions .
background_agents_wait_timeout_seconds, BackgroundAgentsProvider üzerinde wait_timeout_seconds ile aynı sınırlı beklemeyi yapılandırır. Python harness’i, araçların otomatik onayına yönelik ara katmanı varsayılan olarak etkinleştirir; bu nedenle her çalıştırmada session parametresini geçin.
Uyarı
Harness Agent arka plan yetki devri şu anda Go'da kullanılamamaktadır.
Güvenlik konuları
Yalnızca güvendiğiniz alt aracıları kaydedin. Üst öğe, onlara özel ya da güvenilir olmayan bir bağlamdan türetilmiş metin gönderebilir ve elde edilen sonuçlar yeniden üst öğenin bağlamına eklenir. Ele geçirilmiş bir alt bileşen, devredilen girdiyi dışarı sızdırabilir veya dolaylı istem enjeksiyonu içeriği döndürebilir.