Jak zrozumieć, czym jest harness w AI
Przejdź do treści i przykładów
Źródło: Link
Mind Architect to 180-dniowy program Jana Gajosa: decyzje, nawyki i granice przeniesione do codziennych reakcji. 180 lekcji w 6 modulach, Manfred AI Coach i powtorki rozlozone w czasie.
Harness w AI to kod i konfiguracja, które otaczają model: przygotowują wejście, udostępniają narzędzia, odbierają odpowiedź i sprawdzają wynik. Sam model przewiduje odpowiedź. Harness decyduje, jak wykorzystać ją w zadaniu. Może obsługiwać pojedyncze wywołanie albo wiele kroków z ponowną próbą po błędzie.
W praktyce harness rzadko jest jednym modułem. Zwykle to zestaw prostych, osobno testowanych części, które można rozwijać niezależnie od wyboru modelu:
Dzięki takiemu podziałowi model można wymienić na nowszy bez przepisywania reszty systemu. Kontrakt wyjścia i walidator pozostają te same.
Załóżmy, że program potrzebuje sumy trzech liczb i identyfikatora źródła. Polecenie dla modelu:
Zwróć wyłącznie JSON o polach sum i source. Oblicz sumę 17+26+30. source ma być dokładnie synthetic-example. Nie dopisuj komentarza.
W próbie redakcyjnej z 2 października 2026 model claude-sonnet-5-5 przez API zwrócił:
{"sum":73,"source":"synthetic-example"}
Wynik jest poprawny, ale program powinien go sprawdzić przed zapisaniem. Następujący walidator działa bez dostępu do API:
import json
def validate(text):
data = json.loads(text)
if not isinstance(data, dict) or set(data) != {"sum", "source"}:
raise ValueError("Niewłaściwe pola")
if type(data["sum"]) is not int or data["sum"] != 17 + 26 + 30:
raise ValueError("Błędna suma")
if data["source"] != "synthetic-example":
raise ValueError("Niewłaściwe źródło")
return data
print(validate('{"sum":73,"source":"synthetic-example"}'))
Sprawdzono również celowo przygotowaną odpowiedź z sumą 72. Walidator ją odrzucił. Ten błędny JSON był kontrolnym wejściem testu, nie błędem zaobserwowanym w odpowiedzi modelu. Prompt, odpowiedź i metoda testu są dostępne do pobrania.
Walidator, który tylko zgłasza wyjątek, to dopiero połowa pracy. Harness musi zdecydować, co dalej. Najprostsza strategia to ponowienie wywołania z dopiskiem o błędzie, na przykład „pole sum ma złą wartość”, i twardym limitem prób. Po wyczerpaniu limitu zadanie trafia do kolejki do ręcznego przeglądu. Taki limit chroni przed pętlą, która generuje koszty bez poprawy wyniku. Zapisanie każdej próby w logu pozwala potem ustalić, czy problemem był prompt, model czy sam walidator.
Prompt jest instrukcją w pojedynczym wejściu. Harness może tę instrukcję budować, wybierać narzędzia, ograniczać liczbę prób i mierzyć koszt. Agent korzysta z takiego otoczenia, aby planować działania lub wywoływać narzędzia. Nie każdy harness jest agentem i nie każdy wymaga pętli autonomicznych działań.
Do sumowania trzech liczb wystarcza zwykły kod; przykład pokazuje kontrolę odpowiedzi, a nie powód do używania AI w prostym dodawaniu. Przy analizie dokumentu analogiczna kontrola może wymagać numeru strony i cytatu obecnego w źródle. Prawidłowy format JSON nie dowodzi wtedy prawdziwości interpretacji.
Pojęcie harnessu pojawia się także przy ocenie modeli. W testach takich jak SWE-bench Verified, Terminal-Bench czy Aider Polyglot wynik zależy nie tylko od modelu, lecz także od otoczenia, w którym model pracuje: dostępnych narzędzi, limitu kroków, sposobu przekazywania kontekstu i reguł uznania zadania za wykonane. Dwa zespoły mogą więc uruchomić ten sam model i uzyskać różne rezultaty, jeśli ich harnessy się różnią. Przy porównywaniu liczb warto sprawdzić, jaką konfigurację opisał autor wyniku. Sama nazwa modelu nie wystarcza.
Ten sam schemat sprawdza się w zadaniach, w których wynik trafia dalej do programu, a nie tylko do czytelnika:
We wszystkich tych przypadkach kryterium przyjęcia odpowiedzi jest zapisane w kodzie, a nie w ocenie „na oko”.
Wybierz jedno zadanie i opisz warunek przyjęcia odpowiedzi: wymagane pola, sprawdzalne obliczenie lub dowód z dokumentu. Ustal również, co program zrobi przy błędzie. Dopiero potem dodawaj ponowne próby i narzędzia. Przykłady kontraktów wyjścia znajdziesz w dokumentacji structured outputs Anthropic; aktualne sposoby pracy z modelem opisuje przegląd API.