Passo 6: Arnês de Agente

Uma estrutura envolvente fornece a um cliente de chat a estrutura de apoio de que um agente precisa para executar tarefas longas, com várias etapas — modos de planeamento/execução, uma lista de tarefas com base na qual planear, compactação de contexto, memória de ficheiros, acesso a ficheiros e aprovação de ferramentas com a opção “não voltar a perguntar”. Em vez de montares essas peças tu próprio, crias um agente de arnês e tiras-as da caixa.

Crie um agente de harness a partir de qualquer IChatClient com o método de extensão AsHarnessAgent. Como um ambiente de execução processa tarefas de forma interativa ao longo de várias etapas, normalmente é controlado através de um ciclo de conversa: mantenha um AgentSession para que o estado do ambiente de execução (plano, itens pendentes e histórico) persista entre interações, leia a instrução seguinte do utilizador e transmita a saída do agente à medida que é 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();
}

O sistema gere o planeamento, o acompanhamento das tarefas pendentes e a persistência do histórico por si, ao longo de toda a conversa. Para uma consola com todas as funcionalidades — com pedidos de aprovação de ferramentas, apresentação do modo e da lista de tarefas, e comandos com barra — consulte a interface de terminal de exemplo.

Tip

Consulte os exemplos de aplicações de teste .NET para ver aplicações completas executáveis.

Crie um agente harness com a fábrica create_harness_agent. Como uma estrutura executa tarefas de forma interativa ao longo de várias etapas, é normalmente gerida através de um ciclo de conversação: mantém uma sessão para que o estado da estrutura (plano, itens pendentes e histórico) persista entre interações, lê a instrução seguinte do utilizador e transmite, em fluxo, a saída do agente à medida que esta é gerada.

from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient

agent = create_harness_agent(
    OpenAIChatClient(model="gpt-4o"),
)

# A session carries the harness state (plan, todos, history) across turns.
session = agent.create_session()

print("Harness agent ready. Type 'exit' to quit.")
while True:
    user_input = input("> ")
    if user_input.strip().lower() in {"exit", "quit"}:
        break

    # Stream this turn's output as the harness plans and works through the request.
    async for chunk in agent.run(user_input, session=session, stream=True):
        if chunk.text:
            print(chunk.text, end="", flush=True)
    print()

O sistema gere o planeamento, o acompanhamento das tarefas pendentes e a persistência do histórico por si, ao longo de toda a conversa. Para uma consola com todas as funcionalidades — com pedidos de aprovação de ferramentas, apresentação do modo e da lista de tarefas, e comandos com barra — consulte a interface de terminal de exemplo.

Tip

Veja os exemplos de harness em Python para aplicações totalmente executáveis.

Note

O suporte da Go para arnês de agente está a chegar em breve. Consulte o repositório Agent Framework Go para o estado mais recente.

Passos seguintes

Vai mais fundo: