Stap 6: Agent Harness

Een harness voorziet een chatclient van de ondersteunende structuur die een agent nodig heeft om lange taken met meerdere stappen af te handelen — plannings- en uitvoeringsmodi, een takenlijst als basis voor de planning, contextcompressie, bestandsopslag, bestandstoegang en goedkeuring voor hulpprogramma’s met een optie ‘niet opnieuw vragen’. In plaats van deze onderdelen zelf te assembleren, maakt u een harnasagent en haalt u ze uit de doos.

Maak een harness-agent uit een willekeurige IChatClient met behulp van de uitbreidingsmethode AsHarnessAgent. Omdat een framework taken interactief over veel stappen afhandelt, stuurt u dit doorgaans aan vanuit een gesprekslus: houd een AgentSession aan, zodat de status van het framework (plan, taken en geschiedenis) tussen beurten behouden blijft, lees de volgende instructie van de gebruiker en stream de uitvoer van de agent terwijl die wordt gegenereerd.

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

Het framework verzorgt de planning, het bijhouden van taken en het opslaan van de geschiedenis voor je gedurende het hele gesprek. Zie de voorbeeldterminal-UX voor een volledig functionele console, met goedkeuringsprompts voor hulpprogramma's, todo/mode rendering en slash-opdrachten.

Tip

Zie de .NET-harnessvoorbeelden voor volledige uitvoerbare toepassingen.

Het volledige voorbeeld maakt een Microsoft Foundry-chatclient, verpakt deze met create_harness_agenten gebruikt één sessie over twee beurten. Het framework voegt planning, to-do bijhouden en comprimeren toe, terwijl het voorbeeld bestandsgeheugen en webzoekopdrachten uitschakelt om gefocust te blijven.

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

De gedeelde sessie behoudt de status van de testharness voor beide aanroepen. Zie de voorbeeldterminal-UX voor een volledig uitgeruste console, met prompts voor goedkeuring van hulpprogramma's, to-do en modusweergave en slash-opdrachten.

Tip

Bekijk het volledige voorbeeld om aan de slag te gaan. Zie de Python-harnessvoorbeelden voor meer patronen.

Opmerking

Go-ondersteuning voor agent-harnas is binnenkort beschikbaar. Zie de opslagplaats Agent Framework Go voor de meest recente status.

Volgende stappen 

Ga dieper in:

  • Agent Harnesses — compactie, lussen, shell en de voorbeeldgebruikerservaring van de terminal
  • Agentvaardigheden : geleidelijk vaardigheden laden vanuit het bestandssysteem