Agent Harness

Een agent-harnas is de runtime-scaffolding waarmee een taalmodel wordt omgezet in een agent die werk kan uitvoeren. Hiermee worden model- en hulpprogramma-aanroepen aangestuurd, de gespreksstatus en -context beheerd, wordt goedkeuringsbeleid toegepast en kan de agent doorgaan met een taak met meerdere stappen.

Agent Framework biedt een geïndeerd, accu-inbegrepen Harness voor onderzoek, codering, gegevensanalyse en ander langlopend werk. U biedt een chatclient en past alleen de mogelijkheden aan die uw toepassing nodig heeft.

Architecture

De Harness stelt bestaande bouwstenen van het Agent Framework samen in plaats van een afzonderlijke agentruntime te definiëren:

  1. Chatclient : verbindt de agent met een model.
  2. Chatpijplijn : voegt functie-aanroep, berichtinjectie, persistentie per service-oproepgeschiedenis en optionele compressie toe.
  3. Agent- en contextproviders : voeg instructies, hulpprogramma's, geheugen, takenstatus, bedrijfsmodi en optionele mogelijkheden toe.
  4. Middleware en decorators : voeg goedkeuringsafhandeling, waarneembaarheid en optionele gebonden lus toe.
  5. ToepassingS-UX : streamt antwoorden, geeft voortgang weer en verzamelt invoer zoals goedkeuringen van hulpprogramma's.

Het resulterende object blijft een normale Agent Framework-agent: een HarnessAgent agent die is afgeleid van AIAgent in .NET of een Agent geretourneerd door create_harness_agent in Python. De sessies gebruiken dezelfde sessie - en contextproviderabstracties als andere agents.

Mogelijkhedenmatrix gebruiken

Capability Gedrag van harnas Canonieke richtlijnen
Functie aanroepen Ingeschakeld met een configureerbare iteratielimiet per aanvraag. Functiegereedschappen
Persistentie van oproepgeschiedenis per service Behoudt de geschiedenis na elke modelaanroep in een uitvoering voor het aanroepen van hulpprogramma's. Sessies
Verdichting Ingeschakeld wanneer tokenlimieten of een aangepaste strategie worden opgegeven. Compressie
Taken bijhouden Standaard ingeschakeld. Planning en todos
Agentmodi Plan- en uitvoermodi zijn standaard ingeschakeld. Planning en todos
Bestandsgeheugen en bestandstoegang Geheugen van sessiebestand is standaard ingeschakeld; Gedeelde bestandstoegang is opt-in. Contextproviders
Goedkeuring van tools Permanente goedkeuringen en regels voor automatische goedkeuring zijn standaard ingeschakeld. Goedkeuring van hulpprogramma's
OpenTelemetry De waarneembaarheid van agents is standaard ingeschakeld. Observatievermogen
Zoeken op internet Standaard toegevoegd waar de geselecteerde chatclient deze ondersteunt. Zoeken op internet
Agentvaardigheden Standaard ingeschakeld in .NET; meld u aan via een provider of paden in Python. Agentvaardigheden
Achtergrondagenten Optionele parallelle delegering naar benoemde onderliggende agents. Achtergrondagenten
Shell-uitvoering Samengesteld uit het shell-pakket; de Python fabriek kan deze automatisch aan elkaar koppelen. Shell-hulpprogramma's
Looping Optionele gebonden heraanroep die wordt aangestuurd door evaluators of predicaten. Agentlussen

Delegatie van achtergrondagent staat los van door provider beheerde achtergrondreacties. Achtergrondagenten voeren onderliggende agents uit voor gedelegeerde taken; achtergrondantwoorden peilen of één provideraanvraag hervatten met behulp van een vervolgtoken.

Een harness-agent maken

Het Microsoft.Agents.AI.Harness pakket wordt HarnessAgent weergegeven in de Microsoft.Agents.AI naamruimte. Maak er een van met IChatClientAsHarnessAgent, of maak er rechtstreeks een HarnessAgent :

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

Gebruik HarnessAgentOptions deze optie om bedieningsrichtlijnen op harnasniveau, agentspecifieke instructies en functieopties in te stellen:

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 levert de standaard harnasrichtlijnen. HarnessInstructions wordt weergegeven vóór ChatOptions.Instructions.

De samenstelling aanpassen

Standaardmogelijkheden hebben gerichte opties, waaronderDisableTodoProvider, , DisableAgentModeProvider, DisableFileMemory, DisableAgentSkillsProvider, DisableWebSearch, , , DisableToolAutoApproval, en DisableOpenTelemetryDisableCompaction.

Aangepaste contextproviders toevoegen met AIContextProviders. Meld u aan voor bestandstoegang met FileAccessStore, achtergronddelegering met BackgroundAgentsen lus met LoopEvaluators.

Een harness-agent maken

De create_harness_agent fabriek retourneert een volledig geconfigureerde 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)

Stel afzonderlijke instructies op harnasniveau en agentspecifieke instructies in:

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 levert de standaard harnasrichtlijnen. harness_instructions wordt weergegeven vóór agent_instructions.

De samenstelling aanpassen

Standaardwaarden uitschakelen met opties zoals , , , , , en disable_tododisable_mode. disable_file_memorydisable_web_searchdisable_tool_auto_approvaldisable_compaction

Vervang ingebouwde providers door todo_provider of mode_provider, en voeg providers toe door context_providers. Vaardigheden zijn opt-in through skills_provider of skills_paths; bestandstoegang, achtergrondagenten, shell-hulpprogramma's en lussen zijn ook opt-in.

Opmerking

create_harness_agent wordt vrijgegeven. Achtergrondagenten, bestandstoegang en lusing blijven experimenteel en shell-hulpprogramma's zijn afkomstig van het pre-releasepakket agent-framework-tools .

Opmerking

Een verpakte Go Harness is momenteel niet beschikbaar. Stel de bijbehorende Go-agent, contextprovider, compressie en middleware-pakketten rechtstreeks samen. Zie de opslagplaats Agent Framework Go voor de huidige ondersteuning.

Voorbeeld van terminal-UX

De Harness schrijft geen toepassingsinterface voor. De opslagplaats bevat voorbeeldterminaltoepassingen die uitvoer streamen, todos's en de huidige modus weergeven, goedkeuringsprompts voor surface-hulpprogramma's en opdrachten bieden zoals /todos, /modeen /exit.

Important

Deze consoleprojecten zijn voorbeelden, geen frameworkonderdelen die worden verzonden. Gebruik ze als uitvoerbare voorbeelden of als uitgangspunt voor uw eigen terminalervaring.

Het .NET voorbeeldinvoerpunt isHarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

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

Pas het voorbeeld aan met waarnemers, tool formatters, opdrachthandlers en HarnessConsoleOptions. Bekijk de .NET Harness-voorbeelden.

Het Python voorbeeld maakt gebruik van het op Tekst gebaseerde console pakket naast de Harness-voorbeelden:

from console import run_agent_async

await run_agent_async(agent)

Pas het voorbeeld aan met waarnemers, formatters, opdrachten en UI-onderdelen. Bekijk de Python Harness-voorbeelden.

De opslagplaats bevat momenteel geen verpakt Go Harness-terminalvoorbeeld.

Volgende stappen 

Dieper ingaan