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.
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:
- Klient czatu — łączy agenta z modelem.
- Potok czatu — dodaje wywołanie funkcji, iniekcję komunikatów, trwałość historii wywołań poszczególnych usług i opcjonalną kompaktowanie.
- Dostawcy agenta i kontekstu — dodaj instrukcje dotyczące sesji, narzędzia, pamięć, stan wykonania, tryby operacyjne i opcjonalne możliwości.
- Oprogramowanie pośredniczące i dekoratory — dodaj obsługę zatwierdzania, obserwowanie i opcjonalne ograniczone pętle.
- 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.