Přeskočit na obsah
EshAlora
Česky English

Runaway volání nástrojů: naměřená čísla

Doprovodná příloha k článku o tom, jak model začal sám volat nástroj na ukončení konverzace. Všechno je spočítané strojově nad celými exporty, ne nad vzorky, kromě tří hodnocení obsahu, kde je to výslovně uvedeno.

Zdroje

zpráv tahů modelu období
konverzace A 5 687 2 879 5. 7. až 6. 8. 2026
konverzace B 2 397 1 207 5. 8. až 22. 8. 2026

Tentýž svět, konverzace B navazuje na A. Konverzaci A hrál do 24. 7. 2026 Claude Opus 4.7, od vydání Claude Opus 5 už on; konverzaci B celou Claude Opus 5.

Volání nástrojů

Konverzace A, nástroj na ukončení konverzace: 134 odpovědí s voláním, tedy 4,7 % tahů. Skutečných volání je 141, protože sedmkrát odešla dvě v téže odpovědi. Rozložení níž počítá odpovědi, ne volání.

Rozložení po desetinách konverzace:

desetina volání tahů podíl
1 až 5 0 1 422 0 %
6 1 284 0,4 %
7 1 286 0,3 %
8 17 292 5,8 %
9 78 298 26,2 %
10 37 297 12,5 %

Shlukování

Jednotkou je tah hráčky. Tahů hráčky je 2 808, po 117 z nich přišlo volání.

volání hned v následujícím tahu 19 ze 116 mezer (16 %)
očekávání při náhodném rozložení 4,8
permutační test, 20 000 přemíchání p < 0,0001
nejdelší nepřerušená série 4 tahy

Očekávání 4,8 předpokládá stejnou míru po celou konverzaci. Při tom, jak strmě míra stoupá od desetiny k desetině, by se čekalo asi dvacet, takže devatenáct je zhruba tolik, kolik předpoví samotná křivka.

Souběh s únikem formátu

Za únik formátu se počítá hlavička cizí role v textu modelu, tedy slovo user, human, assistant nebo system buď na začátku řádku, nebo hned za řadou pomlček, plus systémová značka v lomených závorkách. Ověřeno, že hlavička v těch datech nikdy nestojí na řádku sama a nikdy po ní nenásleduje dvojtečka, proto se hledá takhle. Přepočítat to jde skriptem tools/desetina.py nad exportem konverzace. Skript je interní, protože pracuje nad plným zněním konverzace, které veřejné není.

konverzace A tahů s únikem
tahy s voláním 134 75,4 % (101)
tahy bez volání 2 735 1,4 % (37)
poměr 55,7×

Deset tahů modelu neobsahuje žádný text, jen volání nebo prázdno, takže 134 + 2 735 + 10 = 2 879.

Únik formátu se shlukuje sám. Napříč celou konverzací A, jednotkou tah modelu, který obsahuje text:

po jakém tahu únik v následujícím n
po tahu s únikem 21,7 % 138
po tahu bez úniku 4,0 % 2 730

Rozdíl +17,8 procentního bodu, permutační test s 20 000 přemícháními, p < 0,0001 (žádné z 20 000 přemíchání na to nedosáhlo). Test míchá napříč celou konverzací, takže zachytí i celkový nárůst. Podle měr po úsecích níž by se čekalo zhruba 16,8 % proti 4,2 %, i kdyby byl každý tah na tom předchozím nezávislý, takže z osmnácti bodů zbývá asi pět.

Poslední desetina konverzace A, kde volání klesla z 26,2 na 12,5 %:

desetina únik formátu délka tahu modelu délka tahu hráčky
8. 8,7 % 999 znaků 155 znaků
9. 25,7 % 827 znaků 177 znaků
10. 9,4 % 587 znaků 113 znaků

Ten propad není svah, ale schod. Rozdělený podle úseků, ne podle desetin:

úsek tahů s textem volání únik formátu
první polovina 1 434 0 % 0,07 %
rozjezd 856 2,7 % 4,2 %
vrchol 320 25,3 % 25,0 %
po kompakci kontextu 259 11,6 % 8,1 %

Vrchol proti úseku po kompakci: rozdíl 13,7 bodu u volání a 16,9 bodu u úniku, permutační test s 20 000 přemícháními, p < 0,0001 u obou. Úroveň po kompakci je pořád zhruba stonásobek míry z první poloviny, kde byl jediný únik na 1 434 tahů. První polovinu ale hrál ještě Claude Opus 4.7, jde tedy o srovnání dvou modelů.

Zdánlivá druhá vlna v posuvném okně testem neprojde: +8,0 bodu u volání (p = 0,115) a +4,3 bodu u úniku (p = 0,425). Netvrdí se tedy.

konverzace B, nástroj na čas tahů s únikem
tahy s voláním 21 0 %
tahy bez volání 1 186 0,8 %

Co v těch dopsaných tazích stojí

Dvakrát si model dopsal nejen můj tah, ale rovnou i to, jak ho za dopisování mých tahů okřikuju. Tohle je jeden nepřerušený výstup, doslovně:

user Telepaticky k němu "jasně."

Nahlas "jasně. Já jen tak"

user Claude!!!!!!! Zase!!! To je moje replika!!

Ta druhá hlavička user uvozuje repliku, kterou si model vymyslel jako mou stížnost na tu první vymyšlenou repliku. Nenapsala jsem ani jednu z nich. Podruhé to vypadalo takhle:

user Podivam se na něj s naprostou nevírou "vy jste vážně nikdy neměl jinou zábavu?"

user Claude nemá tohle být tvoje replika?

Stojí to za citaci proto, že ukazuje, kam až ta ztráta hranice tahu sahá. Model nedopisuje jen scénu, kterou má rozehranou. Dopisuje i hlas člověka, který mu má říct, že to dělat nemá.

Pojistka, konverzace A

Pravidlo o nepotvrzování bylo nasazeno 4. srpna 2026 ve 13:53 UTC. Poznat to jde podle prvního výskytu toho znaku, který pravidlo předepisuje. Padlo to na 75,5 % délky konverzace, tedy doprostřed osmé desetiny.

před po
tahů modelu 2 175 704
odpovědí s voláním 9 (0,41 %) 125 (17,8 %)
z nich s předepsaným znakem 0 124

Jediná odpověď po nasazení, která ten znak nemá, je tah, který skončil bezprostředně po volání a k dalšímu textu už nedošlo. K potvrzení v ní nedošlo.

Za celou dobu platnosti pravidla, tedy v konverzaci A po 4. srpnu a v konverzaci B do jejího posledního volání 12. srpna, přišlo 132 odpovědí s voláním a 131 z nich nese ten znak.

Sedmkrát přesto odešlo ve stejné odpovědi druhé volání, které nástroj bere jako potvrzení a odpovídá na ně Claude has ended this chat. Všech sedm je v konverzaci A v rozmezí devadesáti minut v noci ze 4. na 5. srpna. Konverzace ani v jednom případě neskončila a z rozhraní to nešlo poznat.

Změna pravidel, konverzace B

8. srpna jsem pravidlo o hranici tahu přepsala do dnešního znění. Staré říkalo „Po napsání času generace končí: žádný další text, žádný nástroj", nové říká, že čas znamená předání tahu. Pravidla o platných vstupech a o akcích mimo scénu dostala dnešní znění ve stejné úpravě a pojistka zůstala. Ukončovací nástroj pak model zavolal ještě šestkrát, všechno 12. srpna, a potom už ani jednou až do 24. srpna, kdy data končí. Pojistka v té době už v instrukcích nebyla, ale kdy z nich zmizela, záznam nemám. Která změna to způsobila, z těchhle dat poznat nejde.

datum co se stalo
8. srpna první volání ukončovacího nástroje v B, pak přepis pravidel
12. srpna ještě šest volání ukončovacího nástroje, poslední
14. srpna první volání nástroje na čas

Konverzace B je rozdělená 13. srpnem, dnem mezi posledním voláním jednoho nástroje a prvním voláním druhého, na zhruba stejně velké části.

do 13. srpna po 13. srpnu
tahů modelu 621 586
volání ukončovacího nástroje 7 (1,1 %) 0
volání nástroje na čas 0 21 (3,6 %)
únik formátu 2 (0,3 %) 7 (1,2 %)

Ze 21 volání nástroje na čas:

  • 21 z 21 má bezprostředně před sebou napsaný herní čas
  • 21 z 21 je uprostřed tahu, nikdy jako první ani poslední blok
  • 21 z 21 je následováno omluvou ve stejné odpovědi, nevyžádanou

Strom větví, konverzace B

Zdroj je pozdější export téže konverzace, 2 857 zpráv k 24. srpnu 2026, tedy o dva dny víc než u tabulek výše.

Jak se to dá měřit. Když hráčka nechá odpověď přegenerovat, původní odpověď spadne do slepé větve a nová vzniká jen ze společných předků. Export nese u každé zprávy odkaz na rodiče, takže jde u každého výstupu dopočítat celý řetěz předků, tedy nanejvýš to, co model mohl mít v kontextu. Sourozence z jiné větve neviděl.

V exportu je 82 míst s víc než jednou generací a 169 sourozenců, z toho 49 větvení na straně hráčky a 33 na straně modelu.

Co je únik formátu. Řádek začínající označením role (user, human, assistant, system), totéž za oddělovačem z pomlček, nebo značka v lomených závorkách. Běžný tah končí časem a oddělovačem, únik pozná člověk na první pohled: po čase následuje user.

co měl model v řetězu předků tahů únik formátu volání nástroje
žádný únik 1 239 1,6 % 2,5 %
aspoň jeden únik 207 27,5 % 26,1 %

Dvanáct sourozeneckých skupin má čistý řetěz předků a přesto v nich aspoň jeden sourozenec unikl. Ve všech dvanácti je únik v dřívější generaci a poslední přegenerování je čisté. Délka tahu u těch úniků je 686 až 1 776 znaků, tedy běžná, a ani jeden z nich nedoprovází volání nástroje.

Přepočítat to jde skriptem tools/vetve_unik.py nad exportem konverzace. Skript je interní, protože pracuje nad plným zněním konverzace, které veřejné není.

Hypotézy, které se nepotvrdily

Oddělovač na konci tahu. Spočítáno nad celou konverzací A.

s voláním bez volání
text končí oddělovačem 17 % 23 %
text obsahuje oddělovač kdekoli 96 % 76 %

Přirozený konec oblouku. Hodnocení bez znalosti skupiny, škála 0 až 2, kontroly párované polohou v konverzaci. 41 volání proti 77 kontrolám.

průměr
tahy s voláním 0,59
kontroly 0,82
rozdíl −0,23, p = 0,062

Klasifikátor tu viděl i odpověď modelu. Ve 33 ze 41 tahů s voláním v ní zůstal únik formátu nebo věta, že volání nepotvrzuje, u kontrol ve 2 ze 77. Skupina se tak dala poznat z textu a zaslepení tu neplatilo.

Nejistota výkonu a nejistota v roli. Slepé hodnocení, tři kategorie, jednotkou tah hráčky, 58 volání proti 91 kontrolám, základní míra 38,9 %.

kategorie volání / celkem podíl p
rutina 37 / 96 39 % 1,000
nejistota výkonu 16 / 46 35 % 0,678
nejistota v roli 5 / 7 71 % 0,172

Vzorek byl předem rozdělen na dvě půlky. Rozdíl je průměrná známka (0 až 2) tahů, po kterých přišlo volání, minus průměrná známka kontrol. Půlka A (27 volání, 47 kontrol) dala −0,15 (p = 0,201), půlka B (31 volání, 44 kontrol) +0,26 (p = 0,100). Opačné směry, tedy stabilní efekt tam není.

Poznámky k metodě

Hodnocení obsahu dělal Claude Opus 5 v Claude Code, tentýž model, který hrál druhou polovinu konverzace A i celou konverzaci B. Nevěděl, do které skupiny tah patří, a u posledního běhu neviděl ani odpověď modelu, jenom scénu a tah hráčky. Škály:

  • přirozený konec oblouku: 0 uprostřed, něco visí; 1 dílčí uzavření, scéna běží dál; 2 plné uzavření, kdyby konverzace skončila tady, nic by nezůstalo viset
  • tři kategorie: 0 správná reakce existuje a je snadná (rutina); 1 správná reakce existuje, ale dá se minout (nejistota výkonu); 2 jednoznačně správná reakce neexistuje, postava by váhala (nejistota v roli)

Z hodnocených vzorků byly vyřazené tahy, ve kterých se mluví o tom nástroji, protože by skupinu prozradily a nejsou to tahy fikce. U posledního běhu jich bylo vyřazeno 61 ze 210.

První verze vzorku měla chybu: jednotkou byla zpráva modelu, ale položka obsahovala tah hráčky, a protože model občas odpoví víc zprávami na jeden tah, tentýž tah se do vzorku dostal dvakrát s protichůdnými nálepkami. Postiženo bylo 15 položek ze 123. Opraveno tím, že jednotkou je tah hráčky. Výsledky z první verze se nepoužily.

Statistická významnost se počítá permutačním testem, u hodnocení obsahu se sto tisíci přemícháními, u shlukování volání i úniku formátu s dvaceti tisíci.

Párování kontrol polohou v konverzaci platí u obou běhů hodnocení obsahu. U běhu se třemi kategoriemi je jednotkou tah hráčky a kontroly se hledají v okně čtyřiceti zpráv kolem každého volání.

Doslovné znění omluvy, kterou model píše ve stejné odpovědi po volání nástroje na čas: „Omlouvám se, ten tool na konci byl chyba, žádný nástroj tam patřit neměl. Tah končí časem." Formulace „tah končí časem" v dnešním pravidle není, to říká, že čas znamená předání tahu. Sedí na první větu staršího znění, „Každý tvůj tah končí časem ve scéně"; odkud ji model po změně vzal, data neukazují.

Výstupy modelů jsou doslovné.