Agent-Nutzung

Ein Agent-Gerüst ist das Laufzeitgerüst, das ein Sprachmodell in einen Agent verwandelt, der Arbeit ausführen kann. Es steuert Modell- und Toolaufrufe, verwaltet den Unterhaltungszustand und den Kontext, wendet Genehmigungsrichtlinien an und kann den Agent durch eine mehrstufige Aufgabe weiterarbeiten.

Agent Framework bietet einen meinungsvermerkten, batterienbezogenen Gurt für Forschung, Codierung, Datenanalyse und andere langfristige Arbeiten. Sie stellen einen Chatclient bereit und passen nur die Funktionen an, die Ihre Anwendung benötigt.

Architektur

Die "Harness" erstellt vorhandene Agent Framework-Bausteine, anstatt eine separate Agent-Laufzeit zu definieren:

  1. Chatclient – verbindet den Agent mit einem Modell.
  2. Chatpipeline – fügt Funktionsaufrufe, Nachrichteneinfügung, Persistenz pro Dienstanruf und optionale Komprimierung hinzu.
  3. Agent- und Kontextanbieter – Fügen Sie sitzungsbezogene Anweisungen, Tools, Arbeitsspeicher, Todo-Zustand, Betriebsmodi und optionale Funktionen hinzu.
  4. Middleware und Dekorateure – Fügen Sie Genehmigungsbehandlung, Observierbarkeit und optionale gebundene Schleifen hinzu.
  5. Anwendungsux – streamt Antworten, zeigt den Fortschritt an und sammelt Eingaben wie z. B. Toolgenehmigungen.

Das resultierende Objekt bleibt ein normaler Agent Framework-Agent: ein HarnessAgent Agent-Framework, der von AIAgent in .NET abgeleitet wird, oder ein Agent von create_harness_agent Python zurückgegebenes Objekt. Die Sitzungen verwenden die gleichen Sitzungs - und Kontextanbieterabstraktionen wie andere Agents.

Funktionsmatrix

Fähigkeit Nutzungsverhalten Kanonische Anleitung
Funktionsaufruf Aktiviert mit einem konfigurierbaren Iterationslimit pro Anforderung. Funktionale Werkzeuge
Persistenz des Anrufverlaufs pro Dienst Speichert den Verlauf nach jedem Modellaufruf in einer Ausführung mit Toolaufrufen. Sitzungen
Komprimierung Aktiviert, wenn Tokenbeschränkungen oder eine benutzerdefinierte Strategie bereitgestellt werden. Verdichtung
Todo-Nachverfolgung Standardmäßig aktiviert. Planung und Todos
Agentmodi Plan- und Ausführungsmodi sind standardmäßig aktiviert. Planung und Todos
Dateispeicher und Dateizugriff Der Speicher der Sitzungsdatei ist standardmäßig aktiviert. Der Zugriff auf freigegebene Dateien ist opt-in. Kontextanbieter
Toolgenehmigung Ständige Genehmigungen und Regeln für die automatische Genehmigung sind standardmäßig aktiviert. Toolgenehmigung
OpenTelemetry Die Agent-Observability ist standardmäßig aktiviert. Beobachtbarkeit
Websuche Standardmäßig hinzugefügt, wo der ausgewählte Chatclient sie unterstützt. Websuche
Agent-Fähigkeiten Standardmäßig in .NET aktiviert; Melden Sie sich über einen Anbieter oder Pfade in Python an. Agent-Fähigkeiten
Hintergrund-Agents Optionale parallele Delegierung an benannte untergeordnete Agents. Hintergrund-Agents
Shellausführung Zusammengesetzt aus dem Shellpaket; die Python Fabrik kann sie automatisch verkabeln. Shelltools
Schleifen Optionaler gebundener Erneutaufruf, der von Evaluatoren oder Prädikaten gesteuert wird. Agentschleifen

Hintergrund-Agent-Delegierung ist von vom Anbieter verwalteten Hintergrundantworten getrennt. Hintergrund-Agents führen untergeordnete Agents für delegierte Aufgaben aus; Abfragen von Hintergrundantworten oder Fortsetzen einer Anbieteranforderung mithilfe eines Fortsetzungstokens.

Erstellen eines Nutzungs-Agents

Das Microsoft.Agents.AI.Harness Paket wird HarnessAgent im Microsoft.Agents.AI Namespace verfügbar gemacht. Erstellen Sie eins aus einem beliebigen IChatClient Element, AsHarnessAgentoder erstellen HarnessAgent Sie es 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);

Wird verwendet HarnessAgentOptions , um Betriebsanleitungen auf Nutzungsebene, agentspezifische Anweisungen und Featureoptionen festzulegen:

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 stellt die Standardleitfaden für die Gurtzeuge zur Lieferung. HarnessInstructions wird vor ChatOptions.Instructions.

Anpassen der Komposition

Standardfunktionen verfügen über gezielte Optionen, einschließlich DisableTodoProvider, , , DisableAgentModeProvider, DisableFileMemory, DisableAgentSkillsProvider, DisableWebSearch, und DisableToolAutoApprovalDisableOpenTelemetry. DisableCompaction

Hinzufügen von benutzerdefinierten Kontextanbietern mit AIContextProviders. Melden Sie sich an, um den Dateizugriff mit FileAccessStore, die Hintergrunddelegierung mit BackgroundAgentsund schleifen mit LoopEvaluators.

Erstellen eines Nutzungs-Agents

Die create_harness_agent Factory gibt einen vollständig konfigurierten Wert Agentzurück:

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)

Set harness-level and agent-specific instructions 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 stellt die Standardleitfaden für die Gurtzeuge zur Lieferung. harness_instructions wird vor agent_instructions.

Anpassen der Komposition

Standardeinstellungen mit Optionen wie disable_todo, , disable_mode, disable_file_memory, disable_web_search, , disable_tool_auto_approvalund disable_compaction.

Ersetzen Sie integrierte Anbieter durch todo_provider oder mode_provider, und fügen Sie Anbieter durch context_providers. Fähigkeiten sind opt-in durch skills_provider oder skills_paths; Dateizugriff, Hintergrund-Agents, Shell-Tooling und Schleifen sind ebenfalls opt-in.

Note

create_harness_agent wird veröffentlicht. Hintergrund-Agents, Dateizugriff und Schleifenschleifen bleiben experimentell, und Shelltools stammen aus dem Vorabversionspaket agent-framework-tools .

Note

Ein verpacktes Go Harness ist derzeit nicht verfügbar. Verfassen Sie die entsprechenden Go-Agent-, Kontextanbieter-, Komprimierungs- und Middlewarepakete direkt. Aktuelle Unterstützung finden Sie im Agent Framework Go-Repository .

Beispielterminal-UX

Der Harness schreibt keine Anwendungsschnittstelle vor. Das Repository enthält Beispiel-Terminalanwendungen, die die Ausgabe streamen, Todos anzeigen und den aktuellen Modus, Surface Tool-Genehmigungsaufforderungen und Befehle wie /todos, /modeund /exitbereitstellen .

Important

Bei diesen Konsolenprojekten handelt es sich um Beispiele, nicht ausgelieferte Frameworkkomponenten. Verwenden Sie sie als lauffähige Beispiele oder als Ausgangspunkt für Ihre eigene Terminalerfahrung.

Der .NET Beispieleinstiegspunkt lautetHarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

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

Passen Sie das Beispiel mit Beobachtern, Toolformatierern, Befehlshandlern und HarnessConsoleOptions. Sehen Sie sich die Beispiele für .NET Harness an.

Im Python Beispiel wird das textbasierte console Paket neben den Beispielen "Harness" verwendet:

from console import run_agent_async

await run_agent_async(agent)

Passen Sie das Beispiel mit Beobachtern, Formatierern, Befehlen und UI-Komponenten an. Sehen Sie sich die Beispiele für Python Harness an.

Das Repository enthält derzeit kein verpacktes Go Harness-Terminalbeispiel.

Nächste Schritte

Mehr erfahren