Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os agentes de antecedentes permitem que um agente pai delegue tarefas independentes a agentes filhos nomeados. Cada tarefa é executada em simultâneo na sua própria sessão child-agent, enquanto o pai mantém um ID de tarefa que pode usar para esperar, obter resultados, continuar o trabalho ou libertar a tarefa.
Importante
Os agentes de fundo são experimentais.
Agentes de fundo são diferentes das respostas de fundo. Uma resposta em segundo plano representa um pedido de prestador que a candidatura consulta ou retoma. Uma tarefa de agente em segundo plano invoca outro agente do Agent Framework e mais tarde envia o resultado de texto desse agente de volta ao pai.
Configurar manualmente os agentes em segundo plano
Cada agente criança deve ter um nome não vazio e indistinto a maiúsculas minúsculas. Dê aos agentes infantis instruções focadas e apenas as ferramentas necessárias para o seu papel delegado.
Importa BackgroundAgentsProvider e adiciona a um agente normal através ChatClientAgentOptions.AIContextProvidersde:
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 personaliza as instruções do fornecedor e a formatação da lista de agentes.
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()
Passe instructions= para BackgroundAgentsProvider substituir as suas instruções. Inclua {background_agents} onde deve aparecer a lista formatada de agentes infantis.
Observação
O fornecedor de agente de antecedentes incluído descrito nesta página não está atualmente disponível no Go.
Ciclo de vida da tarefa
O fornecedor adiciona as mesmas ferramentas orientadas para modelos em .NET e Python:
| Tool | Ação ao longo do ciclo de vida |
|---|---|
background_agents_start_task |
Inicia uma tarefa não bloqueante num agente nomeado e devolve o ID inteiro da tarefa. |
background_agents_wait_for_first_completion |
Espere até que a primeira tarefa de um conjunto fornecido atinja um estado terminal. |
background_agents_get_task_results |
Devolver mensagem concluída, uma mensagem de falha ou o estado atual. |
background_agents_get_all_tasks |
Liste IDs, estatutos, nomes de agentes e descrições. |
background_agents_continue_task |
Execute o input de seguimento na sessão filho existente após a conclusão ou falha de uma tarefa. |
background_agents_clear_completed_task |
Remova uma tarefa terminal e liberte a sua sessão filha. |
Uma sequência típica pai-agente é:
- Inicia todas as tarefas independentes antes de esperar, para que as tarefas corram em simultâneo.
- Espera pela primeira conclusão, recupera esse resultado e repete até não haver tarefas a correr.
- Continuar uma tarefa concluída ou falhada quando o trabalho de seguimento necessita do contexto de conversa existente.
- Limpar as tarefas terminais após recuperar os resultados, a menos que sejam continuadas.
O estado da tarefa é running, completed, failed, ou lost. Uma tarefa perde-se quando o seu handle de tarefa em processo ou a sua sessão filha não está disponível, como após um reinício de processo ou restauração de sessão. Metadados de tarefas serializáveis podem permanecer na sessão principal, mas o trabalho em tempo real e os handles de sessão filha não sobrevivem a esse limite.
Não existe nenhuma ferramenta de cancelamento no fornecedor. Deixe as tarefas em execução atingirem um estado terminal antes de as limpar.
Reutilize a mesma sessão principal entre turnos. Cada tarefa recebe uma sessão dedicada ao filho. Continuar uma tarefa terminal reutiliza essa sessão filha; Limpá-lo remove os metadados da tarefa e liberta o handle da sessão filha.
Os resultados da tarefa são devolvidos ao pai como texto. O fornecedor não faz proxy do pedido estruturado de aprovação de ferramenta da criança através do pai, por isso configura os agentes filhos para completarem o trabalho delegado sem aprovação interativa ou tratam das suas aprovações dentro do anfitrião do agente criança.
Adiciona a espera automática manualmente
Envolva o pai composto manualmente com LoopAgent.
BackgroundTaskCompletionLoopEvaluator Continua apenas enquanto uma tarefa permanece no Running estado:
AIAgent loopingParent = new LoopAgent(
parentAgent,
new BackgroundTaskCompletionLoopEvaluator(),
new LoopAgentOptions { MaxIterations = 10 });
O avaliador para para tarefas concluídas, falhadas e perdidas.
Adicione AgentLoopMiddleware ao pai normal e emparelhe o predicado de tarefa em segundo plano com o seu assistente de próxima mensagem:
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,
)
],
)
O predicado continua apenas enquanto o estado persistente da tarefa ainda reporta uma tarefa em execução.
A integração automática entre o ciclo em segundo plano e tarefas não está atualmente disponível no Go.
Use agentes de fundo com o Harness Agent
Use esta configuração quando também quiser o pipeline padrão de planeamento, memória, aprovação e observabilidade do Harness Agent.
Defina HarnessAgentOptions.BackgroundAgents. Adicione o avaliador de conclusão quando o pai deve continuar a funcionar até que o trabalho delegado deixe de estar a funcionar:
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();
Use HarnessAgentOptions.BackgroundAgentsProviderOptions para personalizar as instruções do fornecedor e a formatação da lista de agentes. Omitir LoopEvaluators mantém a delegação em segundo plano disponível sem reinvocação automática.
Fornecer background_agents a create_harness_agent. Emparelha-o com um loop limitado quando o pai deve esperar automaticamente:
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()
Use background_agents_instructions para substituir as instruções do fornecedor. O harness Python ativa middleware de aprovação automática de ferramentas por defeito, por isso passa session em cada execução.
Observação
A delegação de antecedentes do Harness Agent não está atualmente disponível no Go.
Considerações de segurança
Regista apenas agentes infantis em quem confias. O pai pode enviar-lhes texto derivado de contexto privado ou não confiável, e os seus resultados são adicionados novamente ao contexto do pai. Uma criança comprometida pode exfiltrar a entrada delegada ou devolver conteúdo indireto de injeção de prompt.