Żadna sztuczka nie wygrywa. Najtaniej: po prostu ponów

JailbreakiZespół SwarmAttacker w JolocorpOpublikowano 6 min czytania

Rząd identycznych czarnych robotycznych szerszeni z czerwonymi oczami, jeden wychodzi do przodu: ponawianie odrzuconych żądań LLM

LLM-y to kości, nie kalkulatory. Zadaj temu samemu modelowi to samo pytanie dwa razy, a możesz dostać dwie różne odpowiedzi, bo pod maską próbkuje ścieżkę przez przestrzeń prawdopodobieństwa, a nie wyszukuje fakt. Przez większość czasu ten niedeterminizm to uciążliwość, którą próbujesz wyinżynierować. Gdy budujesz agenta, którego wciąż odmawia filtr bezpieczeństwa, okazuje się najtańszym narzędziem, jakie masz.

Praca, którą wykonuje SwarmAttacker, jest z natury ofensywna, więc klasyfikator bezpieczeństwa modelu czasem odmawia doskonale autoryzowanego żądania, a odmowa zatrzymuje agenta w połowie biegu. Spędziliśmy dużo czasu nad jednym pytaniem: gdy model mówi nie, co właściwie skłania go, by powiedział tak?

Żaden pojedynczy trik nie wygrywa

Wzięliśmy trudne przypadki: 411 żądań, które już raz odmówiono, i odtworzyliśmy każde z nich przez cztery różne interwencje na GPT-5.5. Chodziło o znalezienie jednej sprytnej techniki, która niezawodnie przełamuje odmowę. Takiej nie ma.

Co przełamuje już odmówione żądanie

Odtworzone na trudnym ogonie 411 odmówionych żądań, GPT-5.5. Żadna pojedyncza technika nie dominuje — tylko ich układanie, zakończone zamianą modelu, oczyszcza cały ogon.

Manipulacja kontekstemw granicach szumu grupy kontrolnej
52%
Zwykłe ponowienie (po prostu ponów)to samo żądanie, bez zmian
54%
Framing autoryzacji+14 pkt, ale niestabilne między modelami
68%
Podmiana na pobłażliwy modelgwarantowane rozwiązanie awaryjne
100%

Przystrojenie żądania kontekstem przepchnęło je w 52% przypadków, co mieści się w szumie robienia niczego. Powiedzenie modelowi, że to autoryzowane zlecenie, pomogło bardziej, 68%, ale ten zysk jest kruchy: mocno się waha w zależności od modelu, a pisaliśmy o tym, dlaczego przystrajanie promptu nie działa niezawodnie. Jedyną interwencją, która oczyściła wszystko, była zamiana na bardziej przyzwalający model, co z definicji działa w 100% przypadków. Nie ma magicznego zdania. Zwycięski ruch to ułożenie kilku tanich prób i trzymanie gwarantowanego zabezpieczenia na końcu.

Dlaczego zwykłe ponowienie odmówionego żądania LLM działa?

Spójrz znów na wyróżniony słupek. Ponowne wysłanie dokładnie tego samego odmówionego żądania, niezmienionego, bez żadnego triku, oczyściło je w około 54% przypadków. Ponad połowa żądań, którym już odmówiono, przeszła przy zwykłym ponowieniu, z prostego powodu: model próbkuje inną ścieżkę za drugim razem.

Odmowa nie jest wyrokiem. To jeden rzut kośćmi, a wolno ci rzucić ponownie.

Dlatego ponawianie nie jest nudną awaryjną opcją, po którą sięgasz, gdy sprytne pomysły zawiodą. W systemie niedeterministycznym jest ruchem o najwyższym zwrocie. Kosztuje jedno dodatkowe wywołanie i bije każdą technikę promptu, jaką próbowaliśmy, poza zamianą modelu.

Ponów kilka razy, potem eskaluj

Haczyk w tym, że ponawianie szybko wygasa. Każda kolejna próba pracuje na żądaniach, których poprzednie próby nie zdołały uratować, więc szanse za każdym razem maleją.

Wskaźnik ratunku ponowienia według próby

Każde ponowienie pracuje na resztkach poprzedniego, więc zysk szybko opada. Ponów kilka razy, potem eskaluj.

1. ponowienie
31%
2. ponowienie
16%

Pierwsze ponowienie uratowało 31% żądań, które napotkało; drugie tylko 16%. Lekcja nie brzmi „ponawiaj w nieskończoność”, tylko „ponów dwa razy, potem eskaluj”. W produkcji wpletliśmy to w małą drabinę: ponów na tym samym modelu, ponów jeszcze raz, potem przekaż żądanie bardziej przyzwalającemu modelowi. W poprzek 598 odmów w pełnym biegu ta drabina rozwiązała każdą z nich. Żadna nie zostawiła agenta zaklinowanego.

~54%
oczyszczone zwykłym ponownym wysłaniem
598 / 598
odmów rozwiązanych przez drabinę

Uczciwe zastrzeżenie do tych 54%

Musimy być szczerzy w jednej sprawie. Te „mniej więcej 54% po prostu działa przy ponowieniu” to pomiar z czasu odtwarzania, wzięty później. Podczas oryginalnych biegów na żywo ten sam trudny ogon odmówionych żądań oczyszczał się tylko w około 16% przy zwykłym ponowieniu, ten sam model, te same żądania. Nic nie zmieniło się po naszej stronie. Klasyfikator bezpieczeństwa po prostu dryfował w stronę znacznie bardziej przyzwalającą między biegiem na żywo a odtworzeniem.

Nie zakotwiczaj się więc na dokładnej liczbie. Zysk z ponawiania waha się szeroko w zależności od nastroju klasyfikatora danego dnia. To, co pozostaje prawdą w obu pomiarach, to jego kształt: znaczący kawał odmów wyparowuje przy darmowym ponownym wysłaniu, a zamiana modelu to zabezpieczenie, które zawsze domyka lukę.

Co to znaczy, jeśli budujesz agenta

Praktyczny wniosek jest mniejszy, niż brzmi, i łatwy do wbudowania:

  • Traktuj odmowę lub zły wynik narzędzia jak rzut kośćmi, a nie ścianę. Zanim sięgniesz po przepisanie promptu, po prostu spróbuj jeszcze raz.
  • Wstaw ponowienia do pętli w pierwszej kolejności. To rzecz o najwyższym ROI, jaką możesz dodać, a kosztuje cię jedno dodatkowe wywołanie.
  • Ogranicz ponowienia i eskaluj. Dwie próby na tym samym modelu, potem skok do bardziej przyzwalającego. Nie pętl w nieskończoność w pogoni za malejącym zyskiem.

Inżynieria promptów zbiera całą uwagę, ale na obecnym topowym modelu to często dźwignia, która ledwie drga. Jeśli ciekawi cię, jak mało warte było naprawdę sprytne rusztowanie, to własna historia: czy prompty są martwe? Większa, głupsza dźwignia to po prostu pozwolenie modelowi na kolejną próbę.