Agenthämt

En agentsel är körningsställningen som omvandlar en språkmodell till en agent som kan utföra arbete. 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 består av befintliga Agent Framework-byggstenar i stället för att definiera en separat agentkörning:

  1. Chattklient – ansluter agenten till en modell.
  2. Chattpipeline – lägger till funktionsanrop, meddelandeinmatning, per tjänst-anropshistorikpersistence och valfri komprimering.
  3. Agent- och kontextproviders – lägg till instruktioner, verktyg, minne, att göra-tillstånd, driftlägen och valfria funktioner.
  4. Mellanprogram och dekoratörer – lägg till godkännandehantering, observerbarhet och valfri begränsad loopning.
  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 Selebeteende Kanonisk vägledning
Funktionsanrop Aktiverad med en konfigurerbar iterationsgräns per begäran. Funktionsverktyg
Per service-anropshistorik beständighet Bevarar historiken efter varje modellanrop i en verktygsanropskörning. Sessioner
Kompaktion Aktiverad när tokenbegränsningar eller en anpassad strategi anges. Komprimering
Att göra-spårning Aktiverad som standard. Planering och todos
Agentlägen Planera och köra lägen är aktiverade som standard. Planering och todos
Filminne och filåtkomst Sessionsfilminne är aktiverat som standard. delad filåtkomst är opt-in. 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 underordnade agenter. Bakgrundsagenter
Shell-körning Sammansatt från shell-paketet; Python fabriken kan kabelansluta den automatiskt. Shell-verktyg
Looping Valfritt begränsat återanrop som drivs av utvärderare eller predikat. Agentlooping

Bakgrundsagentdelegering är separat från providerhanterade bakgrundssvar. Bakgrundsagenter kör underordnade agenter för delegerade uppgifter. bakgrundssvar avsöka eller återuppta en providerbegäran med hjälp av en fortsättningstoken.

Skapa en seleagent

Paketet Microsoft.Agents.AI.Harness exponeras HarnessAgent i Microsoft.Agents.AI namnområdet. 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 kompositionen

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

Fabriken create_harness_agent 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. Färdigheter är opt-in through skills_provider eller skills_paths; filåtkomst, bakgrundsagenter, gränssnittsverktyg och loopning är också opt-in.

Anmärkning

create_harness_agent släpps. 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

Selen förskriver inte något programgrä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.

Den .NET exempelinmatningspunkten ä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 Exempel på utnyttja.

I det Python exemplet används det textbaserade console paketet bredvid Sele-exemplen:

from console import run_agent_async

await run_agent_async(agent)

Anpassa exemplet med observatörer, formaterare, kommandon och gränssnittskomponenter. Se Python Exempel på utnyttja.

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

Nästa steg

Gå djupare