Agent Harness

Ett agentramverk är det körningsramverk som förvandlar en språkmodell till en agent som kan utföra uppgifter. Den driver modell- och verktygsanrop, hanterar konversationstillstånd och kontext, tillämpar godkännandeprinciper och kan hålla agenten igång med en uppgift i flera steg.

Agent Framework tillhandahåller en åsiktsbaserad, batteribaserad sele för forskning, kodning, dataanalys och annat långvarigt arbete. Du tillhandahåller en chattklient och anpassar endast de funktioner som programmet behöver.

Architecture

Harness sätter samman befintliga byggblock i Agent Framework i stället för att definiera en separat agentkörningsmiljö:

  1. Chattklient – ansluter agenten till en modell.
  2. Chat pipeline — lägger till funktionsanrop, meddelandeinjektion, beständig lagring av historik per tjänstanrop och valfri kompaktering.
  3. Agent- och kontextleverantörer — lägg till sessionsspecifika instruktioner, verktyg, minne, att göra-status, driftlägen och valfria funktioner.
  4. Mellanprogramvara och dekoratörer – lägg till hantering av godkännanden, observabilitet och valfria begränsade loopar.
  5. Program-UX – strömmar svar, visar förlopp och samlar in indata, till exempel godkännanden av verktyg.

Det resulterande objektet är fortfarande en normal Agent Framework-agent: en HarnessAgent som härleds från AIAgent i .NET eller som Agent returneras av create_harness_agent i Python. Sessionerna använder samma sessions- och kontextproviderabstraktioner som andra agenter.

Kapacitetsmatris för utnyttja

Capability Selens beteende Kanonisk vägledning
Funktionsanrop Aktiverad med en konfigurerbar iterationsgräns per begäran. Funktionsverktyg
Historiklagring per tjänstanrop Bevarar historiken efter varje modellanrop i en verktygsanropskörning. Sessioner
Kompaktering Aktiverad när tokenbegränsningar eller en anpassad strategi anges. Komprimering
Uppgiftsspårning Aktiverad som standard. Planering och att göra-punkter
Agentlägen Planera och köra lägen är aktiverade som standard. Planering och att göra-punkter
Minnes- och filåtkomst Minne för sessionsfiler är aktiverat som standard; delad filåtkomst är valfritt. Kontextprovidrar
Godkännande av verktyg Stående godkännanden och regler för automatiskt godkännande är aktiverade som standard. Godkännande av verktyg
OpenTelemetry Agentobservabilitet är aktiverat som standard. Observerbarhet
Webbsökning Har lagts till som standard där den valda chattklienten stöder den. Webbsökning
Agentkunskaper Aktiverad som standard i .NET; anmäl dig via en provider eller sökvägar i Python. Agentkunskaper
Bakgrundsagenter Valfri parallell delegering till namngivna barnagenter. Bakgrundsagenter
Shell-körning Sammansatt av shell-paketet; Python-fabriken kan koppla ihop den automatiskt. Shell-verktyg
Looping Valfri avgränsad återanropning styrd av utvärderare eller predikat. Agentlooping

Bakgrundsagentdelegering är separat från providerhanterade bakgrundssvar. Bakgrundsagenter kör underagenter för delegerade uppgifter; bakgrundssvar avsöker eller återupptar en leverantörsbegäran med hjälp av en fortsättningstoken.

Skapa en seleagent

Paketet Microsoft.Agents.AI.Harness exponerar HarnessAgent i namnområdet Microsoft.Agents.AI. Skapa en från valfri IChatClient med AsHarnessAgent, eller skapa HarnessAgent direkt:

using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

AIAgent agent = chatClient.AsHarnessAgent();

AgentResponse response = await agent.RunAsync("Plan a weekend trip to Seattle.");
Console.WriteLine(response.Text);

Använd HarnessAgentOptions för att ange driftvägledning på selenivå, agentspecifika instruktioner och funktionsalternativ:

AIAgent agent = chatClient.AsHarnessAgent(new HarnessAgentOptions
{
    Name = "research-agent",
    HarnessInstructions = "Use tools deliberately and report verified results.",
    ChatOptions = new ChatOptions
    {
        Instructions = "You are a research assistant focused on academic sources.",
    },
    MaxContextWindowTokens = 128_000,
    MaxOutputTokens = 16_384,
});

HarnessAgent.DefaultInstructions tillhandahåller standardriktlinjerna för sele. HarnessInstructions visas före ChatOptions.Instructions.

Anpassa sammansättningen

Standardfunktionerna har målalternativ, inklusive DisableTodoProvider, DisableAgentModeProvider, DisableFileMemory, DisableAgentSkillsProvider, DisableWebSearch, DisableToolAutoApproval, DisableOpenTelemetryoch DisableCompaction.

Lägg till anpassade kontextprovidrar med AIContextProviders. Anmäl dig till filåtkomst med FileAccessStore, bakgrundsdelegering med BackgroundAgentsoch loopning med LoopEvaluators.

Skapa en seleagent

create_harness_agent-fabriken returnerar en fullständigt konfigurerad Agent:

from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient

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

session = agent.create_session()
response = await agent.run("Plan a weekend trip to Seattle.", session=session)
print(response.text)

Ange selenivå och agentspecifika instruktioner separat:

agent = create_harness_agent(
    client=client,
    name="research-agent",
    harness_instructions="Use tools deliberately and report verified results.",
    agent_instructions="You are a research assistant focused on academic sources.",
    max_context_window_tokens=128_000,
    max_output_tokens=16_384,
)

DEFAULT_HARNESS_INSTRUCTIONS tillhandahåller standardriktlinjerna för sele. harness_instructions visas före agent_instructions.

Anpassa kompositionen

Inaktivera standardvärden med alternativ som disable_todo, disable_mode, disable_file_memory, disable_web_search, disable_tool_auto_approvaloch disable_compaction.

Ersätt inbyggda leverantörer med todo_provider eller mode_provideroch lägg till providers med context_providers. Kompetenser är valbara via skills_provider eller skills_paths; filåtkomst, bakgrundsagenter, skalverktyg och loopar är också valbara.

Anmärkning

create_harness_agent har släppts. Bakgrundsagenter, filåtkomst och loopning är fortfarande experimentella, och shell-verktygen kommer från förhandsversionspaketet agent-framework-tools .

Anmärkning

En paketerad Go-sele är inte tillgänglig för närvarande. Skapa motsvarande Go-agent-, kontextprovider-, komprimerings- och mellanprogramspaket direkt. Se Agent Framework Go-lagringsplatsen för aktuell support.

Exempel på terminal-UX

Harness stipulerar inget applikationsgränssnitt. Lagringsplatsen innehåller exempelterminalprogram som strömmar utdata, visar todos och det aktuella läget, frågor om godkännande av ytverktyg och tillhandahåller kommandon som /todos, /modeoch /exit.

Important

Dessa konsolprojekt är exempel, inte levererade ramverkskomponenter. Använd dem som körbara exempel eller som utgångspunkt för din egen terminalupplevelse.

.NET-kodexemplets startpunkt är HarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

await HarnessConsole.RunAgentAsync(
    agent,
    userPrompt: "Ask me anything to get started.");

Anpassa exemplet med observatörer, verktygsformaterare, kommandohanterare och HarnessConsoleOptions. Se .NET Harness-exempel.

Python-exemplet använder det Textual-baserade console-paketet vid sidan av Harness-exemplen:

from console import run_agent_async

await run_agent_async(agent)

Anpassa exemplet med observatörer, formaterare, kommandon och gränssnittskomponenter. Se Python Harness-exemplen.

Lagringsplatsen innehåller för närvarande inte något paketerat Go Harness-terminalexempel.

Nästa steg

Gå djupare