Háttérügynökök

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 Ügynök-keretrendszer-ügynököt, és később a szülőnek adja vissza az ügynök szövegét.

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álja BackgroundAgentsProvider és adja hozzá egy normál ügynökhöz a következővel 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 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]
)

parent_agent = Agent(
    client=client,
    name="research-coordinator",
    context_providers=[background_provider],
)
session = parent_agent.create_session()

Adja meg instructions= az BackgroundAgentsProvider utasításokat a helyére. Adja meg {background_agents} , hogy hol jelenjen meg a formázott gyermekügynök-lista.

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 modellalapú eszközöket adja hozzá .NET és Python:

Eszköz Életciklus-művelet
background_agents_start_task Egy elnevezett ügynök letiltását megszüntető tevékenységet indíthat el, és visszaadja az egész tevékenységazonosítóját.
background_agents_wait_for_first_completion Várjon, amíg a megadott készlet első feladata eléri a terminál állapotát.
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ő:

  1. Várakozás előtt indítsa el az összes független tevékenységet, így a tevékenységek párhuzamosan futnak.
  2. Várja meg az első befejezést, kérje le az eredményt, és ismételje meg, amíg nem futnak a tevékenységek.
  3. Ha az utómunkának szüksége van a meglévő beszélgetési környezetére, folytassa a befejezett vagy sikertelen feladatokat.
  4. 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. A feladatok futtatása a törlés előtt érje el a terminálállapotot.

Használja újra ugyanazt a szülő munkamenetet a különböző fordulókban. Minden tevékenység kap egy dedikált gyermek munkamenetet. A terminálfeladat folytatása újra felhasználja a gyermek munkamenetet; törlésével eltávolítja a feladat metaadatait, és felszabadítja a gyermek-munkamenet leírót.

A rendszer a feladat eredményeit szövegként adja vissza a szülőnek. A szolgáltató nem proxyz egy gyermek strukturált eszköz-jóváhagyási kérését a szülőn keresztül, ezért úgy konfigurálja a gyermekügynököket, hogy interaktív jóváhagyás nélkül végezzék el a delegált munkát, vagy kezeljék a jóváhagyásukat a gyermekügynök-gazdagépen belül.

Automatikus várakozás hozzáadása manuálisan

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 akkor folytatódik, ha a megőrzött tevékenység állapota továbbra is futó tevékenységet jelent.

Az automatikus háttér-tevékenységhurok integrációja jelenleg nem érhető el a Go-ban.

Háttérügynökök használata a Hámügynökkel

Ezt a beállítást akkor használja, ha a Hámügynök alapértelmezett tervezési, memória-, jóváhagyási és megfigyelhetőségi folyamatára is szüksége van.

HarnessAgentOptions.BackgroundAgentsbeállítása. 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 kihagyás LoopEvaluators automatikus újrahívás nélkül is elérhetővé teszi a háttérdelegálást.

Adja meg background_agents a create_harness_agent. 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],
    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 . A Python hám alapértelmezés szerint lehetővé teszi az eszköz automatikus jóváhagyását a köztes szoftverrel, így minden futtatáson továbbadhatósession.

Megjegyzés:

A Hámügynök háttérdelegálása jelenleg nem érhető el a Go-ban.

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.

Következő lépések

Mélyebbre ásás