Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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ö:
- Chattklient – ansluter agenten till en modell.
- Chat pipeline — lägger till funktionsanrop, meddelandeinjektion, beständig lagring av historik per tjänstanrop och valfri kompaktering.
- Agent- och kontextleverantörer — lägg till sessionsspecifika instruktioner, verktyg, minne, att göra-status, driftlägen och valfria funktioner.
- Mellanprogramvara och dekoratörer – lägg till hantering av godkännanden, observabilitet och valfria begränsade loopar.
- 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.