Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az ügynök hurkolásával újra meghívhat egy ügynököt, amíg a befejezési feltétel nem teljesül. Iteratív finomításhoz, todo befejezéshez, háttérfeladatokra való várakozáshoz vagy annak kiértékeléséhez, hogy a válasz megfelel-e explicit feltételeknek.
Mindig kötött autonóm hurkok. A befejezési feltétel meghiúsulhat, a modell elakadhat, és a kiértékelő probabilis lehet.
Important
Az ügynökhurkolás kísérleti jellegű.
Hurkok manuális beállítása
A közvetlen összeállítási API-t akkor használja, ha a többi Hámügynök alapértelmezett beállítása nélkül szeretne hurkot készíteni.
Importálja a huroktípusokat, és csomagolja azokat AIAgent a következővel LoopAgent: . Az alapértelmezett maximális érték 10 ügynökhívás:
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
AIAgent baseAgent = chatClient.AsAIAgent();
AIAgent agent = new LoopAgent(
baseAgent,
new CompletionMarkerLoopEvaluator("DONE"),
new LoopAgentOptions { MaxIterations = 5 });
Importálja AgentLoopMiddleware és adja hozzá egy normálhoz Agent. Az alapértelmezett maximum 10 ügynökfuttatás:
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,
)
],
)
A predikátum lehet szinkron vagy aszinkron. Térjen vissza True a folytatáshoz, False a leállításhoz vagy (continue, feedback) a visszajelzés továbbadásához a következő iterációhoz.
Megjegyzés:
Az ezen a lapon ismertetett csomagolt hurkozási funkció jelenleg nem érhető el a Go-ban.
Befejezési feltétel kiválasztása
LoopAgent egy kiértékelőt vagy egy megrendelt gyűjteményt fogad el:
| Értékelő | Folytatódik, amíg |
|---|---|
CompletionMarkerLoopEvaluator |
A legújabb válasz nem tartalmazza a konfigurált jelölőt. |
TodoCompletionLoopEvaluator |
A feloldott TodoProvider elemek továbbra is hiányosak, opcionálisan a kiválasztott ügynök módban. |
BackgroundTaskCompletionLoopEvaluator |
A feloldott BackgroundAgentsProvider feladatok továbbra is futnak. |
AIJudgeLoopEvaluator |
Egy külön bírói ügyfél azt mondja, hogy az eredeti kérelemre nincs teljes válasz. |
DelegateLoopEvaluator |
A visszahívás visszaadja a visszahívást LoopEvaluation.Continue(...). |
Ha több kiértékelő van konfigurálva, azok sorrendben futnak. Az első kiértékelő, aki másik iterációt kér, visszajelzést ad; a hurok csak akkor áll le, ha az összes kiértékelő elutasítja a folytatást.
AI-bíró használata
A bíró megkapja az eredeti kérelmet és a legújabb ügynök választ. Ha rést talál, az elemzés visszajelzést ad a következő iterációhoz:
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 });
Csak olyan bírói végpontot használjon, amelyben megbízik az eredeti kéréssel és a létrehozott válaszsal.
Környezet és kimenet szabályozása
Alapértelmezés szerint újra felhasznál egy munkamenetet, LoopAgent és a nyertes kiértékelő legújabb visszajelzését küldi el a következő bemenetként.
FreshContextPerIteration = true ehelyett újraépíti az eredeti kérés minden egyes pass-át, valamint egy összesített visszajelzési naplót, és visszaállítja vagy visszaállítja a munkamenetet.
A nem streamelt futtatások alapértelmezés szerint összesített átiratot adnak vissza. Állítsa be NonStreamingReturnsLastResponseOnly = true , hogy csak a végső választ adja vissza. A streamelés mindig minden iterációt és minden látható visszajelzési üzenetet bocsát ki.
A predikátum olyan kulcsszóargumentumokat kap, mint a iteration, last_result, messages, original_messages, session, agent, progressés feedback. A segítők todos_remaining() beépített background_tasks_running() teendőket és háttérfeladat-feltételeket biztosítanak. Párosítsa őket egy célzott következő bemenettel todos_remaining_message , vagy background_tasks_running_message hozza létre őket.
AI-bíró használata
AgentLoopMiddleware.with_judge bírói ciklust hoz létre. A bírói hurkok alapértelmezés szerint öt iterációt érnek el:
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],
)
A bíró érvelését vissza kell adni az ügynöknek, ha több munkára van szükség. Csak olyan bírói végpontot használjon, amelyben megbízik az eredeti kéréssel és a létrehozott válaszsal.
Környezet, folyamat és kimenet szabályozása
Speciális hurkok esetén közvetlenül a következőt kell létrehoznia AgentLoopMiddleware :
-
record_feedbackaz egyes munka iterációk után tömör folyamatbejegyzést hoz létre. -
progressa halmozott bejegyzéseket visszahívások számára teszi elérhetővé. -
inject_progress=TrueA következő iteráció bemenetéhez hozzáadja a haladást. -
fresh_context=Trueújraindul az eredeti tevékenységről és a folyamatnaplóról, és visszaállít egy csatolt munkamenetet a ciklus előtti pillanatképére. -
return_final_only=Truecsak a nem streamelt futtatásokra adott utolsó választ adja vissza.
Csak akkor adja át max_iterations=None , ha a befejezési predikátum garantáltan leáll.
Az ezen az oldalon ismertetett csomagolt befejezési feltételek és bírói integráció jelenleg nem érhető el a Go-ban.
Hurkok használata a Hámügynökkel
Használja a Hámügynök beállítását, ha előre konfigurált előzményeit, tervezését, memóriáját, jóváhagyását és megfigyelhetőségi folyamatát is szeretné.
HarnessAgentOptions.LoopEvaluatorsbeállítása. A hám a legkülső ügynök dekorátoraként alkalmazható LoopAgent :
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();
Egy üres vagy nullLoopEvaluators gyűjtemény hagyja el a heveder egyetlen lövés.
Jóváhagyás és munkamenet viselkedése
LoopAgent a befejezési feltétel kiértékelése előtt leáll, amikor egy iteráció függőben lévő eszköz-jóváhagyási kérelmet ad vissza. A kérést a hívónak adja vissza ahelyett, hogy egy másik autonóm iteráció mögé rejtette volna. Miután a hívó a jóváhagyási választ a normál eszközjóváhagyási folyamaton keresztül szolgáltatja, az ügynök folytathatja a munkát.
LoopAgent nem adja hozzá magát a jóváhagyási kezelést. A Hámügynök kívül ToolApprovalAgentalkalmazza a hurkot, lehetővé téve a függőben lévő jóváhagyási kérések számára, hogy kikerüljenek a hurokból.
A beszélgetés folytatásához használja újra ugyanazt AgentSession a hívásokat. A ciklus iterációi alapértelmezés szerint megosztják ezt a munkamenetet.
LoopAgent Ezzel FreshContextPerIteration = truealaphelyzetbe állítja vagy visszaállítja a hívó által megadott munkamenet-állapotot, ahol támogatott. A szolgáltatás tulajdonában lévő beszélgetési tár akkor őrizheti meg az előzményeket, ha a szerializált munkamenet csak távoli beszélgetésazonosítót tartalmaz.
create_harness_agentAz ; loop_should_continueloop_max_iterations alapértelmezett érté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 testre szabja a következő bemenetet.
loop_should_continueNem, a gyár nem ad hozzá hurkot, és figyelmen kívül hagyja a többi hurokargumentumot.
Jóváhagyás és munkamenet viselkedése
AgentLoopMiddleware a folytatási predikátum kiértékelése előtt leáll, amikor egy iteráció függőben lévő eszköz-jóváhagyási kérelmet ad vissza. A kérést a hívónak adja vissza ahelyett, hogy egy másik autonóm iteráció mögé rejtette volna. Miután a hívó a jóváhagyási választ a normál eszközjóváhagyási folyamaton keresztül szolgáltatja, az ügynök folytathatja a munkát.
AgentLoopMiddleware nem adja hozzá ToolApprovalMiddleware magát. A Hámügynök a hurkot a jóváhagyási köztes szoftveren kívül helyezi, lehetővé téve a függőben lévő jóváhagyási kérések számára, hogy kikerüljenek a hurokból. Hozzon létre és adjon át minden AgentSession biztonságiszer-ügynököt, miközben az eszköz automatikus jóváhagyása engedélyezve van.
A beszélgetés folytatásához használja újra ugyanazt AgentSession a hívásokat. A ciklus iterációi alapértelmezés szerint megosztják ezt a munkamenetet. Ezzel fresh_context=Truea közbenső szoftver visszaállítja a csatolt munkamenetet az iterációk közötti ciklus előtti pillanatképére. A szolgáltatás tulajdonában lévő beszélgetési tár akkor őrizheti meg az előzményeket, ha a szerializált munkamenet csak távoli beszélgetésazonosítót tartalmaz.
Megjegyzés:
A Hámügynök hurkolása jelenleg nem érhető el a Go-ban, ezért a jóváhagyás és a munkamenet viselkedése nem érvényes.