Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Otoczka wyposaża klienta czatu w infrastrukturę, której agent potrzebuje do realizacji długich, wieloetapowych zadań — tryby planowania i wykonywania, listę zadań do planowania, kompaktowanie kontekstu, pamięć opartą na plikach, dostęp do plików oraz zatwierdzanie narzędzi bez ponownego pytania. Zamiast samodzielnie składać te elementy, tworzysz agenta uprzęży i wyprowadzasz je z pudełka.
Utwórz agenta testowego z dowolnego obiektu IChatClient za pomocą metody rozszerzającej AsHarnessAgent. Ponieważ mechanizm interaktywnie realizuje zadania w wielu krokach, zwykle steruje się nim z poziomu pętli konwersacji: zachowaj AgentSession, aby stan mechanizmu (plan, lista zadań i historia) utrzymywał się między turami, odczytaj kolejną instrukcję użytkownika i strumieniuj dane wyjściowe agenta w miarę ich generowania.
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();
}
Mechanizm obsługuje planowanie, śledzenie listy zadań i trwałe przechowywanie historii w trakcie całej rozmowy. Aby skorzystać z pełnej konsoli — z monitami o zatwierdzenie użycia narzędzi, renderowaniem listy zadań i trybów oraz poleceniami z ukośnikiem — zobacz przykładowy interfejs terminala.
Tip
Zobacz przykłady środowiska testowego .NET, aby zapoznać się z kompletnymi, gotowymi do uruchomienia aplikacjami.
Kompletny przykład tworzy klienta czatu Microsoft Foundry, opakowuje go za pomocą create_harness_agent i ponownie używa jednej sesji na dwie tury. Środowisko testowe dodaje planowanie, śledzenie to-do i kompaktowanie, podczas gdy przykład wyłącza pamięć plików i wyszukiwanie w Internecie, aby zachować fokus.
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())
Sesja udostępniona zachowuje stan harness w obu wywołaniach. Pełnofunkcyjną konsolę — z monitami zatwierdzania narzędzi, listą rzeczy do zrobienia i renderowaniem trybu oraz poleceniami ukośnika — znajdziesz w przykładowym terminalowym interfejsie użytkownika.
Tip
Zobacz pełny przykład rozpoczynania pracy. Aby uzyskać więcej wzorców, zobacz przykłady harnessu Pythona.
Tip
Umiejętność agent-framework-builder-python kodowania agenta może pomagać w komponowaniu harnessu i wyborze pakietów. Jest on oddzielony od umiejętności agenta środowiska uruchomieniowego, które pozostają opcjonalną funkcją mechanizmu Python.
Prerequisites
- Przejdź do wersji 1.26 lub nowszej.
- Lokalna kopia robocza repozytorium Agent Framework Go.
- Punkt końcowy projektu Foundry i wdrożenie modelu, skonfigurowane za pomocą
FOUNDRY_PROJECT_ENDPOINTiFOUNDRY_MODEL. - Poświadczenie Azure obsługiwane przez
DefaultAzureCredential, takie jak logowanie do Azure CLI przy użyciuaz login.
Skonfiguruj harness Go
Pakiet agent/harness konfiguruje zwykłego agenta opartego na dostawcy. Przekaż wynik harness.AgentConfig do konstruktora dostawcy:
import (
"context"
"fmt"
"os"
"path/filepath"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/agent/harness"
"github.com/microsoft/agent-framework-go/examples/internal/demo"
"github.com/microsoft/agent-framework-go/message"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
workingDirectory, err := os.Getwd()
if err != nil {
return fmt.Errorf("get working directory: %w", err)
}
cfg, err := harness.AgentConfig(harness.Config{WorkingDirectory: workingDirectory}, agent.Config{
Name: "HarnessAssistant",
Middlewares: []agent.Middleware{logger},
})
if err != nil {
return err
}
a := foundryprovider.NewAgent(
demo.FoundryProjectEndpoint,
demo.FoundryTokenCredential(),
foundryprovider.ModelDeployment(demo.FoundryModel),
foundryprovider.AgentConfig{
Config: cfg,
DisableStoreOutput: true,
Instructions: "Help with software engineering tasks. Use memory and todos to track the current session's work.",
},
)
Wartości domyślne obejmują todos, tryby planowania i wykonywania, pamięć plików izolowaną na sesję, umiejętności, hostowane wyszukiwanie w Internecie, middleware do zatwierdzania narzędzi oraz instrumentację OpenTelemetry. Moduł pomocniczy umożliwia również utrwalanie historii dla każdego wywołania usługi oraz iniekcję komunikatów.
Ten przykładowy zestaw Foundry ustawia DisableStoreOutput: true, aby historia lokalna zarządzała konwersacją. Ustaw DisableWebSearch w harness.Config, jeśli wybrany dostawca lub wdrożenie nie obsługuje hostowanego wyszukiwania w Internecie.
Uruchom kompletny przykład z katalogu głównego repozytorium Go:
go run .\examples\02-agents\harness\step04_composite_harness
Przykład ponownie używa sesji w dwóch turach, obsługuje żądania zatwierdzania narzędzi i otwiera oddzielną sesję w celu zademonstrowania izolacji pamięci. Pamięć pliku jest zachowywana pod agent-file-memory w katalogu roboczym.
Kompaktowanie i pętle są opcjonalne, a nie domyślnymi ustawieniami harnessu Go. Aby uzyskać informacje o granicach konfiguracji i komponentów, zobacz Agent Harness.
Następne kroki
Głębiej:
- Wykorzystanie agentów — kompaktowanie, pętla, powłoka i przykładowy interfejs użytkownika terminalu
- Umiejętności agenta — stopniowe ładowanie umiejętności z systemu plików