Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Starta varje oberoende aktivitet innan du väntar, så att aktiviteterna körs samtidigt.
- Vänta tills det första slutförts, hämta resultatet och upprepa tills inga aktiviteter körs.
- Fortsätt med en slutförd eller misslyckad uppgift när uppföljningsarbetet behöver sin befintliga konversationskontext.
- 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.