Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met achtergrondagents kan een bovenliggende agent onafhankelijke taken delegeren aan benoemde onderliggende agents. Elke taak wordt gelijktijdig uitgevoerd in een eigen onderliggende-agentsessie, terwijl het bovenliggende item een taak-id bewaart die kan worden gebruikt om te wachten, resultaten op te halen, door te gaan met werk of de taak vrij te geven.
Important
Achtergrondagenten zijn experimenteel.
Achtergrondagenten verschillen van achtergrondreacties. Een achtergrondantwoord vertegenwoordigt één provideraanvraag die door de toepassing wordt gepeild of hervat. Een achtergrondagenttaak roept een andere Agent Framework-agent aan en voert later het tekstresultaat van die agent terug naar het bovenliggende item.
Achtergrondagenten handmatig instellen
Elke onderliggende agent moet een niet-hoofdlettergevoelige, niet-hoofdlettergevoelige unieke naam hebben. Geef onderliggende agents gerichte instructies en alleen de hulpprogramma's die nodig zijn voor hun gedelegeerde rol.
Importeer BackgroundAgentsProvider en voeg het toe aan een normale 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 hiermee worden de providerinstructies en de opmaak van de agentlijst aangepast.
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()
Geef instructions= door om BackgroundAgentsProvider de instructies te vervangen. Neem op {background_agents} waar de lijst met opgemaakte onderliggende agents moet worden weergegeven.
Opmerking
De provider voor verpakte achtergrondagent die op deze pagina wordt beschreven, is momenteel niet beschikbaar in Go.
Levenscyclus van taken
De provider voegt dezelfde modelgerichte hulpprogramma's toe in .NET en Python:
| Tool | Levenscyclusactie |
|---|---|
background_agents_start_task |
Start een niet-blokkeringstaak op een benoemde agent en retourneer de taak-id van het gehele getal. |
background_agents_wait_for_first_completion |
Wacht totdat de eerste taak in een opgegeven set de terminalstatus bereikt. |
background_agents_get_task_results |
Retourneer voltooide tekst, een foutbericht of de huidige status. |
background_agents_get_all_tasks |
Lijst-id's, statussen, agentnamen en beschrijvingen. |
background_agents_continue_task |
Voer opvolgende invoer uit in de bestaande onderliggende sessie nadat een taak is voltooid of mislukt. |
background_agents_clear_completed_task |
Verwijder een terminaltaak en laat de onderliggende sessie los. |
Een typische reeks bovenliggende agents is:
- Start elke onafhankelijke taak voordat u wacht, zodat de taken gelijktijdig worden uitgevoerd.
- Wacht tot de eerste voltooiing is voltooid, haal dat resultaat op en herhaal dit totdat er geen taken worden uitgevoerd.
- Ga door met een voltooide of mislukte taak wanneer het opvolgen van werk de bestaande gesprekscontext nodig heeft.
- Wis terminaltaken na het ophalen van de resultaten, tenzij ze worden voortgezet.
Taakstatus isrunning, completed, of failedlost. Een taak gaat verloren wanneer de in-process taakgreep of onderliggende sessie niet beschikbaar is, bijvoorbeeld nadat een proces opnieuw is opgestart of sessieherstel. Serialiseerbare taakmetagegevens kunnen in de bovenliggende sessie blijven, maar tijdens het werk en de onderliggende sessie-handles blijven deze grens niet overleven.
Er is geen annuleringsprogramma in de provider. Laat actieve taken een terminalstatus bereiken voordat u ze wist.
Gebruik dezelfde bovenliggende sessie om de beurt opnieuw. Elke taak ontvangt een toegewezen onderliggende sessie. Als u doorgaat met een terminaltaak, wordt die onderliggende sessie opnieuw gebruikt; als u deze wist, worden de metagegevens van de taak verwijderd en wordt de onderliggende sessiegreep vrijgegeven.
Taakresultaten worden als tekst naar het bovenliggende item geretourneerd. De provider proxyt niet de gestructureerde goedkeuringsaanvraag van een kind via het bovenliggende hulpprogramma, dus configureer onderliggende agents om gedelegeerd werk zonder interactieve goedkeuring te voltooien of hun goedkeuringen binnen de host van de onderliggende agent af te handelen.
Automatisch wachten handmatig toevoegen
Pak het handmatig samengestelde bovenliggende element terug met LoopAgent.
BackgroundTaskCompletionLoopEvaluator wordt alleen voortgezet terwijl een taak de Running status heeft:
AIAgent loopingParent = new LoopAgent(
parentAgent,
new BackgroundTaskCompletionLoopEvaluator(),
new LoopAgentOptions { MaxIterations = 10 });
De evaluator stopt voor voltooide, mislukte en verloren taken.
Voeg AgentLoopMiddleware toe aan het normale bovenliggende item en koppel het predicaat voor de achtergrondtaak aan de helper van het volgende bericht:
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,
)
],
)
Het predicaat wordt alleen voortgezet terwijl de persistente taakstatus nog steeds een actieve taak rapporteert.
Automatische integratie van achtergrondtaaklussen is momenteel niet beschikbaar in Go.
Achtergrondagents gebruiken met Harness Agent
Gebruik deze installatie wanneer u ook de standaardplanning, het geheugen, de goedkeuring en de waarneembaarheidspijplijn van de Harness-agent wilt gebruiken.
Stel HarnessAgentOptions.BackgroundAgentsin. Voeg de voltooiings evaluator toe wanneer het bovenliggende item actief moet blijven totdat gedelegeerd werk niet meer wordt uitgevoerd:
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();
Hiermee HarnessAgentOptions.BackgroundAgentsProviderOptions kunt u de providerinstructies en de opmaak van de agentlijst aanpassen. Als u LoopEvaluators weglaat, blijft achtergronddelegering beschikbaar zonder automatische aanroep.
Leveren background_agents aan create_harness_agent. Koppel deze aan een gebonden lus wanneer het bovenliggende item automatisch moet wachten:
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()
Gebruik background_agents_instructions dit om de providerinstructies te vervangen. De Python harnas maakt het automatisch goedkeuren van hulpprogramma's standaard mogelijk, dus geef session elke uitvoering door.
Opmerking
Harness Agent-achtergronddelegering is momenteel niet beschikbaar in Go.
Beveiligingsoverwegingen
Registreer alleen onderliggende agents die u vertrouwt. De bovenliggende gebruiker kan tekst verzenden die is afgeleid van een privé- of niet-vertrouwde context en de resultaten worden weer toegevoegd aan de context van het bovenliggende item. Een gecompromitteerd kind kan gedelegeerde invoer exfiltreren of indirecte prompt-injectieinhoud retourneren.