Wyjaśnienie agent harnessa: komponenty, które przekształcają LLM w agenta
Co to jest harness dla agenta, dlaczego agenty LLM działające przez długi czas potrzebują go, osiem komponentów, z których się składa, oraz jak współpracują one przy rzeczywistym zadaniu agenta programistycznego.
Źródła: Agent Harness — A complete guide
W 2023 roku opisanie pracy z modelem językowym było proste. Wpisywało się pytanie, na przykład „napisz funkcję w Pythonie, która sortuje tablicę liczb”, a odpowiedź pojawiała się niemal natychmiast. Model nie wchodził w żaden widoczny tryb rozmyślania. Był to zwykły LLM bez dodatków, które cechują dzisiejsze systemy agentowe: narzędzi, pamięci, umiejętności i innych funkcji. To właśnie te dodatki przekształcają zwykły LLM w agenta AI.
Jak zmieniła się rywalizacja
Przez lata 2023 i 2024 rywalizacja dotyczyła modeli. OpenAI posiadał wiodący model uniwersalny, Anthropic – wiodący model do programowania, a wszyscy ścigali się na takich testach jak MMLU i SWE-bench. W końcu ta rywalizacja zaczęła się wyrównywać, a kluczową rolę zaczęły odgrywać umiejętności rozumowania i obsługa długich kontekstów. W interfejsach czatowych zaczęły pojawiać się wskaźniki „rozmyślania...”, a ludzie zastanawiali się, co dzieje się za nimi.
Użytkownicy również się zmieniali. W miarę udoskonalania modeli ludzie przestali zadawać pytania i zaczęli przekazywać im zadania. Takie zadanie wymaga od systemu ustalenia celów, wykorzystania zewnętrznych narzędzi takich jak przeglądarka, przywołania wcześniejszych rozmów i przechowywanych faktów, a następnie dostarczenia jakiegoś rezultatu.
Porównajmy te dwie epoki na przykładzie. Na początku ktoś mógłby zrobić skrynkotek stronę startową Amazona, przesłać ją modelowi do kodowania i poprosić o stronę wyglądającą tak samo, wszystko za jednym razem. Rezultatem byłoby przyjęte do użytku interfejs użytkownika. Teraz wyobraźmy sobie, że chcemy, aby interfejs, backend, infrastruktura oraz wszystko inne zostało przygotowane za jednym razem.
Do 2026 roku ten sam użytkownik może napisać „napraw błąd zgłoszony w sprawie #122 na GitHubie”. To jedno zdanie kryje w sobie kilka kroków. Model z 2023 roku odpowiedziałby, że nie może uzyskać dostępu do twojego repozytorium. Model opatrzony dobrym „harnessem” wchodzi w cykl myślenia: rozumowanie, planowanie, wybór narzędzia lub działania, jego uruchomienie, obserwacja wyniku, a następnie powtórzenie lub zatrzymanie.
Czym jest harness
Wszystkie te dodatki otaczające LLM (kontekst, narzędzia, pamięć itp.) wymagają uporządkowanego sposobu na interakcję z modelem. Ta dyscyplina ma swoją nazwę, a jej standardowe definicje są krótkie. Jest to warstwa infrastruktury otaczająca agenta AI, odpowiedzialna za jego opakowanie, kierowanie nim, testowanie, monitorowanie oraz ocenę wyników. Mówiąc prościej, to system operacyjny otaczający LLM.
To warstwa obejmuje architekturę agentów, framework orkiestracji koordynujący podagenty, system oceny oceniający wyniki, infrastrukturę działającą w czasie rzeczywistym, bezpieczeństwo, zarządzanie oraz możliwości obserwacji.
Dlaczego jest to konieczne
Zadania przydzielane przez ludzi stają się coraz większe, podobnie jak czas, jaki agenty poświęcają na ich wykonywanie. Dane firmy Anthropic pokazują, że czasy wykonania rosną w szybkim tempie. Rok wcześniej, w 2025 roku, agent mógł pracować nad danym zadaniem około godziny. Dziś ten czas wynosi już blisko dwunastu godzin.
Praca na dłuższy horyzont niesie ze sobą własne problemy. Agenci mogą w nieskończoność się pętlić, wymyślać narzędzia, których nie istnieje, niszczyć swój własny stan, przekraczać limity tokenów, tracić kontekst, ponawiać błędne działania, zawodzić bez powiadamiania nikogo, nadużywać uprawnień lub nawet zapominać o celu.
Te awarie kosztują prawdziwe pieniądze. Agent uwięziony w nieskończonej pętli przez dwanaście godzin zużyje ogromną ilość tokenów oraz zasobów obliczeniowych. Narzędzie zarządzające może to ograniczyć, nakładając budżet na każde zadanie, mierzony czasem, tokenami lub zasobami obliczeniowymi.
Większym problemem jest bezpieczeństwo. Jeśli model wybierze narzędzie destrukcyjne, na przykład takie, które usuwa system plików, to właśnie w narzędziu zarządzającym decyduje się, do czego może ono dotrzeć. Krótko mówiąc, narzędzie to daje kontrolę nad agentem i tym samym pewność, że agent robi to, co zamierzaliśmy.
Komponenty
Niezależnie od tego, jak konkretny zespół nazywa swoje narzędzie zarządzające, jego elementy dzielą się na osiem grup. Każda z nich reprezentuje pytanie, na które agent musi być w stanie odpowiedzieć.
- Stan agenta: gdzie aktualnie przebiega proces? Śledzi bieżące zadanie, kroki, obserwacje oraz decyzje. Jeśli plan składa się z czterech kroków, system rejestruje, które z nich zostały wykonane, który jest w trakcie, a które jeszcze nie rozpoczęły się. Bez niego agent przerwany nie ma możliwości kontynuacji od miejsca przerwy.
- Narzędzia: jakie działania są dostępne? To najbardziej widoczna część. Tutaj znajdują się wykonywanie kodu, przeglądarka, API, bazy danych oraz wiersz poleceń. Dla agenta zajmującego się programowaniem funkcja
read_filenależy do podstawowych narzędzi. - Planowanie: co nastąpi dalej? Określa kolejne kroki i opracowuje lub modyfikuje plan. W przypadku zadania programistycznego może to być sekwencja czterech lub pięciu kroków.
Praktyka projektowania, tworzenia i uruchamiania tych elementów w celu zapewnienia optymalnej wydajności agenta nazywana jest inżynierią harnessingu. Jest to nowsza dziedzina, a większość zespołów nadal ustala, jakie obowiązki należy przypisać poszczególnym osobom.
Agen kodujący od początku do końca
Weź agenta kodującego wyposażonego w specjalny zestaw narzędzi i podaj mu polecenie „napraw błąd w sprawie nr 122 na GitHubie”. To nie jest prośba o „wyjaśnienie mi tego”. To rzeczywe zadanie, które wymaga planowania, użycia narzędzi oraz przechowywania informacji w pamięci. Jedna z możliwych sekwencji działań wygląda następująco:
- Dane wprowadzone przez użytkownika trafiają do kontekstu. Model analizuje je i ustala cel, który pozostaje w kontekście aż do jego osiągnięcia.
- Model planuje działania: sprawdza powiązane błędy, poprawia odpowiedni plik, kompiluje kod, uruchamia testy i aktualizuje pamięć.
- Dla pierwszego kroku zestaw narzędzi pobiera informacje z bazy danych wektorowej, a mianowicie szczegóły wcześniejszych błędów istotnych dla tego konkretnego problemu. Informacje związane z autoryzacją są uznawane za najbardziej odpowiednie i trafiają do kontekstu.
auth.py i naprawić błąd w mechanizmie autoryzacji. Wymaga to użycia funkcji read_file i write_file, które służą do edytowania i zapisywania pliku.Ocena jeszcze nie została przeprowadzona i zasługuje na osobne potraktowanie. Wykracza poza kwestię dokładności i obejmuje kilka wskaźników związanych z faktycznym zachowaniem agenta.
Kierunek rozwoju
Niezawodność w długim okresie jest jednym z największych nierozwiązanych problemów. Ponieważ agenci działają godzinami, a nawet dniami, ich działanie musi być pewne. Agent uwięziony w pętli lub w uszkodzonym stanie marnuje zasoby i może zagrozić bezpieczeństwu.
Ocena staje się również trudniejsza w miarę złożenia narzędzi używanych do ich obsługi. Każde zadanie pozostawia ślady w postaci danych, takich jak zużycie pamięci, a zespoły muszą zdecydować, czy wymienić model, przerobić narzędzie, dodać nowe funkcje czy naprawić istniejące. Społeczność aktywnie pracuje nad rozwiązywaniem tych problemów.