Bakgrundsagenter

Bakgrundsagenter låter en överordnad agent delegera oberoende uppgifter till namngivna underordnade agenter. Varje aktivitet körs samtidigt i sin egen underordnade agentsession, medan den överordnade har ett aktivitets-ID som den kan använda för att vänta, hämta resultat, fortsätta arbetet eller släppa uppgiften.

Important

Bakgrundsagenter är experimentella.

Bakgrundsagenter skiljer sig från bakgrundssvar. Ett bakgrundssvar representerar en providerbegäran som programmet avsöker eller återupptar. En bakgrundsagentaktivitet anropar en annan Agent Framework-agent och matar senare tillbaka agentens textresultat till den överordnade agenten.

Konfigurera bakgrundsagenter manuellt

Varje underordnad agent måste ha ett okänt, skiftlägesokänsligt unikt namn. Ge underordnade agenter fokuserade instruktioner och endast de verktyg som behövs för deras delegerade roll.

Importera BackgroundAgentsProvider och lägg till den i en vanlig agent via 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 anpassar providerinstruktionerna och agentlistans formatering.

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()

Skicka instructions= till för BackgroundAgentsProvider att ersätta dess instruktioner. Ta med {background_agents} den formaterade underordnade agentlistan.

Anmärkning

Den paketerade bakgrundsagentprovidern som beskrivs på den här sidan är för närvarande inte tillgänglig i Go.

Aktivitetslivscykel

Providern lägger till samma modellinriktade verktyg i .NET och Python:

Verktyg Livscykelåtgärd
background_agents_start_task Starta en icke-blockerande aktivitet på en namngiven agent och returnera dess heltalsaktivitets-ID.
background_agents_wait_for_first_completion Vänta tills den första aktiviteten i en angiven uppsättning når ett terminaltillstånd.
background_agents_get_task_results Returnera slutförd text, ett felmeddelande eller aktuell status.
background_agents_get_all_tasks Lista ID:er, statusar, agentnamn och beskrivningar.
background_agents_continue_task Kör uppföljningsindata i den befintliga underordnade sessionen när en aktivitet har slutförts eller misslyckas.
background_agents_clear_completed_task Ta bort en terminalaktivitet och släpp dess underordnade session.

En typisk sekvens med överordnad agent är:

  1. Starta varje oberoende aktivitet innan du väntar, så att aktiviteterna körs samtidigt.
  2. Vänta tills det första slutförts, hämta resultatet och upprepa tills inga aktiviteter körs.
  3. Fortsätt med en slutförd eller misslyckad uppgift när uppföljningsarbetet behöver sin befintliga konversationskontext.
  4. Rensa terminaluppgifter när de har hämtat sina resultat såvida de inte kommer att fortsätta.

Uppgiftsstatus är running, completed, failedeller lost. En uppgift går förlorad när dess pågående uppgiftshandtag eller underordnade session inte är tillgänglig, till exempel efter en processomstart eller sessionsåterställning. Serialiserbara uppgiftsmetadata kan finnas kvar i den överordnade sessionen, men handtagen för arbete under flygning och underordnad session överlever inte den gränsen.

Det finns inget avbokningsverktyg i providern. Låt aktiviteter som körs nå ett terminaltillstånd innan du rensar dem.

Återanvänd samma överordnade session mellan svängar. Varje uppgift får en dedikerad underordnad session. Om du fortsätter med en terminalaktivitet återanvänds den underordnade sessionen. rensar den tar bort uppgiftsmetadata och släpper handtaget för den underordnade sessionen.

Aktivitetsresultat returneras till den överordnade som text. Providern proxyar inte ett underordnat barns begäran om strukturerat verktygsgodkännande tillbaka via den överordnade, så konfigurera underordnade agenter för att slutföra delegerat arbete utan interaktivt godkännande eller hantera deras godkännanden inuti den underordnade agentvärden.

Lägg till automatisk väntan manuellt

Omslut den manuellt sammansatta överordnade med LoopAgent. BackgroundTaskCompletionLoopEvaluator fortsätter bara medan en uppgift förblir i tillståndet Running :

AIAgent loopingParent = new LoopAgent(
    parentAgent,
    new BackgroundTaskCompletionLoopEvaluator(),
    new LoopAgentOptions { MaxIterations = 10 });

Utvärderaren stoppas för slutförda, misslyckade och förlorade uppgifter.

Lägg till AgentLoopMiddleware det vanliga överordnade objektet och koppla ihop predikatet för bakgrundsaktiviteten med hjälpen nästa meddelande:

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,
        )
    ],
)

Predikatet fortsätter bara medan det beständiga uppgiftstillståndet fortfarande rapporterar en aktivitet som körs.

Automatisk bakgrundsaktivitetsloopintegrering är för närvarande inte tillgänglig i Go.

Använda bakgrundsagenter med Harness Agent

Använd den här konfigurationen när du också vill ha Harness-agentens standardpipeline för planering, minne, godkännande och observerbarhet.

Ange HarnessAgentOptions.BackgroundAgents. Lägg till slutförandeutvärderingen när den överordnade ska fortsätta att köras tills delegerat arbete inte längre körs:

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();

Använd HarnessAgentOptions.BackgroundAgentsProviderOptions för att anpassa providerinstruktioner och agentlistformatering. Om du utelämnar LoopEvaluators blir bakgrundsdelegeringen tillgänglig utan automatisk återanrop.

Ange background_agents till create_harness_agent. Koppla ihop den med en begränsad loop när den överordnade ska vänta automatiskt:

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()

Använd background_agents_instructions för att ersätta providerinstruktionerna. Med Python-sele kan verktyget automatiskt godkänna mellanprogram som standard, så skicka session vidare varje körning.

Anmärkning

Stöd för agentbakgrundsdelegering är för närvarande inte tillgängligt i Go.

Säkerhetsfrågor

Registrera endast underordnade agenter som du litar på. Den överordnade kan skicka text som härletts från privat eller obetrodd kontext och deras resultat läggs tillbaka till den överordnade kontexten. Ett komprometterat underordnat objekt kan exfiltera delegerade indata eller returnera indirekt prompt-injection-innehåll.

Nästa steg

Gå djupare