Bez hype'u
Zacznij pisać, aby wyszukać...
nawigacjaotwórz
CtrlKszukaj
← Wszystkie wpisy
LLM-Review-Benchmark

Zaprojektowałem test na LLM-as-a-judge. Najtrudniejsze było zdefiniować poprawną recenzję.

Pilotaż z trzema modelami, dwoma domenami i trzema tierami ground truth. Jak zmierzyć jakość recenzji AI, gdy nie ma jednej poprawnej odpowiedzi.

Udostępnij

W wpisie o testowaniu promptów opisałem trzy podejścia do ewaluacji generatywnych outputów: ręczna ocena, proxy przez parsowanie i LLM-as-a-judge. Trzecie zostawiłem z adnotacją “pozostaje pomysłem dopóki nie zweryfikuję jego wiarygodności.”

Postanowiłem zweryfikować. Nie ręcznie na kilku przykładach - jako kontrolowany eksperyment z trzema modelami, dwoma domenami i mierzalnym ground truth.

Problem i dane

Żeby zmierzyć czy LLM-as-a-judge jest wiarygodny, trzeba najpierw zdefiniować co znaczy “poprawna recenzja”. Recenzja kodu czy tekstu nie jest binarna - nie ma jednego prawidłowego werdyktu. Potrzebowałem referencji - ground truth - zanim w ogóle mógłbym porównywać recenzentów.

Dwie ścieżki: stworzyć dane samemu albo znaleźć zewnętrzne datasety.

Tworzenie własnych danych oznacza generowanie błędów w kodzie i tekście, ręczne adnotowanie każdego z nich, budowanie zestawu od zera. Pełna kontrola nad tym co testujesz. Ale też dużo dłubania - zarówno wygenerowanie realistycznych błędów jak i ich rzetelne opisanie.

Zewnętrzne datasety rozwiązują problem czasu, ale wprowadzają nowy: muszą pasować. Trzy kryteria: konkretne modele AI jako autorzy materiału (żeby mierzyć self-review), ludzkie adnotacje błędów (żeby mieć referencję) i dwie domeny - kod i tekst.

Postawiłem na dane zewnętrzne:

  • Defects4CodeLLM - kod wygenerowany przez GPT-4 i GPT-3.5, z ludzkimi adnotacjami błędów (semantyczne + syntaktyczne).
  • ReaLMistake - odpowiedzi na zadania rozumowania wygenerowane przez GPT-4 i Llama 2, z ludzkimi adnotacjami. Oba zestawy mają to czego potrzebuję: znany autor, opisane błędy, ludzka referencja.
  • HumanEval - zadania programistyczne z unit testami. Odpaliłem na nich Claude, zebrałem te które failują. Obiektywne ale wąskie - test mówi czy kod działa, ale nie czy jest wydajny i napisany klarownie.

Brakowało próbek Claude w domenie tekstu. Wygenerowałem je osobno: Claude odpowiada na pytania z ReaLMistake, potem GPT-4o i Gemini niezależnie oceniają czy odpowiedź zawiera błąd. Obaj sędziowie muszą się zgodzić = ground truth.

Z pięciu próbek trzy okazały się bezbłędne według obu sędziów - wyłączyłem je z benchmarku bo nie da się scorować recenzji gdy nie ma czego szukać. To też pozytywny sygnał: Claude na tych zadaniach popełniał mniej błędów niż GPT-4 czy Llama.

3 tiery ground truth

Nie ma jednego ground truth który pokrywa wszystkie próbki, wszystkie modele i obie domeny. Zamiast szukać idealnego źródła, rozbiłem referencję na trzy tiery - każdy mówi “tu jest błąd” w inny sposób:

TierŹródłoCo dajeOgraniczenie
Tier 1: ludzkie adnotacjeDefects4CodeLLM, ReaLMistakeEkspert opisał co jest błędem i dlaczegoPokrywa GPT i Llama, nie Claude
Tier 2: unit testyHumanEvalObiektywne pass/failMówi CZY jest błąd, nie jak go opisać
Tier 3: konsensus modeliClaude content samplesObaj sędziowie muszą się zgodzićSędziowie mogą dzielić ślepe punkty

Nawet razem nie spełniają kryteriów akademickiego badania. Ale dają trzy niezależne perspektywy na ten sam problem - i to więcej niż większość porównań LLM, które opierają się na jednej.

Design eksperymentu

Trzy zmienne do zbadania:

  1. Kto recenzuje (self vs cross) - Claude Opus 4.6, GPT-4o i Gemini 2.5 Pro. Gemini nigdy nie jest autorem materiału - czysta grupa kontrolna, zawsze cross-review. Claude i GPT mają zarówno self-review jak i cross-review.

  2. Jak recenzuje (setup) - dwa skrajne poziomy. Level 0 - zero-shot:

    • materiał
    • “review this and share your assessment”

    Level 2 - pełny structured setup:

    • rola eksperta (senior staff engineer / senior editor)
    • 3-pass process (strukturalny → linia po linii → holistyczny)
    • domain-specific checklista
    • lista typowych błędów AI
    • format JSON
    • kalibracja anty-false-positive
  3. Co recenzuje (domena) - kod i tekst (zadania rozumowania). Dwie domeny dają kontrolę - jeśli wzorzec pojawia się w obu, to nie artefakt jednego typu materiału.

Self-review mierzę na poziomie vendora, nie konkretnego modelu. GPT-4o recenzujący kod od GPT-3.5 = “self” (oba OpenAI). To uproszczenie - wracam do tego w ograniczeniach.

ŹródłoDomenaAutorPróbekGround truth
Defects4CodeLLMkodGPT-45Tier 1
Defects4CodeLLMkodGPT-3.55Tier 1
HumanEvalkodClaude5Tier 2
ReaLMistaketekstGPT-45Tier 1
ReaLMistaketekstLlama 25Tier 1
Claude on ReaLMistaketekstClaude2 (z 5)Tier 3

Łącznie: 27 próbek × 3 recenzentów × 2 poziomy = 162 recenzje.

Ograniczenia

To jest pilotaż, nie recenzowane badanie naukowe. Dlaczego:

  • 5 próbek na źródło danych. Za mało na istotność statystyczną. Przy pięciu próbkach zobaczę wyraźne wzorce ale nie oddzielę ich od szumu. Jeśli różnica między self a cross wyniesie 3% - nie wiem czy to sygnał czy przypadek.
  • Self-review = vendor-level. GPT-4o recenzujący GPT-3.5 to nie to samo co model recenzujący swój własny output. Self-bias w literaturze dotyczy recenzji WŁASNEJ pracy. Tu mierzę pokrewny efekt - ale to proxy, nie dokładny pomiar. Z drugiej strony - w praktyce często właśnie tak wygląda weryfikacja: jeden model generuje, inny (nawet od tego samego vendora) sprawdza.
  • Scorer ma potencjalny bias. Recenzje scoruje Claude Haiku - porównuje je z ground truth i przyznaje punkty. Haiku jest produktem Anthropic. Może inaczej traktować recenzje napisane przez Claude niż przez GPT. Tego nie kontroluję.
  • Brak pośrednich leveli. Skok z “review this” do pełnego skilla z rolą, checklistą i 3-pass to duża odległość. Nie wiem co konkretnie daje efekt - rola? format? checklista? Wszystko naraz? To pytanie na Fazę 2.

Ten eksperyment może pokazać gdzie szukać. Nie może udowodnić.

Kiedy wyniki coś znaczą

Uznam wzorce za znaczące gdy:

  • Różnice między warunkami są duże - 15%+ detection rate, nie 2-3%. Przy 5 próbkach na źródło jeden trafiony lub nietrafiony błąd to już 20% różnicy - próg 15% to minimum przy którym wzorzec nie jest artefaktem pojedynczej próbki
  • Kierunek jest spójny w obu domenach (kod i tekst wskazują to samo)
  • Gemini (kontrola) zachowuje się inaczej niż pary self-review

Uznam że potrzebuję więcej danych gdy:

  • Różnice są małe i niespójne między domenami
  • Tier 1 i Tier 3 dają sprzeczne sygnały o tym samym recenzencie

Wyniki opisałem w osobnej notatce. Metodologia albo je udźwignie, albo pokaże że pięć próbek to za mało żeby powiedzieć cokolwiek poza anegdotą.


W newsletterze rozwijam tego rodzaju tematy głębiej. Zapisz się.