Strona główna / Artykuły

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.

Wydawca: REACTAPP.TOP6 min czytania1445 słów

Ź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_file należ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.
  • Pamięć: co jest już znane? Przechowuje i odzyskuje informacje pomiędzy poszczególnymi krokami lub sesjami. Gdy treść jest pobierana z bazy danych wektorowej do kontekstu, jej uprzednie streszczenie może zaoszczędzić miejsce, a zadanie to spoczywa na komponencie pamięci.
  • Orkiestracja: jak wykonywany jest proces? Kontroluje pętlę wykonywania, wywołania narzędzi, próby ponowne, podagenty, paralelizm oraz przenoszenie obowiązków. W procesie zakupu podagent płatności może działać jednocześnie z agentem zarządzającym zapasami, który aktualizuje stan magazynu, albo agent zarządzający zapasami może zostać poinstruowany do oczekiwania aż płatność się powiedzie.
  • Zarządzanie kontekstem: co LLM powinno teraz widzieć? Decyduje o tym, co trafi do okna kontekstowego na każdym kroku.
  • Bезpieczeństwo i zarządzanie: co jest dozwolone? Tutaj odnoszą się uprawnienia, izolacja środowiskowa, mechanizmy zatwierdzania, polityki, limity oraz autoryzacja. Nawet jeśli model ma prawo edytować pliki, rozsądnie jest zabronić ich usuwania.
  • Obserwowalność i ocena: czy rzeczywiście zadziałało? Pozwala to prześledzić to, co się wydarzyło, oraz ocenić sukces, niepowodzenie lub naruszone ograniczenia. Jeśli zadanie wymagało trzech z dziesięciu dostępnych narzędzi, chciałoby się zobaczyć, w jaki sposób zostały one użyte. Gdy jedno z nich zawodzi, przyczyną może być narzędzie, którego model nigdy nie miał, albo dane, które nigdy nie dotarły do jego kontekstu. Ślady działania pomagają odróżnić te przypadki.
  • 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:

    1. 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.
    2. Model planuje działania: sprawdza powiązane błędy, poprawia odpowiedni plik, kompiluje kod, uruchamia testy i aktualizuje pamięć.
    3. 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.
  • Biorąc pod uwagę ten kontekst, model decyduje się otworzyć plik 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.
  • Następnie testuje wprowadzone zmiany z terminala, wykorzystując odpowiedni narzędzie z dostępnej listy. System zapewnia, że model ma odpowiedni poziom dostępu zarówno do terminala, jak i do plików.
  • Model przechodzi do kolejnego kroku planu i uruchamia przypadki testowe, co wymaga dodatkowych narzędzi. Każdy krok aktualizuje kontekst, dzięki czemu model wie, gdzie się znajduje i co jeszcze pozostało do zrobienia.
  • Przez cały proces system obserwacyjny rejestruje wszystko: użyte narzędzia, czas trwania operacji, zużytą pamięć oraz wystąpiłe błędy.
  • 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.