Passaggio 6: Agent Harness

Un framework di supporto racchiude un client di chat con l'infrastruttura necessaria a un agente per gestire attività lunghe e articolate in più fasi: modalità di pianificazione/esecuzione, una lista di attività su cui basare la pianificazione, compressione del contesto, memoria dei file, accesso ai file e approvazione degli strumenti con opzione «non chiedere più». Invece di assemblare questi pezzi da soli, si crea un agente di cablaggio e li si ottiene fuori scatola.

Crea un agente di harness a partire da qualsiasi IChatClient con il metodo di estensione AsHarnessAgent. Poiché un harness funziona in modo interattivo eseguendo attività in più passaggi, in genere lo si gestisce tramite un ciclo di conversazione: mantenere un AgentSession in modo che lo stato dell'harness (piano, attività da svolgere e cronologia) venga mantenuto tra un turno e l'altro, leggere l'istruzione successiva dell'utente e trasmettere in streaming l'output dell'agente man mano che viene prodotto.

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();
}

L'harness gestisce la pianificazione, il rilevamento di todo e la persistenza della cronologia per l'intera conversazione. Per una console completa, con prompt di approvazione degli strumenti, rendering todo/mode e comandi barra, vedere l'esperienza utente del terminale di esempio.

Tip

Vedere gli esempi di .NET harness per le applicazioni eseguibili complete.

Crea un agente harness con la factory create_harness_agent. Poiché un harness esegue attività in modo interattivo nell’arco di molti passaggi, in genere lo si gestisce tramite un ciclo di conversazione: mantenere una sessione affinché lo stato dell’harness (piano, attività da svolgere e cronologia) persista tra un turno e l’altro, leggere l’istruzione successiva dell’utente e trasmettere in streaming l’output dell’agente man mano che viene generato.

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()

L'harness gestisce la pianificazione, il rilevamento di todo e la persistenza della cronologia per l'intera conversazione. Per una console completa, con prompt di approvazione degli strumenti, rendering todo/mode e comandi barra, vedere l'esperienza utente del terminale di esempio.

Tip

Vedere gli esempi di Python harness per le applicazioni eseguibili complete.

Annotazioni

Il supporto per i cablaggi degli agenti sarà presto disponibile. Vedere il repository di Agent Framework Go per lo stato più aggiornato.

Passaggi successivi

Approfondimento: