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 Harness erweitert einen Chat-Client um die Infrastruktur, die ein Agent benötigt, um lange, mehrstufige Aufgaben zu bearbeiten — Planungs-/Ausführungsmodi, eine To-do-Liste für die Planung, Kontextkomprimierung, Dateispeicherfunktion, Dateizugriff und Tool-Genehmigung mit „Nicht erneut fragen“. Anstatt diese Komponenten selbst zusammenzustellen, erstellen Sie einen Harness-Agent und erhalten sie direkt einsatzbereit mitgeliefert.
Erstellen Sie mit der IChatClient-Erweiterungsmethode einen Harness-Agent aus einem beliebigen AsHarnessAgent. Da ein Harness-Agent Aufgaben über viele Schritte hinweg interaktiv abarbeitet, steuern Sie ihn in der Regel über eine Unterhaltungsschleife: Behalten Sie eine AgentSession bei, damit der Harness-Zustand (Planung, Aufgaben und Verlauf) über die Unterhaltungsrunden hinweg erhalten bleibt, lesen Sie die nächste Anweisung des Benutzers, und streamen Sie die Ausgabe des Agents, während sie erzeugt wird.
using System;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
// chatClient is any IChatClient implementation (Foundry, Azure OpenAI, OpenAI, Anthropic, ...).
AIAgent agent = chatClient.AsHarnessAgent();
// A session carries the harness state (plan, todos, history) across turns.
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine("Harness agent ready. Type 'exit' to quit.");
while (true)
{
Console.Write("> ");
string? input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input) || input.Equals("exit", StringComparison.OrdinalIgnoreCase))
{
break;
}
// Stream this turn's output as the harness plans and works through the request.
await foreach (var update in agent.RunStreamingAsync(input, session))
{
Console.Write(update);
}
Console.WriteLine();
}
Der Harness-Agent übernimmt für Sie die Planung, die Nachverfolgung von Aufgaben und die persistente Speicherung des Verlaufs über die gesamte Unterhaltung hinweg. Eine voll ausgestattete Konsole – mit Prompts zur Toolgenehmigung, Aufgaben-/Modus-Rendering und Schrägstrichbefehlen – finden Sie in der UX des Beispielterminals.
Tip
Sehen Sie sich die .NET-Harness-Beispiele für vollständig ausführbare Anwendungen an.
Das vollständige Beispiel erstellt einen Microsoft Foundry-Chatclient, umschließt ihn mit create_harness_agentund verwendet eine Sitzung über zwei Runden hinweg. Das Harness fügt Planung, To-do-Nachverfolgung und Komprimierung hinzu, während das Beispiel die Dateispeicherfunktion und die Websuche deaktiviert, um den Fokus zu behalten.
import asyncio
from agent_framework import create_harness_agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
async def main() -> None:
agent = create_harness_agent(
client=FoundryChatClient(
project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
model="gpt-6-luna",
credential=AzureCliCredential(),
),
agent_instructions="Help users plan and complete multi-step tasks.",
disable_file_memory=True,
disable_web_search=True,
)
session = agent.create_session()
print(await agent.run("Plan a weekend trip to Seattle.", session=session))
print(await agent.run("Turn that plan into a checklist.", session=session))
if __name__ == "__main__":
asyncio.run(main())
Die freigegebene Session behält den Harness-Status für beide Aufrufe bei. Eine konsole mit vollem Funktionsumfang – mit Eingabeaufforderungen zur Toolgenehmigung, to-do und Modusrendering und Schrägstrichbefehlen – finden Sie in der Beispiel-Terminal-UX.
Tip
Sehen Sie sich das vollständige Beispiel für die ersten Schritte an. Weitere Muster finden Sie in den Python-Harness-Beispielen.
Note
Go-Unterstützung für Agent-Umgebungen wird in Kürze verfügbar sein. Den neuesten Status finden Sie im Agent Framework Go-Repository .
Nächste Schritte
Gehen Sie tiefer:
- Agent-Harnesses – Komprimierung, Schleifen, Shell und die UX des Beispielterminals
- Agent-Fähigkeiten - progressives Laden von Fähigkeiten aus dem Dateisystem