Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
- Chatclient – verbindet den Agent mit einem Modell.
- Chatpipeline – fügt Funktionsaufrufe, Nachrichteneinfügung, Persistenz pro Dienstanruf und optionale Komprimierung hinzu.
- Agent- und Kontextanbieter – Fügen Sie sitzungsbezogene Anweisungen, Tools, Arbeitsspeicher, Todo-Zustand, Betriebsmodi und optionale Funktionen hinzu.
- Middleware und Dekorateure – Fügen Sie Genehmigungsbehandlung, Observierbarkeit und optionale gebundene Schleifen hinzu.
- 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.