Wykorzystanie agenta

Wykorzystanie agenta to szkielet środowiska uruchomieniowego, który przekształca model językowy w agenta, który może wykonywać pracę. Napędza ona wywołania modelu i narzędzi, zarządza stanem konwersacji i kontekstem, stosuje zasady zatwierdzania i może zachować postęp agenta za pomocą zadania wieloetapowego.

Struktura agenta zapewnia opinię, baterie dołączone do baterii do badań, kodowania, analizy danych i innych długotrwałych prac. Udostępniasz klienta czatu i dostosowujesz tylko możliwości wymagane przez aplikację.

Architecture

Istniejący blok konstrukcyjny platformy Agent Framework jest kompiluje zamiast definiować oddzielne środowisko uruchomieniowe agenta:

  1. Klient czatu — łączy agenta z modelem.
  2. Potok czatu — dodaje wywołanie funkcji, iniekcję komunikatów, trwałość historii wywołań poszczególnych usług i opcjonalną kompaktowanie.
  3. Dostawcy agenta i kontekstu — dodaj instrukcje dotyczące sesji, narzędzia, pamięć, stan wykonania, tryby operacyjne i opcjonalne możliwości.
  4. Oprogramowanie pośredniczące i dekoratory — dodaj obsługę zatwierdzania, obserwowanie i opcjonalne ograniczone pętle.
  5. Interfejs użytkownika aplikacji — przesyła strumieniowo odpowiedzi, wyświetla postęp i zbiera dane wejściowe, takie jak zatwierdzenia narzędzi.

Wynikowy obiekt pozostaje normalnym agentem programu Agent Framework: elementem HarnessAgent pochodzącym z AIAgent .NET lub zwracanym Agent przez create_harness_agent element w Python. Sesje używają tych samych abstrakcji dostawcy sesji i kontekstu , co inni agenci.

Macierz możliwości wykorzystania

Capability Zachowanie uprzęży Wskazówki kanoniczne
Wywołanie funkcji Włączone z konfigurowalnym limitem iteracji dla poszczególnych żądań. Narzędzia funkcji
Trwałość historii wywołań dla usługi Utrwala historię po każdym wywołaniu modelu w przebiegu wywoływania narzędzi. Sesje
Kompakcja Włączone, gdy są dostarczane limity tokenów lub strategia niestandardowa. Zagęszczanie
Śledzenie zadań do wykonania Włączone domyślnie. Planowanie i dozowanie
Tryby agenta Tryby planowania i wykonywania są domyślnie włączone. Planowanie i dozowanie
Pamięć plików i dostęp do plików Pamięć pliku sesji jest domyślnie włączona; dostęp do plików udostępnionych jest opt-in. Dostawcy kontekstu
Zatwierdzanie narzędzi Zatwierdzenia stałe i reguły automatycznego zatwierdzania są domyślnie włączone. Zatwierdzanie narzędzi
OpenTelemetry Możliwość obserwowania agenta jest domyślnie włączona. Obserwowalność
Wyszukiwanie w Internecie Dodano domyślnie, gdzie wybrany klient czatu go obsługuje. Wyszukiwanie w Internecie
Umiejętności agenta Włączone domyślnie w .NET; wyrażasz zgodę na dostawcę lub ścieżki w Python. Umiejętności agenta
Agenci w tle Opcjonalne delegowanie równoległe do nazwanych agentów podrzędnych. Agenci w tle
Wykonywanie poleceń w powłoce Składa się z pakietu powłoki; fabryka Python może automatycznie go podłączać. Narzędzia powłoki
Zapętlanie Opcjonalne ponowne wywołanie powiązane przez ewaluatorów lub predykatów. Pętla agenta

Delegowanie agenta w tle jest oddzielone od odpowiedzi w tle zarządzanych przez dostawcę. Agenci w tle uruchamiają agentów podrzędnych w delegowanych zadaniach; Odpowiedzi w tle sonduje lub wznawiają jedno żądanie dostawcy przy użyciu tokenu kontynuacji.

Tworzenie agenta uprzęży

Pakiet Microsoft.Agents.AI.Harness uwidacznia HarnessAgent w Microsoft.Agents.AI przestrzeni nazw. Utwórz jedną z dowolnych IChatClient z obiektami AsHarnessAgentlub bezpośrednio 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);

Służy HarnessAgentOptions do ustawiania wskazówek operacyjnych na poziomie uprzęży, instrukcji specyficznych dla agenta i opcji funkcji:

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 dostarcza domyślne wskazówki dotyczące uprzęży. HarnessInstructions jest wyświetlany przed ChatOptions.Instructions.

Dostosowywanie kompozycji

Domyślne możliwości mają opcje docelowe, w tym DisableTodoProvider, , DisableAgentModeProvider, DisableFileMemory, DisableAgentSkillsProviderDisableWebSearch, DisableToolAutoApproval, DisableOpenTelemetryi DisableCompaction.

Dodaj niestandardowych dostawców kontekstu za pomocą polecenia AIContextProviders. Zrezygnuj z dostępu do plików za pomocą FileAccessStorefunkcji , delegowania w tle z funkcją BackgroundAgentsi w pętli za pomocą polecenia LoopEvaluators.

Tworzenie agenta uprzęży

Fabryka create_harness_agent zwraca w pełni skonfigurowane polecenie 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)

Ustaw oddzielnie instrukcje dotyczące poziomu uprzęży i agenta:

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 dostarcza domyślne wskazówki dotyczące uprzęży. harness_instructions jest wyświetlany przed agent_instructions.

Dostosowywanie kompozycji

Wyłącz wartości domyślne przy użyciu opcji, takich jak disable_todo, , disable_modedisable_file_memory, disable_web_search, disable_tool_auto_approval, i disable_compaction.

Zastąp wbudowanych dostawców ciągiem todo_provider lub mode_provideri dodaj dostawców za pomocą polecenia context_providers. Umiejętności są opt-in through skills_provider lub skills_paths; dostęp do plików, agenci w tle, narzędzia powłoki i pętla są również opt-in.

Note

create_harness_agent jest zwalniany. Agenci w tle, dostęp do plików i zapętlanie pozostają eksperymentalne, a narzędzia powłoki pochodzą z pakietu wersji wstępnej agent-framework-tools .

Note

Spakowane narzędzie Go Harness nie jest obecnie dostępne. Utwórz bezpośrednio odpowiednie pakiety agenta języka Go, dostawcy kontekstu, kompaktowania i oprogramowania pośredniczącego. Aby uzyskać bieżącą pomoc techniczną, zobacz repozytorium Agent Framework Go .

Przykładowy interfejs użytkownika terminalu

Uprzęża nie określa interfejsu aplikacji. Repozytorium zawiera przykładowe aplikacje terminalowe, które przesyłają strumieniowo dane wyjściowe, wyświetlają todos i bieżący tryb, wyświetlają monity o zatwierdzenie narzędzi i udostępniają polecenia, takie jak /todos, /modei /exit.

Ważna

Te projekty konsoli są przykładami, a nie dostarczanymi składnikami platformy. Użyj ich jako przykładów możliwych do uruchomienia lub jako punktu wyjścia dla własnego środowiska terminalu.

Przykładowy punkt wejścia .NET to HarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

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

Dostosuj przykład za pomocą obserwatorów, formatatorów narzędzi, procedur obsługi poleceń i HarnessConsoleOptions. Zapoznaj się z przykładami .NET Harness.

W przykładzie Python używany jest pakiet tekstowy console obok przykładów wykorzystanie:

from console import run_agent_async

await run_agent_async(agent)

Dostosuj przykład za pomocą obserwatorów, formaterów, poleceń i składników interfejsu użytkownika. Zapoznaj się z przykładami Python Harness.

Repozytorium nie zawiera obecnie spakowanego przykładu terminalu Go Harness.

Następne kroki

Głębiej