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.
Perulangan agen memanggil kembali agen sampai kondisi penyelesaian terpenuhi. Gunakan untuk penyempurnaan berulang, penyelesaian todo, menunggu tugas latar belakang, atau mengevaluasi apakah jawaban memenuhi kriteria eksplisit.
Selalu terikat perulangan otonom. Kondisi penyelesaian dapat gagal, model dapat mengulur, dan evaluator bisa probabilistik.
Important
Perulangan agen bersifat eksperimental.
Menyiapkan perulangan secara manual
Gunakan API komposisi langsung saat Anda ingin mengulang tanpa default Agen Harness lainnya.
Impor jenis perulangan dan bungkus apa pun AIAgent dengan LoopAgent. Maksimum defaultnya adalah 10 pemanggilan agen:
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
AIAgent baseAgent = chatClient.AsAIAgent();
AIAgent agent = new LoopAgent(
baseAgent,
new CompletionMarkerLoopEvaluator("DONE"),
new LoopAgentOptions { MaxIterations = 5 });
Impor AgentLoopMiddleware dan tambahkan ke reguler Agent. Maksimum default adalah 10 eksekusi agen:
from agent_framework import Agent, AgentLoopMiddleware
def needs_more_work(*, last_result, **kwargs):
return "DONE" not in last_result.text
agent = Agent(
client=client,
middleware=[
AgentLoopMiddleware(
needs_more_work,
max_iterations=5,
)
],
)
Predikatnya bisa sinkron atau asinkron. Kembali True untuk melanjutkan, False untuk menghentikan, atau (continue, feedback) meneruskan umpan balik ke iterasi berikutnya.
Nota
Kemampuan perulangan paket yang dijelaskan di halaman ini saat ini tidak tersedia di Go.
Pilih kondisi penyelesaian
LoopAgent menerima satu evaluator atau koleksi yang dipesan:
| Penilai | Berlanjut sementara |
|---|---|
CompletionMarkerLoopEvaluator |
Respons terbaru tidak berisi penanda yang dikonfigurasi. |
TodoCompletionLoopEvaluator |
Terselesaikan TodoProvider masih memiliki item yang tidak lengkap, secara opsional dalam mode agen yang dipilih. |
BackgroundTaskCompletionLoopEvaluator |
Tugas yang diselesaikan BackgroundAgentsProvider masih berjalan. |
AIJudgeLoopEvaluator |
Klien hakim terpisah mengatakan permintaan asli tidak sepenuhnya dijawab. |
DelegateLoopEvaluator |
Panggilan balik Anda mengembalikan LoopEvaluation.Continue(...). |
Ketika beberapa evaluator dikonfigurasi, evaluator berjalan secara berurutan. Evaluator pertama yang meminta iterasi lain memberikan umpan baliknya; perulangan berhenti hanya ketika semua evaluator menolak untuk melanjutkan.
Menggunakan hakim AI
Hakim menerima permintaan asli dan respons agen terbaru. Jika menemukan celah, analisisnya menjadi umpan balik untuk iterasi berikutnya:
var evaluator = new AIJudgeLoopEvaluator(
judgeClient,
new AIJudgeLoopEvaluatorOptions
{
Criteria =
[
"Answer every part of the request.",
"Support conclusions with evidence.",
],
});
AIAgent loopAgent = new LoopAgent(
agent,
evaluator,
new LoopAgentOptions { MaxIterations = 4 });
Hanya gunakan titik akhir hakim yang Anda percayai dengan permintaan asli dan respons yang dihasilkan.
Mengontrol konteks dan output
Secara default, LoopAgent menggunakan kembali satu sesi dan mengirim umpan balik terbaru evaluator pemenang sebagai input berikutnya.
FreshContextPerIteration = true sebaliknya membangun kembali setiap pass dari permintaan asli ditambah log umpan balik agregat dan mengatur ulang atau memulihkan sesi.
Eksekusi non-streaming mengembalikan transkrip agregat secara default. Atur NonStreamingReturnsLastResponseOnly = true untuk mengembalikan respons akhir saja. Streaming selalu memancarkan setiap perulangan dan pesan umpan balik yang terlihat atas nama.
Predikat menerima argumen kata kunci termasuk iteration, , last_result, messages, original_messagessession, agent, progress, dan feedback. Pembantu todos_remaining() dan background_tasks_running() menyediakan kondisi tugas todo dan latar belakang bawaan. Pasangkan dengan todos_remaining_message atau background_tasks_running_message untuk menghasilkan input berikutnya yang ditargetkan.
Menggunakan hakim AI
AgentLoopMiddleware.with_judge membangun perulangan berbasis hakim. Perulangan hakim default ke lima iterasi:
from agent_framework import Agent, AgentLoopMiddleware
loop = AgentLoopMiddleware.with_judge(
judge_client,
criteria=[
"Answer every part of the request.",
"Support conclusions with evidence.",
],
max_iterations=4,
)
agent = Agent(
client=client,
middleware=[loop],
)
Penalaran hakim disalurkan kembali ke agen ketika diperlukan lebih banyak pekerjaan. Hanya gunakan titik akhir hakim yang Anda percayai dengan permintaan asli dan respons yang dihasilkan.
Mengontrol konteks, kemajuan, dan output
Untuk perulangan lanjutan, buat AgentLoopMiddleware secara langsung:
-
record_feedbackmembuat entri kemajuan ringkas setelah setiap perulangan kerja. -
progressmengekspos akumulasi entri ke panggilan balik. -
inject_progress=Truemenambahkan kemajuan ke input perulangan berikutnya. -
fresh_context=Truememulai ulang dari tugas asli dan log kemajuan dan memulihkan sesi terlampir ke rekam jepret pra-perulangannya. -
return_final_only=Truehanya mengembalikan respons terakhir untuk eksekusi non-streaming.
Teruskan max_iterations=None hanya ketika predikat penyelesaian dijamin akan dihentikan.
Kondisi penyelesaian paket dan integrasi hakim yang dijelaskan di halaman ini saat ini tidak tersedia di Go.
Menggunakan perulangan dengan Agen Harness
Gunakan penyiapan Agen Harness saat Anda juga menginginkan riwayat, perencanaan, memori, persetujuan, dan alur pengamatan yang telah dikonfigurasi sebelumnya.
Atur HarnessAgentOptions.LoopEvaluators. Harness berlaku LoopAgent sebagai dekorator agen terluarnya:
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
var options = new HarnessAgentOptions
{
LoopEvaluators =
[
new CompletionMarkerLoopEvaluator("DONE"),
],
LoopAgentOptions = new LoopAgentOptions
{
MaxIterations = 5,
},
};
HarnessAgent agent = chatClient.AsHarnessAgent(options);
// Equivalent construction: new HarnessAgent(chatClient, options)
AgentSession session = await agent.CreateSessionAsync();
Sebuah kosong atau nullLoopEvaluators koleksi meninggalkan harness single-shot.
Persetujuan dan perilaku sesi
LoopAgent berhenti sebelum mengevaluasi kondisi penyelesaiannya saat perulangan mengembalikan permintaan persetujuan alat yang tertunda. Ini mengembalikan permintaan ke pemanggil alih-alih menyembunyikannya di balik iterasi otonom lainnya. Setelah pemanggil memberikan respons persetujuan melalui alur persetujuan alat normal, agen dapat melanjutkan.
LoopAgent tidak menambahkan penanganan persetujuan itu sendiri. Agen Harness menerapkan perulangan di luar ToolApprovalAgent, memungkinkan permintaan persetujuan yang tertunda untuk keluar dari perulangan.
Gunakan kembali hal yang sama AgentSession di seluruh panggilan untuk melanjutkan percakapan. Perulangan perulangan berbagi sesi tersebut secara default. Dengan FreshContextPerIteration = true, LoopAgent mereset atau memulihkan status sesi yang disediakan pemanggil jika didukung. Penyimpanan percakapan milik layanan dapat menyimpan riwayat saat sesi berseri hanya berisi pengidentifikasi percakapan jarak jauh.
Pasokan loop_should_continue ke create_harness_agent; loop_max_iterations default ke 10:
from agent_framework import create_harness_agent
def needs_more_work(*, last_result, **kwargs):
return "DONE" not in last_result.text
agent = create_harness_agent(
client=client,
loop_should_continue=needs_more_work,
loop_max_iterations=5,
)
session = agent.create_session()
loop_next_message menyesuaikan input berikutnya.
loop_should_continueTanpa , pabrik tidak menambahkan perulangan dan mengabaikan argumen perulangan lainnya.
Persetujuan dan perilaku sesi
AgentLoopMiddleware berhenti sebelum mengevaluasi predikat kelanjutannya ketika perulangan mengembalikan permintaan persetujuan alat yang tertunda. Ini mengembalikan permintaan ke pemanggil alih-alih menyembunyikannya di balik iterasi otonom lainnya. Setelah pemanggil memberikan respons persetujuan melalui alur persetujuan alat normal, agen dapat melanjutkan.
AgentLoopMiddleware tidak menambahkan ToolApprovalMiddleware dirinya sendiri. Agen Harness menempatkan perulangan di luar middleware persetujuannya, memungkinkan permintaan persetujuan yang tertunda untuk keluar dari perulangan. Buat dan teruskan setiap Agen Harness yang AgentSession dijalankan saat persetujuan otomatis alat diaktifkan.
Gunakan kembali hal yang sama AgentSession di seluruh panggilan untuk melanjutkan percakapan. Perulangan perulangan berbagi sesi tersebut secara default. Dengan fresh_context=True, middleware memulihkan sesi terlampir ke rekam jepret pra-perulangannya di antara iterasi. Penyimpanan percakapan milik layanan dapat menyimpan riwayat saat sesi berseri hanya berisi pengidentifikasi percakapan jarak jauh.
Nota
Perulangan Agen Harness saat ini tidak tersedia di Go, sehingga persetujuan dan perilaku sesinya tidak berlaku.