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 huvudagent delegera oberoende uppgifter till namngivna underagenter. 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 aktivitet i en bakgrundsagent anropar en annan agent i Agent Framework och skickar senare tillbaka agentens textresultat till den överordnade.
Konfigurera bakgrundsagenter manuellt
Varje underordnad agent måste ha ett okänt, skiftlägesokänsligt unikt namn. Ge underagenter tydliga och fokuserade instruktioner och endast de verktyg som behövs för deras tilldelade 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 BackgroundAgentsProvider för att ersätta dess instruktioner. Infoga {background_agents} där den formaterade listan över underordnade agenter ska visas.
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:
| Tool | 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 efterföljande indata i den befintliga undersessionen efter att en uppgift har slutförts eller misslyckats. |
background_agents_clear_completed_task |
Ta bort en terminalaktivitet och frigör 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 deras resultat har hämtats, om de inte ska fortsätta.
Uppgiftsstatus är running, completed, failed eller 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 pågående uppgifter nå en slutstatus innan du rensar dem.
Återanvänd samma överordnade session mellan svängar. Varje uppgift får en dedikerad undersession. Att fortsätta en terminaluppgift återanvänder den underordnade sessionen; att rensa den tar bort uppgiftsmetadata och frigör handtaget till 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 det manuellt sammansatta överordnade elementet 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 stannar vid slutförda, misslyckade och förlorade uppgifter.
Lägg till AgentLoopMiddleware i den vanliga överordnade noden och para ihop predikatet för bakgrundsuppgiften med dess hjälpfunktion för 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 endast så länge det sparade aktivitetstillståndet fortfarande anger att aktiviteten körs.
Automatisk integrering av loopar för bakgrundsaktiviteter ä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 utvärderaren för slutförande när den överordnade processen ska fortsätta köra tills det delegerade arbetet 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 LoopEvaluators utelämnas är delegering i bakgrunden fortfarande tillgänglig utan att den anropas automatiskt igen.
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. Python-ramverket aktiverar mellanprogramvara för automatisk verktygsgodkänning som standard, så skicka med session vid varje körning.
Anmärkning
Delegering i bakgrunden för Harness Agent är för närvarande inte tillgängligt i Go.
Säkerhetsfrågor
Registrera endast underordnade agenter som du litar på. Föräldern kan skicka dem text som kommer från privat eller icke betrodd kontext, och resultaten läggs tillbaka i förälderns kontext. En komprometterad underordnad komponent kan exfiltrera delegerad indata eller returnera innehåll från indirekt promptinjektion.