- Spodbujanje verige misli izboljša sklepanje v LLM tako, da vmesne korake naredi eksplicitne, namesto da vsiljuje enkratne odgovore.
- Različice, kot so ničelni poskus, poskus z nekaj poskusi, samodejni preizkus preživetja (Auto-CoT), samokonsistentnost in drevo misli, ponujajo kompromise med natančnostjo, stroški in naporom izvedbe.
- CoT je še posebej močan v agentnih sistemih, ki uporabljajo orodja, kjer transparentno sklepanje povečuje zanesljivost in odpravljanje napak.
- Produkcijska uporaba CoT zahteva opazovalnost, vrednotenje in iterativno optimizacijo promptov za uravnoteženje kakovosti z zakasnitvijo in stroški žetonov.

Spodbujanje verige misli (CoT) je iz raziskovalne zanimivosti prešlo v eno najbolj praktičnih orodij, ki jih imajo razvijalci, da bi veliki jezikovni modeli resnično sklepali, namesto da bi le ugibali najverjetnejšo naslednjo besedo. Z izrecno zahtevo modelu, da navede svoje vmesne korake, odklenete veliko boljšo zmogljivost pri matematičnih, logičnih in odločitvenih nalogah, hkrati pa dobite pregledno sled, ki jo lahko odpravljate in revidirate.
Če gradite aplikacije, ki jih poganja LLM, agenti ali kopilote in še vedno izvajate le enostopenjske ukaze, veliko kakovosti izgubljate. V tem priročniku, osredotočenem na razvijalce, bomo razložili, kaj je veriga misli (Chain of Thought), zakaj deluje, glavne različice (nič poskusov, nekaj poskusov, samodejni CoT, samokonsistentnost, drevo misli, od najmanjših do največjih, multimodalni), kako se primerja z veriženjem pozivov ter kako ga integrirati in spremljati v resničnih sistemih z uporabo sodobnih orodij.
Od neposrednega odgovora do eksplicitnega sklepanja
Večina pozivov, ki jih ljudje pošljejo LLM-ju, je "enkratnih": postavite vprašanje, model izpljune odgovor, brez vprašanj, brez prikazane obrazložitve. Za nekaj takega kot »Kakšne barve je nebo?« je to v redu: model vrne le »Nebo je modro«. Ni vidne strukture, ni vmesne logike, le zadnji stavek, ki se sliši pravilno.
Spodbujanje verige misli obrne ta vzorec tako, da modelu naroči, naj dejansko opiše korake sklepanja, ki jim sledi. Vprašajte »Zakaj je nebo videti modro? Razmislite korak za korakom.« in model bi lahko razložil koncept »modre barve«, govoril o tem, kako sončna svetloba interagira z ozračjem, omenil Rayleighovo sipanje in šele nato navedel, da so krajše modre valovne dolžine sipane v vse smeri, zato se nam nebo zdi modro.
Tehnično gledano ne spreminjate uteži modela ali mu dajete novega znanja; spreminjate format izračuna, ki ga mora izvesti. Namesto da bi razčlenjevanje, sklepanje, računanje in odgovarjanje stisnili v en sam prehod naprej, mu dovolite, da pretaka zaporedje vmesnih misli, ki se gradijo proti zaključku.
V praksi je to lahko tako preprosto, kot da na konec poziva dodate navodilo, kot je »pokažite svoje sklepanje korak za korakom« ali »rešimo to sistematično«. Ta majhen dodatek spodbuja model, da razkrije verigo vmesnih stanj, ki vodijo do končnega rezultata, namesto da bi skočil naravnost na odgovor, ki se sliši zgolj verjeten.
CoT tudi bistveno olajša opazovanje. Ko je model napačen, lahko pogosto natančno določite korak, kjer je njegova logika zašla s tira, namesto da strmite v skrivnostno napačno številko ali napačno odločitev brez razlage.
Vrzel med ujemanjem vzorcev in resničnim sklepanjem
LLM-ji so neverjetno dobri pri ujemanju vzorcev, ker so v bistvu ogromni verjetnostni stroji, usposobljeni za osupljive količine besedila. Če vprašate: »Kaj je težje, funt perja ali funt svinca?«, je sodoben model ta vzorec zvijačnega vprašanja videl že stokrat ali tisočkrat; samozavestno odgovori, da tehtata enako.
Ko pa postavite vprašanje, ki zahteva več povezanih operacij, se lahko zmogljivost hitro zmanjša. Klasični primer: »Če 5 strojev potrebuje 5 minut za izdelavo 5 pripomočkov, koliko časa bi 100 strojev potrebovalo za izdelavo 100 pripomočkov?« Mnogi modeli bodo halucinirali intuitiven, a napačen odgovor, razen če jih skrbno vodijo.
Osrednja težava običajno ni pomanjkanje znanja, temveč manjkajoča struktura. Večstopenjsko sklepanje implicitno zahteva, da model zaporedno izvaja več operacij: razumevanje besedila, prepoznavanje vprašanja, preslikava v ustrezne odnose ali formule, izvajanje izračunov in sestavljanje odgovora. Če zahtevate takojšen odgovor, ga dejansko prosite, naj celoten postopek stisne v en sam korak.
Spodbujanje verige misli daje modelu »prostor za razmišljanje« tako, da to implicitno zaporedje pretvori v eksplicitno besedilo. Raziskave Googla in drugih so pokazale, da se natančnost pri aritmetičnih nalogah, sklepanju na podlagi zdrave pameti in manipulaciji s simboli močno poveča v primerjavi z neposrednim odgovarjanjem, ko modele prosite, naj »pokažejo svoje delo«.
Še posebej presenetljiv poskus: ko so raziskovalci v osnovni šoli postavili matematična vprašanja GPT-3, so z enostavnimi navodili pravilno odgovorili na manj kot 20 % vprašanj. Ko so preprosto spremenili poziv v zahtevo po vmesnem sklepanju, je natančnost poskočila nad 50 %, dodajanje samokonsistentnosti pa jo je potisnilo v sredino 70-ih. Iste uteži, isti model – le pametnejši način postavljanja vprašanja.
Osnovne vrste spodbujanja verige misli
Razvijalci so razvili peščico različic CoT, da bi uravnotežili natančnost, stroške in kompleksnost izvedbe. Videli boste različice, kot so CoT z ničelnim poskusom, CoT z nekaj poskusi, samodejni CoT (Auto-CoT), samodoslednost, drevo misli in spodbujanje od najmanjšega do največjega, vsaka pa je primerna za nekoliko drugačne scenarije.
Ničelna veriga misli
Zero-shot CoT je najlažja možnost: ne podajate primerov, ampak preprosto dodate navodila za sklepanje. Stavki, kot so »Razmišljajmo korak za korakom«, »Reši to previdno, korak za korakom« ali »Pred odgovorom razloži svoje sklepanje«, so znani sprožilci, ki aktivirajo naučeno sklepanje modela.
Empirično ima lahko ta preprosta sprememba velik vpliv. Pri aritmetičnih primerjalnih testih so zgodnje raziskave pokazale, da se natančnost poveča z približno 10 % na več kot 40 % samo z dodajanjem navodil po korakih. Kakovost sklepanja se znatno izboljša brez gradnje ali vzdrževanja knjižnice primerov.
Zero-shot CoT blesti, ko želite hitro zmago pri nalogah splošnega sklepanja in vas zanimata zakasnitev in stroški. Pozivi ostanejo kratki, zato plačate za manj žetonov in manj gradnje konteksta, hkrati pa še vedno pridobite znatno interpretabilnost in natančnost.
Slaba stran je, da si mora model izmisliti lasten slog sklepanja, ki je lahko preobsežen, nedosleden med domenami ali občasno nelogičen, tudi če je končni odgovor videti v redu. Za specializirana področja – finance, medicino, pravo, varnostno kritične odločitve – to običajno ni dovolj.
Nekajkratna veriga misli
Pri CoT z manj poskusi uporabljamo bolj subjektiven pristop: prikazujemo primere vprašanj in odgovorov v parih, kjer odgovori vključujejo eksplicitne korake sklepanja. Po nekaj takšnih demonstracijah dodate svoje pravo vprašanje in pustite, da model posnema vzorec.
Ta pristop je izjemno močan, kadar je struktura veljavnega sklepanja resnično pomembna. Za orodje za finančno analizo lahko vključite primere, ki vodijo skozi izračune denarnega toka, diskontne stopnje in prilagoditve tveganja. Za robota za medicinsko triažo bi vgradili klinična odločitvena drevesa: simptome, anamnezo, opozorilne znake, razlike in nato priporočila.
Kompromis je, da CoT z nekaj poskusi zahteva resen in hiter inženirski napor. Zasnovati morate čiste in raznolike primere, zagotoviti, da je njihova logika pravilna in reprezentativna, ter jih posodabljati, ko se omejitve vašega izdelka ali domene razvijajo. Daljši pozivi pomenijo tudi več žetonov, višje stroške in večjo zakasnitev na klic.
Kljub temu, ko je domena občutljiva ali kompleksna, CoT z nekaj poskusi običajno prekaša ničelni CoT in je pogosto osnovna vrednost, ki jo boste želeli v produkciji. Dobite večji nadzor nad slogom in globino sklepanja ter lahko model usmerite stran od krhkih ali nepomembnih miselnih vzorcev.
Samodejna veriga misli (Auto-CoT)
Ročno ustvarjanje dobrih primerov CoT se ne obnese dobro, zato so raziskovalci predlagali samodejno verigo misli (Auto-CoT), da bi večino tega dela prenesli nazaj na model. Ideja je samodejno generiranje različnih verig sklepanja, ki jih lahko ponovno uporabite kot demonstracije.
Auto-CoT se običajno odvija v dveh fazah:
- Združevanje vprašanj v skupine: Vzamete nabor podatkov o problemih, jih vdelate (na primer z uporabo transformatorja stavkov) in jih združite, tako da se podobna vprašanja znajdejo skupaj.
- Demonstracijski vzorec: Iz vsake skupine izberete reprezentativno vprašanje in prosite LLM, naj ustvari verigo sklepanja z ničelnim CoT, običajno z uporabo nekaj preprostih hevristik, kot so »kratka vprašanja s ~5 koraki sklepanja«.
Rezultat je knjižnica samodejno ustvarjenih, razmeroma raznolikih primerov CoT brez ročnega avtoringa. Ko pride nova poizvedba, lahko iz te knjižnice pridobite ali vzorčite ustrezne demonstracije in jih vnesete v poziv kot nekajkratne primere CoT.
Čeprav nekatere samodejno ustvarjene verige vsebujejo majhne napake, raznolikost in iskanje ponavadi zmanjšata vpliv vsakega posameznega pomanjkljivega primera. V praksi Auto-CoT pogosto premaga tako surovi CoT z ničnimi udarci kot naivni CoT z nekaj udarci pri merilih sklepanja, hkrati pa prihrani veliko človeškega časa.
Samokonsistentnost po več poteh sklepanja
Samokonsistentnost je napredna razširitev, ki jo trgovci izračunajo za zanesljivost. Namesto da bi model vprašali za eno verigo sklepanja in odgovor, vzorčite več neodvisnih verig (s spreminjanjem temperature ali parametrov vzorčenja) in nato končne odgovore združite z večinskim glasovanjem.
Intuicija pravi, da obstaja veliko veljavnih poti sklepanja, ki vodijo do istega pravilnega odgovora, vendar se napačne poti pogosto razhajajo. Na primer, »15 − 3 + 8« bi lahko izračunali kot »12 + 8« ali »15 + 8 = 23, nato odštejemo 3« ali »izračunamo od leve proti desni«. Vse to da rezultat 20, vendar lahko prekinjena veriga konča z rezultatom 21. Če izvedete več vzorcev, je napačen odgovor običajno preglasovan.
Pri merilih uspešnosti, kot je GSM8K, je dodajanje samokonsistentnosti CoT prineslo dvomestno odstotne izboljšave natančnosti. Očitna težava je v tem, da zdaj na uporabniško poizvedbo izvajate več klicev LLM, kar pomnoži tako zakasnitev kot porabo žetonov s številom vzorcev.
Zaradi tega je samodoslednost najbolj primerna za delovne obremenitve z visokimi vložki: finančni izračuni, pravno sklepanje, podpora kliničnemu odločanju, varnostni pregledi. Za občasnega klepetalnega bota dodatni izračuni le redko izginejo, za agenta, ki je ključnega pomena, pa je lahko dodatna zanesljivost vredna vsake milisekunde.
Drevo misli: razvejanje namesto linearnega sklepanja
Drevo misli (ToT) razširja verigo misli iz ene same verige v razvejano iskalno drevo čez možne misli. Namesto da bi od začetka do konca sledil eni sami poti razmišljanja, sistem na vsakem koraku razišče več možnosti, obreže šibke veje in nadaljuje po najmočnejših.
To je bližje temu, kako bi se v glavi lotili kombinatoričnih ali strateških problemov. Razmislite o nekaj možnih potezah, jih delno raziščete, zavržete tiste, ki se zdijo slepa ulica, in še naprej širite obetavne smeri, dokler ne pridete do trdne rešitve.
V smislu implementacije ToT običajno koordinira veliko klicev LLM. Na vsaki globini drevesa model predlaga naslednje korake; krmilnik oceni delna stanja, morda z uporabo drugega LLM ali hevrističnega točkovanja, in izbere, katere veje bo razširil. Raziskovalne demonstracije so uporabile ToT za reševanje ugankarskih iger, nalog načrtovanja in ustvarjalnih idej z bistveno boljšimi rezultati kot navaden CoT.
Kompromis so stroški: za eno samo težavo boste morda potrebovali na ducate klicev. Zato je ToT najbolje rezerviran za niše, kjer je temeljito raziskovanje pomembnejše od hitrosti – kompleksno oblikovanje, igralni agenti ali možganska nevihta, kjer sta cilja globina in raznolikost.
Od najmanj do največ spodbud
Spodbujanje od najmanjšega do največjega je še ena napredna strategija, ki zapleten problem razdeli na enostavnejše podprobleme, ki se obravnavajo zaporedno. Najprej prosite model, naj določi minimalno podnalogo, ki jo lahko reši; nato to rešitev vnesete nazaj in vprašate za naslednjo najkompleksnejšo komponento; in tako naprej, dokler ni problem v celoti rešen.
Ta vzorec še posebej dobro deluje pri kompozicijskem sklepanju. Pomislite na ugnezdene poizvedbe po podatkovnih strukturah, večstopenjsko algebro ali generiranje kode za kompleksne funkcije, kjer je vsak del odvisen od prejšnjih izhodov. Z vsiljevanjem čiste dekompozicije zmanjšate kognitivno obremenitev modela na vsakem koraku in olajšate pregled celotne sledi sklepanja.
Veriga misli v agentnih in orodno-uporabnih sistemih
CoT postane še bolj dragocen, ko začnete graditi agente, ki izvajajo dejanja, kličejo orodja in načrtujejo v več korakih. Namesto da bi odgovorili na eno samo vprašanje in se ustavili, se ti sistemi zanko ponavljajo v ciklih razmišljanja, delovanja in opazovanja ter posodabljajo svoje načrte z vsako novo informacijo.
Predstavljajte si podpornega agenta, ki obravnava vprašanje: »Prejšnji torek sem naročil rdeč pulover, dobil pa sem modrega. Ali ga lahko vrnem?« Razumen postopek vračila bi lahko bil: razumevanje težave, iskanje naročila, preverjanje pravilnika o vračilu, preverjanje roka za vračilo, določitev upravičenosti in končno začetek vračila.
Z enostavnim pozivom lahko agent na podlagi hitrega ujemanja vzorca preskoči na »Seveda, tukaj je oznaka« ali »Ne, tega ne moremo storiti« in pri tem preskoči ključna preverjanja. Z verigo misli ga spodbudite, da pove nekaj takega: »Najprej bom poiskal vaše naročilo od prejšnjega torka, nato preveril neujemanje artikla in barve, nato preveril, ali ste v 30-dnevnem roku, in nato sprožil tok vračila, če je upravičen.«
To je blizu vzorcu ReAct (Reason + Act): agent izmenično uporablja notranje sklepanje (»Moram poizvedovati API za naročila«) in zunanja dejanja (klic API-ja), nato pa opažanja integrira v naslednji korak sklepanja. Vsak delček »misli« postane del sledi, ki jo lahko beležite, odpravljate napake in analizirate.
Za agentske sisteme CoT ni le nekaj lepega, kar je treba imeti; pogosto je glavni vzvod za zanesljivost, preglednost in varnost. Ko se kaj pokvari – napačno orodje, napačen parameter, napačna interpretacija – lahko dejansko vidite, kje je agent skrenil s poti, in popravite poziv, orodja ali pravilnik, namesto da ugibate v temi.
Veriženje promptov v primerjavi z verigo misli
Tako hitro veriženje kot veriga misli pomagata pri kompleksnih nalogah, vendar delujeta na različnih ravneh. Z veriženjem pozivov razdelite velik potek dela na več ločenih pozivov in preusmerite izhod enega v naslednjega. S CoT vdelate celoten postopek sklepanja v eno samo izmenjavo pozivov in odgovorov.
Primer veriženja pozivov: Analiza knjige v treh korakih – prvi poziv za povzetek zapleta, drugi poziv za analizo teme z uporabo tega povzetka in tretji poziv za končni pregled z uporabo obeh. Vsak korak je ločen klic LLM s svojim ukazom.
Primer verige misli za podobno nalogo: V enem samem pozivu rečete: »Najprej povzemite zaplet, nato opredelite glavne teme in zaključite s kratko kritično perspektivo. Premislite o vsaki fazi korak za korakom.« Model nato ustvari svoj mini cevovod misli in končni odgovor v enem samem posnetku.
V praksi resnični sistemi pogosto združujejo oboje: uporabljajo CoT znotraj vsakega verižnega koraka za izboljšanje sklepanja in verižijo več pozivov, razširjenih s CoT, za orkestriranje dolgih delovnih procesov. Glavna razlika je v tem, da veriženje pozivov strukturira potek dela makrov v več klicih, medtem ko veriga misli strukturira mikro sklepanje znotraj vsakega klica.
Multimodalna veriga misli
Z dozorevanjem multimodalnih modelov veriga misli ni več omejena na čisto besedilo. Multimodalni CoT omogoča sistemu, da skupno sklepa o besedilu, slikah in morebiti drugih vhodnih podatkih, kot so zvok ali tabele, hkrati pa še vedno pripoveduje svoje notranje korake.
Fotografirajte gnečo na plaži in vprašanje: "Ali je ta kraj trenutno videti priljubljen med turisti?" Multimodalni model CoT bi lahko eksplicitno zabeležil število senčnikov, gostoto ljudi, prometno parkirišče in znake iz časa dneva ali senc, nato pa bi trdil, da vsi ti vizualni signali kažejo na visoko trenutno priljubljenost.
Z jasno predstavitvijo vizualnega sklepanja ne dosežete le večje natančnosti, temveč tudi veliko bolj razumljivih odločitev. Uporabniki lahko vidijo, na katere elemente slike se je model osredotočil, in opazijo lahko načine napak, kot je prekomerno indeksiranje nepomembnih podrobnosti.
Optimizacija verige misli v velikem obsegu
Ko se od nekaj predstavitev premaknete na dejanski promet, se pojavi neurejena realnost: učinkovitost CoT je močno odvisna od naloge, posodobitve modelov in vodnik za selitev, besedno zvezo in konkretne primere, ki jih navajate. Dobro napisano sklepanje lahko še vedno vodi do napačnih odgovorov, dolge miselne verige pa lahko porabijo žetone, ne da bi dodale veliko vrednosti.
Da bi CoT deloval v produkciji, potrebujete povratno zanko, ki hkrati spremlja več dimenzij:
- Končna natančnost: Ali odgovor modela ustreza pričakovani resnici na tleh ali človeški presoji?
- Kakovost sklepanja: Ali so vmesni koraki veljavni, logično skladni in usklajeni z omejitvami domene?
- Usklajenost: Ali podobna vprašanja v različnih izvedbah in skozi čas dajejo podobno sklepanje in odgovore?
- Učinkovitost žetonov: Koliko žetonov porabite na poizvedbo in ali v zameno dobite dovolj kakovosti?
Ročno naključno preverjanje na peščici primerov ni več dovolj, ko imate na voljo na desetine različic promptov in na stotine testnih primerov. Potrebujete infrastrukturo, ki lahko prikazuje različice pozivov, izvaja strukturirane ocene in vizualizira sledi sklepanja v velikem obsegu.
Namensko izdelana orodja za opazovanje za LLM-je pri tem pomagajo tako, da zajamejo celotne sledi – poziv, model, sklepanje CoT, klice orodij, končni izhod – za vsako zahtevo. Platforme, kot je Opik, vam na primer omogočajo podrobno beleženje in pregled verig CoT, primerjavo različnih različic pozivov in celo uporabo nastavitev LLM-as-a-judge za samodejno ocenjevanje končnih odgovorov in kakovosti sklepanja.
S temi podatki v roki lahko postopoma izpopolnite svoje nastavitve CoT: prilagodite besedilo, zamenjate ničelni poskus z nekaj poskusi, prilagodite ali regenerirate primere z Auto-CoT ali uvedete samodoslednost le tam, kjer to premakne kazalec. Nekateri ogrodji se celo integrirajo z optimizacijskimi knjižnicami, kot sta DSPy ali evolucijsko iskanje, da iterativno razvijajo boljše pozive na podlagi metrik vrednotenja.
Upoštevajte, da veriga misli skoraj vedno stane več kot neposredno odgovarjanje: samo besedilo sklepanja lahko poveča uporabo žetonov za 2-4-krat, samodoslednost to pomnoži s številom vzorcev, drevo misli pa je lahko spet za velikostni red dražje. Zato si želite jasnega spremljanja, da boste natančno vedeli, kje se ta dodatni proračun obrestuje.
Za številne ekipe je pragmatična strategija večstopenjska: privzeto se uporabi lahek CoT z ničelnim ali kratkim obsegom delovanja (zero-shot) ter se stopnjeva do samodoslednosti ali ToT samo za poizvedbe, označene kot visokovrednostne, zelo dvoumne ali visoko tvegane. Opazljivost in vrednotenje sta tisto, zaradi česar je tovrstna dinamična strategija izvedljiva.
Ko eksperimentirate s CoT v lastnih aplikacijah – bodisi s hitrimi pozivi z ničelnim poskusom, skrbno izbranimi primeri z nekaj poskusi, avtomatiziranimi knjižnicami Auto-CoT ali večvzorčno samokonsistentnostjo – je ključnega pomena, da sklepanje modela obravnavate kot prvovrstno površino izdelka. Če ga naredite eksplicitnega, ga zabeležite, ocenite in ga ponovite, boste iz istih osnovnih modelov odklenili veliko bolj zanesljivo, razumljivo in zmogljivo vedenje, kot bi ga kdajkoli lahko dosegli z enostavnimi odgovori.
