Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Agen latar belakang memungkinkan agen induk mendelegasikan tugas independen ke agen anak bernama. Setiap tugas berjalan bersamaan dalam sesi agen anaknya sendiri, sementara induk menyimpan ID tugas yang dapat digunakan untuk menunggu, mengambil hasil, melanjutkan pekerjaan, atau melepaskan tugas.
Important
Agen latar belakang bersifat eksperimental.
Agen latar belakang berbeda dari respons latar belakang. Respons latar belakang mewakili satu permintaan penyedia yang dijajaki atau dilanjutkan oleh aplikasi. Tugas agen latar belakang memanggil agen Kerangka Kerja Agen lain dan kemudian memberi umpan hasil teks agen tersebut kembali ke induk.
Menyiapkan agen latar belakang secara manual
Setiap agen anak harus memiliki nama unik yang tidak ada dan tidak peka huruf besar/kecil. Berikan instruksi yang berfokus pada agen anak dan hanya alat yang diperlukan untuk peran yang didelegasikan.
Impor BackgroundAgentsProvider dan tambahkan ke agen reguler melalui ChatClientAgentOptions.AIContextProviders:
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 menyesuaikan instruksi penyedia dan pemformatan daftar agen.
from agent_framework import Agent, BackgroundAgentsProvider
background_provider = BackgroundAgentsProvider(
[web_search_agent, code_analysis_agent]
)
parent_agent = Agent(
client=client,
name="research-coordinator",
context_providers=[background_provider],
)
session = parent_agent.create_session()
Teruskan instructions= ke BackgroundAgentsProvider untuk mengganti instruksinya. Sertakan {background_agents} tempat daftar agen anak yang diformat akan muncul.
Nota
Penyedia agen latar belakang paket yang dijelaskan di halaman ini saat ini tidak tersedia di Go.
Siklus hidup tugas
Penyedia menambahkan alat yang menghadap model yang sama di .NET dan Python:
| Alat | Tindakan siklus hidup |
|---|---|
background_agents_start_task |
Mulai tugas nonblocking pada agen bernama dan kembalikan ID tugas bilangan bulatnya. |
background_agents_wait_for_first_completion |
Tunggu hingga tugas pertama dalam set yang disediakan mencapai status terminal. |
background_agents_get_task_results |
Mengembalikan teks lengkap, pesan kegagalan, atau status saat ini. |
background_agents_get_all_tasks |
Mencantumkan ID, status, nama agen, dan deskripsi. |
background_agents_continue_task |
Jalankan input tindak lanjut di sesi anak yang ada setelah tugas selesai atau gagal. |
background_agents_clear_completed_task |
Hapus tugas terminal dan lepaskan sesi turunannya. |
Urutan agen induk yang khas adalah:
- Mulai setiap tugas independen sebelum menunggu, sehingga tugas berjalan bersamaan.
- Tunggu hingga penyelesaian pertama, ambil hasil tersebut, dan ulangi hingga tidak ada tugas yang berjalan.
- Lanjutkan tugas yang telah selesai atau gagal saat pekerjaan tindak lanjut memerlukan konteks percakapan yang ada.
- Hapus tugas terminal setelah mengambil hasilnya kecuali akan dilanjutkan.
Status tugas adalah running, , failedcompleted, atau lost. Tugas menjadi hilang ketika handel tugas dalam proses atau sesi anak tidak tersedia, seperti setelah proses dimulai ulang atau pemulihan sesi. Metadata tugas yang dapat diserialisasikan dapat tetap berada di sesi induk, tetapi handel pekerjaan dalam penerbangan dan sesi anak tidak bertahan dari batas tersebut.
Tidak ada alat pembatalan di penyedia. Biarkan menjalankan tugas mencapai status terminal sebelum menghapusnya.
Gunakan kembali sesi induk yang sama di seluruh giliran. Setiap tugas menerima sesi anak khusus. Melanjutkan tugas terminal menggunakan kembali sesi anak tersebut; menghapusnya menghapus metadata tugas dan merilis handel sesi turunan.
Hasil tugas dikembalikan ke induk sebagai teks. Penyedia tidak mem-proksi permintaan persetujuan alat terstruktur anak kembali melalui induk, jadi konfigurasikan agen anak untuk menyelesaikan pekerjaan yang didelegasikan tanpa persetujuan interaktif atau menangani persetujuan mereka di dalam host agen anak.
Menambahkan menunggu otomatis secara manual
Bungkus induk yang terdiri secara manual dengan LoopAgent.
BackgroundTaskCompletionLoopEvaluator berlanjut hanya saat tugas tetap dalam status Running :
AIAgent loopingParent = new LoopAgent(
parentAgent,
new BackgroundTaskCompletionLoopEvaluator(),
new LoopAgentOptions { MaxIterations = 10 });
Evaluator berhenti untuk tugas yang selesai, gagal, dan hilang.
Tambahkan AgentLoopMiddleware ke induk reguler dan pasangkan predikat tugas latar belakang dengan pembantu pesan berikutnya:
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,
)
],
)
Predikat hanya berlanjut saat status tugas yang bertahan masih melaporkan tugas yang sedang berjalan.
Integrasi perulangan tugas latar belakang otomatis saat ini tidak tersedia di Go.
Menggunakan agen latar belakang dengan Agen Harness
Gunakan penyiapan ini ketika Anda juga menginginkan perencanaan default, memori, persetujuan, dan alur pengamatan Agen Harness.
Atur HarnessAgentOptions.BackgroundAgents. Tambahkan evaluator penyelesaian ketika induk harus terus berjalan hingga pekerjaan yang didelegasikan tidak lagi berjalan:
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();
Gunakan HarnessAgentOptions.BackgroundAgentsProviderOptions untuk menyesuaikan instruksi penyedia dan pemformatan daftar agen.
LoopEvaluators Menghilangkan menjaga delegasi latar belakang tetap tersedia tanpa pemanggilan ulang otomatis.
Pasokan background_agents ke create_harness_agent. Pasangkan dengan perulangan terikat ketika induk harus menunggu secara otomatis:
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],
loop_should_continue=background_tasks_running(),
loop_next_message=background_tasks_running_message,
loop_max_iterations=10,
)
session = parent_agent.create_session()
Gunakan background_agents_instructions untuk mengganti instruksi penyedia. Python harness memungkinkan middleware persetujuan otomatis alat secara default, jadi teruskan session setiap proses.
Nota
Delegasi latar belakang Harness Agent saat ini tidak tersedia di Go.
Pertimbangan keamanan
Hanya daftarkan agen anak yang Anda percayai. Induk dapat mengirimi mereka teks yang berasal dari konteks privat atau tidak tepercaya, dan hasilnya ditambahkan kembali ke konteks induk. Anak yang disusupi dapat menyelundupkan input yang didelegasikan atau mengembalikan konten injeksi prompt tidak langsung.