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.
A háttérügynökök lehetővé teszik, hogy a szülőügynök független feladatokat delegáljon nevesített gyermekügynököknek. Minden tevékenység párhuzamosan fut a saját gyermekügynök-munkamenetében, míg a szülő megtart egy tevékenységazonosítót, amellyel várakozhat, lekérheti az eredményeket, folytathatja a munkát, vagy felengedheti a feladatot.
Important
A háttérügynökök kísérletiek.
A háttérügynökök eltérnek a háttérválaszoktól. A háttérválasz egy szolgáltatói kérést jelöl, amelyet az alkalmazás lekérdez vagy folytat. Egy háttérügynök-feladat meghív egy másik Agent Framework-ügynököt, majd később visszaadja annak szöveges eredményét a szülőfolyamatnak.
Háttérügynökök manuális beállítása
Minden gyermekügynöknek egyedi névvel kell rendelkeznie. A gyermekügynököknek célzott utasításokat és csak a delegált szerepkörükhöz szükséges eszközöket kell megadniuk.
Importáljon BackgroundAgentsProvider elemet, és adja hozzá egy normál ügynökhöz a(z) ChatClientAgentOptions.AIContextProviders használatával:
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 testre szabja a szolgáltató utasításait és az ügynöklista formázását.
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()
Adja át a(z) instructions= elemet a(z) BackgroundAgentsProvider számára az utasításainak lecseréléséhez. Szúrja be a(z) {background_agents} elemet oda, ahol az alügynökök formázott listájának meg kell jelennie.
wait_timeout_seconds beállítja, hogy a(z) background_agents_wait_for_first_completion minden egyes hívása mennyi ideig várjon. Pozitív egész számnak kell lennie, és alapértelmezés szerint 300 másodpercig. Ha az időtúllépés lejár, az eszköz normál módon tér vissza, és hagyja futni a feladatokat, így a szülő újra meghívhatja.
Megjegyzés:
Az ezen a lapon ismertetett csomagolt háttérügynök-szolgáltató jelenleg nem érhető el a Go-ban.
Tevékenység életciklusa
A szolgáltató ugyanazokat, a modell felé irányuló eszközöket teszi elérhetővé a .NET és a Python esetében:
| Eszköz | Életciklus-művelet |
|---|---|
background_agents_start_task |
Elindít egy nem blokkoló feladatot egy elnevezett ügynökön, és visszaadja a feladat egész szám típusú azonosítóját. |
background_agents_wait_for_first_completion |
Várjon, amíg a megadott halmaz első feladata végállapotot ér el. |
background_agents_get_task_results |
Kész szöveget, hibaüzenetet vagy aktuális állapotot ad vissza. |
background_agents_get_all_tasks |
Azonosítók, állapotok, ügynöknevek és leírások listázása. |
background_agents_continue_task |
Futtassa a nyomon követési bemenetet a meglévő gyermek munkamenetben, miután egy feladat befejeződött vagy meghiúsult. |
background_agents_clear_completed_task |
Távolítsa el a terminálfeladatot, és engedje fel a gyermek munkamenetét. |
Egy tipikus szülő-ügynök szekvencia a következő:
- Várakozás előtt indítsa el az összes független tevékenységet, így a tevékenységek párhuzamosan futnak.
- Várja meg az elsőként befejeződő feladatot, kérje le annak eredményét, és ismételje ezt addig, amíg nem fut egyetlen feladat sem.
- Ha az utómunkának szüksége van a meglévő beszélgetési környezetére, folytassa a befejezett vagy sikertelen feladatokat.
- Törölje a terminálfeladatokat az eredmények lekérése után, hacsak nem folytatja őket.
A tevékenység állapota running, completedfailedvagy lost. Egy feladat elveszik, ha a folyamatban lévő feladatkezelője vagy a gyermek munkamenete nem érhető el, például a folyamat újraindítása vagy a munkamenet visszaállítása után. A szerializálható tevékenység metaadatai megmaradhatnak a szülő munkamenetben, de a repülés közbeni munka és a gyermekmunkamenet-kezelők nem élik túl ezt a határt.
Nincs lemondási eszköz a szolgáltatóban. Hagyja, hogy a futó feladatok végállapotba kerüljenek, mielőtt törli őket.
Ugyanazt a szülő munkamenetet használja újra a váltások között. Minden tevékenység kap egy dedikált gyermek munkamenetet. Egy terminálfeladat folytatása újrafelhasználja azt a gyermekmunkamenetet; annak törlése eltávolítja a feladat metaadatait, és felszabadítja a gyermekmunkamenet-kezelőt.
A rendszer a feladat eredményeit szövegként adja vissza a szülőnek. A szolgáltató nem továbbítja a gyermekügynök strukturált eszközjóváhagyási kérelmét a szülőügynökön keresztül, ezért a gyermekügynököket úgy konfigurálja, hogy interaktív jóváhagyás nélkül végezzék el a delegált feladatot, vagy a jóváhagyást a gyermekügynök gazdagépén belül kezeljék.
Szülő munkamenet felszabadítása a gazdagépről
Megjegyzés:
A gazdagépoldali háttérügynök-munkamenet felszabadítása jelenleg nem érhető el a .NET-ben.
Amikor a gazda eltávolít vagy elvet egy szülőmunkamenetet, szabadítsa fel a szolgáltató folyamatban lévő feladatának és gyermekmunkamenetének fogópontjait egy finally blokkban:
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) egy gazdagépoldali életciklus API, nem modellalapú eszköz. Alapértelmezés szerint megszakítja a futó gyermekfeladatokat, és akár 30 másodpercig is várakozik a lemondásra, mielőtt a szülő munkamenet összes futásidejű állapotát felszabadítja. Állítsa be cancel_running=False a kiadás elutasítására a tevékenységek futtatása közben, vagy állítsa timeout=None be a határozatlan ideig történő várakozást.
Ezzel szemben a background_agents_clear_completed_task lehetővé teszi, hogy a modell egy terminálfeladatot és annak gyermekmunkamenetét eltávolítsa egy beszélgetés során. Megtagadja a futó feladatok végrehajtását, és nem helyettesíti a gazdagépoldali szülő-munkamenet megszüntetését.
Megjegyzés:
A gazdagépoldali háttérügynök munkamenetének kiadása jelenleg nem érhető el a Go-ban.
Automatikus várakozás manuális hozzáadása
A manuálisan összeállított szülő körbefuttatása a következővel LoopAgent: .
BackgroundTaskCompletionLoopEvaluator csak akkor folytatódik, ha egy tevékenység állapotban Running marad:
AIAgent loopingParent = new LoopAgent(
parentAgent,
new BackgroundTaskCompletionLoopEvaluator(),
new LoopAgentOptions { MaxIterations = 10 });
A kiértékelő leáll a befejezett, a sikertelen és az elveszett tevékenységeknél.
Adja hozzá AgentLoopMiddleware a normál szülőhöz, és párosítsa a háttérfeladat-predikátumot a következő üzenet segédjével:
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,
)
],
)
A predikátum csak addig marad érvényben, amíg a mentett feladatállapot továbbra is futó feladatot jelez.
A háttérfeladat-ciklus automatikus integrációja jelenleg nem támogatott a Go nyelvben.
Háttérügynökök használata a Harness Agenttel
Ezt a beállítást akkor használja, ha a Harness Agent alapértelmezett tervezési, memória-, jóváhagyási és megfigyelési folyamatát is használni szeretné.
Beállítás HarnessAgentOptions.BackgroundAgents. Adja hozzá a befejezési kiértékelőt, amikor a szülőnek futnia kell, amíg a delegált munka már nem fut:
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();
A szolgáltatói utasítások és az ügynöklista formázásának testreszabására használható HarnessAgentOptions.BackgroundAgentsProviderOptions . A(z) LoopEvaluators elhagyása automatikus újbóli meghívás nélkül is elérhetővé teszi a háttérdelegálást.
Adja meg a(z) background_agents elemet a create_harness_agent számára. Ha a szülőnek automatikusan várnia kell, párosítsa egy határolt hurokkal:
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()
A szolgáltató utasításainak lecserélésére használható background_agents_instructions .
background_agents_wait_timeout_seconds ugyanazt a korlátozott várakozást konfigurálja, mint a wait_timeout_secondsBackgroundAgentsProvider esetén. A Python-keretrendszer alapértelmezés szerint engedélyezi az eszközök automatikus jóváhagyását végző köztes szoftvert, ezért minden futtatáskor add meg a session kapcsolót.
Megjegyzés:
A Harness Agent háttérben történő delegálása jelenleg nem érhető el Go esetén.
Biztonsági megfontolások
Csak megbízható gyermekügynököket regisztráljon. A szülő küldhet nekik privát vagy nem megbízható környezetből származó szöveget, és az eredmények visszakerülnek a szülő környezetéhez. A sérült gyermek képes kiszűrni a delegált bemenetet, vagy közvetett gyorsinjektálási tartalmat ad vissza.