Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma estrutura envolve um cliente de chat com o arcabouço de que um agente precisa para executar tarefas longas e de várias etapas – modos de planejamento/execução, uma lista de tarefas para orientar o planejamento, compactação de contexto, memória em arquivos, acesso a arquivos e aprovação de ferramentas com a opção não perguntar novamente. Em vez de montar esses componentes por conta própria, você cria uma estrutura de agentes e já recebe tudo pronto.
Crie uma estrutura de agentes de qualquer IChatClient com o método de extensão AsHarnessAgent. Como um orquestrador executa tarefas de forma interativa em várias etapas, normalmente você o controla por meio de um loop de conversa: mantenha um AgentSession para que o estado do orquestrador (plano, tarefas pendentes e histórico) persista entre os turnos, leia a próxima instrução do usuário e transmita a saída do agente à medida que ela for sendo gerada.
using System;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
// chatClient is any IChatClient implementation (Foundry, Azure OpenAI, OpenAI, Anthropic, ...).
AIAgent agent = chatClient.AsHarnessAgent();
// A session carries the harness state (plan, todos, history) across turns.
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine("Harness agent ready. Type 'exit' to quit.");
while (true)
{
Console.Write("> ");
string? input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input) || input.Equals("exit", StringComparison.OrdinalIgnoreCase))
{
break;
}
// Stream this turn's output as the harness plans and works through the request.
await foreach (var update in agent.RunStreamingAsync(input, session))
{
Console.Write(update);
}
Console.WriteLine();
}
A estrutura cuida do planejamento, do acompanhamento de tarefas e da persistência do histórico para você ao longo de toda a conversa. Para obter um console com todos os recursos – com solicitações de aprovação de ferramentas, renderização de listas de tarefas/modos e comandos com barra – consulte a experiência do usuário no terminal de exemplo.
Tip
Consulte os exemplos de harness do .NET com aplicativos completos e executáveis.
O exemplo completo cria um cliente de chat do Microsoft Foundry, encapsula-o com create_harness_agent e reutiliza uma sessão ao longo de duas interações. O arcabouço adiciona planejamento, acompanhamento de tarefas e compactação, enquanto o exemplo desabilita a memória de arquivos e a pesquisa na Web para manter o foco.
import asyncio
from agent_framework import create_harness_agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
async def main() -> None:
agent = create_harness_agent(
client=FoundryChatClient(
project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
model="gpt-6-luna",
credential=AzureCliCredential(),
),
agent_instructions="Help users plan and complete multi-step tasks.",
disable_file_memory=True,
disable_web_search=True,
)
session = agent.create_session()
print(await agent.run("Plan a weekend trip to Seattle.", session=session))
print(await agent.run("Turn that plan into a checklist.", session=session))
if __name__ == "__main__":
asyncio.run(main())
A sessão compartilhada preserva o estado do harness em ambas as chamadas. Para obter um console completo - com prompts de aprovação de ferramentas, to-do e renderização de modo e comandos de barra - consulte o exemplo de UX do terminal.
Tip
Veja o exemplo completo de primeiros passos. Para obter mais padrões, consulte os exemplos de harness do Python.
Note
O suporte em Go para agent harnesses chegará em breve. Consulte o repositório Agent Framework Go para obter o status mais recente.
Próximas Etapas
Vá mais fundo:
- Estruturadas de Agentes – compactação, looping, shell e a experiência do usuário do terminal de exemplo
- Habilidades do agente — carregar progressivamente habilidades a partir do sistema de arquivos