Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Agenti na pozadí umožňují nadřazeným agentům delegovat nezávislé úlohy na pojmenované podřízené agenty. Každá úloha běží souběžně ve své vlastní relaci podřízeného agenta, zatímco nadřazený objekt uchovává ID úlohy, které může použít k čekání, načtení výsledků, pokračování v práci nebo uvolnění úlohy.
Important
Agenti na pozadí jsou experimentální.
Agenti na pozadí se liší od odpovědí na pozadí. Odpověď na pozadí představuje jeden požadavek poskytovatele, který aplikace dotazuje nebo obnoví. Úloha agenta na pozadí vyvolá dalšího agenta Agent Framework a novější kanály, které výsledek textu agenta vrátí do nadřazeného objektu.
Ruční nastavení agentů na pozadí
Každý podřízený agent musí mít nechtěný jedinečný název bez rozlišování malých a malých písmen. Dejte podřízeným agentům pokyny a jenom nástroje potřebné pro jejich delegovanou roli.
Importujte BackgroundAgentsProvider a přidejte ho do běžného agenta prostřednictvím 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 přizpůsobí pokyny zprostředkovatele a formátování seznamu agentů.
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()
Předejte a BackgroundAgentsProvider nahraďte instructions= jeho pokyny. Uveďte {background_agents} , kde by se měl zobrazit formátovaný seznam podřízených agentů.
Note
Poskytovatel zabaleného agenta na pozadí popsaný na této stránce není v současné době dostupný v Go.
Životní cyklus úkolů
Poskytovatel přidá stejné modelem orientované nástroje do .NET a Python:
| nástroj | Akce životního cyklu |
|---|---|
background_agents_start_task |
Spusťte neblokovací úlohu u pojmenovaného agenta a vraťte její CELÉ ČÍSLO ID úlohy. |
background_agents_wait_for_first_completion |
Počkejte, až první úloha v zadané sadě dosáhne stavu terminálu. |
background_agents_get_task_results |
Vrátí dokončený text, chybovou zprávu nebo aktuální stav. |
background_agents_get_all_tasks |
Vypisovat ID, stavy, názvy agentů a popisy |
background_agents_continue_task |
Po dokončení úkolu nebo selhání spusťte v existující podřízené relaci následný vstup. |
background_agents_clear_completed_task |
Odeberte úlohu terminálu a uvolněte podřízenou relaci. |
Typická sekvence nadřazeného agenta je:
- Před čekáním spusťte každou nezávislou úlohu, aby se úlohy spouštěly souběžně.
- Počkejte na první dokončení, načtěte tento výsledek a opakujte, dokud nebudou spuštěné žádné úkoly.
- Pokračujte v dokončeném nebo neúspěšném úkolu, když následná práce potřebuje svůj stávající kontext konverzace.
- Pokud nebudou pokračovat, vymažte terminálové úlohy po načtení jejich výsledků.
Stav úkolu je running, completed, failednebo lost. Úloha se ztratí, když je její zpracování v procesu nebo podřízená relace nedostupná, například po restartování procesu nebo obnovení relace. Metadata serializovatelných úloh můžou zůstat v nadřazené relaci, ale zpracování práce v letu a podřízené relace nepřežijí tuto hranici.
Poskytovatel nemá žádný nástroj pro zrušení. Nechte spuštěné úkoly dosáhnout stavu terminálu, než je vymažete.
Znovu použijte stejnou nadřazenou relaci napříč otočeními. Každý úkol obdrží vyhrazenou podřízenou relaci. Pokračování v terminálové úloze znovu použije podřízenou relaci; vymazáním odebere metadata úlohy a uvolní obslužnou rutinu podřízené relace.
Výsledky úkolů se vrátí do nadřazeného objektu jako text. Zprostředkovatel nezprostředkuje žádost o schválení strukturovaných nástrojů dítěte zpět prostřednictvím nadřazeného objektu, proto nakonfigurujte podřízené agenty tak, aby dokončili delegovanou práci bez interaktivního schvalování nebo zpracovali svá schválení v hostiteli podřízeného agenta.
Ruční přidání automatického čekání
Zabalte ručně složený nadřazený objekt s příponou LoopAgent.
BackgroundTaskCompletionLoopEvaluator pokračuje pouze v době, kdy Running úkol zůstane ve stavu:
AIAgent loopingParent = new LoopAgent(
parentAgent,
new BackgroundTaskCompletionLoopEvaluator(),
new LoopAgentOptions { MaxIterations = 10 });
Vyhodnocovač se zastaví pro dokončené, neúspěšné a ztracené úkoly.
Přidejte AgentLoopMiddleware do běžného nadřazeného objektu a spárujte predikát úlohy na pozadí s pomocnou rutinou další zprávy:
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,
)
],
)
Predikát pokračuje pouze v době, kdy trvalý stav úkolu stále hlásí spuštěnou úlohu.
Automatická integrace smyčky úloh na pozadí není v současné době dostupná v Go.
Použití agentů na pozadí s využitím agenta
Toto nastavení použijte, pokud chcete také použít výchozí plán, paměť, schválení a kanál pozorovatelnosti agenta.
Nastavte HarnessAgentOptions.BackgroundAgents. Přidejte vyhodnocovací funkci dokončení, když má nadřazený objekt běžet, dokud nebude delegovaná práce spuštěná:
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();
Slouží HarnessAgentOptions.BackgroundAgentsProviderOptions k přizpůsobení pokynů zprostředkovatele a formátování seznamu agentů. Vynechání zachová delegování LoopEvaluators na pozadí dostupné bez automatického opětovného vyvolání.
Dodání background_agents do create_harness_agent. Spárujte ho s ohraničenou smyčkou, když by nadřazený objekt měl automaticky čekat:
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()
Slouží background_agents_instructions k nahrazení pokynů zprostředkovatele. Python umožňuje ve výchozím nastavení middleware automatického schvalování nástrojů, takže každé spuštění předejtesession.
Note
Využití delegování na pozadí agenta není v současné době dostupné v Go.
Bezpečnostní aspekty
Zaregistrujte pouze podřízené agenty, kterým důvěřujete. Nadřazený objekt může odeslat text odvozený z soukromého nebo nedůvěryhodného kontextu a výsledky se přidají zpět do kontextu nadřazeného objektu. Ohrožený podřízený objekt může exfiltrovat delegovaný vstup nebo vrátit nepřímý obsah injektáže výzvy.