Chain-of-thought-prompting
Få frem trinnvis resonnering.
Chain-of-thought-prompting er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-prompt engineering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Resonnering som tokenbudsjett
Chain-of-thought (CoT)-prompting fremkaller mellomliggende resonnementstrinn før det endelige svaret. Hovedinnsikten er at transformere utfører en fast mengde beregning per token. Når modellen får lov til å generere resonnementstokener, får den i praksis mer sekvensiell beregningskapasitet til å finne svaret.
Hvis modellen tvinges til å svare umiddelbart, begrenses beregningen som er tilgjengelig for en vanskelig oppgave. CoT fjerner denne begrensningen ved å spre beregningen over tokenene som genereres.
# Direct: model must compute everything before the first token
DIRECT = 'Q: ' + q + '\nA:'
# CoT: model can use tokens as scratch space
COT = 'Q: ' + q + '\nA: Let us reason step by step.'Zero-shot CoT
Den berømte utløsende frasen Let us think step by step (Kojima et al., 2022) fremkaller resonnement uten eksempler. Dette virker fordi instruksjonsjusterte modeller har lært mønsteret der en slik frase etterfølges av en gjennomarbeidet løsning.
Zero-shot CoT er billig og overraskende effektivt, men kvaliteten på resonnementet er mindre kontrollerbar enn ved few-shot CoT med kuraterte eksempler.
def zero_shot_cot(question):
stage1 = llm('Q: ' + question + '\nA: Let us think step by step.')
# Extract the final answer in a second, constrained call
stage2 = llm(stage1 + '\nTherefore, the final answer is:')
return parse_answer(stage2)Few-shot CoT
Few-shot CoT (Wei et al., 2022) gir eksempler som inneholder resonnementssporet, ikke bare svaret. Dette lærer modellen både hvordan den skal resonnere og hvilket format den skal bruke, noe som gir mer pålitelige og konsistente tankerekker enn zero-shot.
Velg eksempler der resonnementets stil, detaljnivå og lengde samsvarer med det du ønsker at modellen skal kopiere. Uensartet resonnement i eksemplene gir uensartede tankerekker.
FS_COT = (
'Q: Roger has 5 balls, buys 2 cans of 3. How many balls?\n'
'A: 5 + 2*3 = 5 + 6 = 11. The answer is 11.\n\n'
'Q: ' + question + '\nA:'
)Skille resonnementet fra svaret
Gjør alltid det endelige svaret maskinuttrekkbart: Avslutt tankerekken med en fast markør, for eksempel The answer is X eller et JSON-felt. Det er sårbart å analysere tankerekker i fritt format.
I brukerrettede produkter kan du skjule tankerekken og bare vise det analyserte svaret, mens resonnementet beholdes som en intern kladd.
import re
def extract(chain):
m = re.search(r'[Tt]he answer is\s*(.+?)[.\n]', chain)
if not m:
raise ValueError('no answer marker found')
return m.group(1).strip()At resonnementet er korrekt, er ikke garantert
Et viktig forbehold er at den verbaliserte tankerekken ikke nødvendigvis gjenspeiler modellens faktiske beregning. Studier viser at modeller kan generere resonnementer som høres plausible ut, men som i ettertid rasjonaliserer et svar som egentlig drives av skjulte skjevheter, for eksempel alternativets plassering.
Ikke betrakt CoT som en troverdig forklaring eller et revisjonsspor. Det forbedrer nøyaktigheten i mange oppgaver, men gir ikke innsyn i modellens faktiske mekanisme.
# Faithfulness probe: perturb an irrelevant cue (e.g., always make
# option A correct in the few-shot). If the chain still 'justifies'
# choosing A, the stated reasoning is unfaithful to the real cause.Avkodingsinnstillinger for CoT
For én deterministisk tankerekke reduserer lav temperatur variansen. CoT fungerer imidlertid svært godt sammen med sampling: Ved moderat temperatur kan du trekke flere ulike tankerekker og aggregere dem, slik det beskrives i self-consistency.
Unngå grådig avkoding når du har tenkt å trekke flere baner. Grådig avkoding fjerner mangfoldet og gjør aggregering nytteløs.
single = llm(COT, temperature=0.0) # one stable chain
paths = [llm(COT, temperature=0.7) for _ in range(10)] # diverseStrukturert resonnement og resonnement i tabellform
For komplekse problemer bør du gi tankerekken struktur: nummererte trinn, en tilstandstabell eller et skille mellom planlegging og utføring. Struktur reduserer antall oversprungne trinn og gjør mellomliggende tilstander etterprøvbare.
Programstøttede metoder går et skritt videre ved å generere kjørbar kode som resonnement og overlate aritmetikken til en fortolker. Dermed fjernes en hel klasse beregningsfeil.
PAL = (
'Solve by writing Python. Q: ' + q + '\n'
'A:\ndef solve():\n'
' # the model writes code here, then we exec() it\n'
)
# Offload arithmetic to a deterministic interpreterLengde, kostnad og ventetid
CoT øker antallet genererte tokener og dermed kostnad og ventetid. For enkle oppgaver gir dette ingen gevinst, mens det er avgjørende for vanskelige oppgaver. Et pragmatisk mønster er adaptivt resonnement: Utløs CoT bare når et rimelig estimat av vanskelighetsgrad eller et svar med lav konfidens tilsier det.
På resonneringsmodeller med innebygd tenkning styrer du i stedet et budsjett for resonnementinnsats, fremfor å be modellen om å generere tankerekken selv.
def adaptive(question):
direct = llm('Q: ' + question + '\nA (answer only):', temperature=0)
if confidence(direct) > 0.85:
return direct
return zero_shot_cot(question) # escalate to reasoning only if neededCoT på resonneringsmodeller
Moderne resonneringsmodeller utfører automatisk utvidet intern overveielse. Det kan være overflødig eller til og med motvirke formålet å fylle dem med omstendelige instruksjoner som Let us think step by step, fordi dette forstyrrer den innlærte tenkeprosessen.
For disse modellene bør du foretrekke korte oppgavebeskrivelser og tydelige krav til svarformat, og justere parameteren for reasoning-effort i stedet for å utforme tankerekker manuelt.
# Reasoning-native model: let it think, just constrain the output
resp = reasoning_model(
prompt=question,
reasoning_effort='medium',
output_format='Final answer on the last line as: ANSWER=<x>'
)Når CoT gir motsatt effekt
CoT kan forringe resultatene på oppgaver der overveielse overstyrer riktig intuisjon, på enkel mønstergjenkjenning eller når verbalisering introduserer feil modellen ikke ville gjort implisitt. Det utvider også angrepsflaten for prompt-injeksjon i lange kjeder.
Sammenlign CoT med direkte svar for hver oppgave, og anta aldri at resonneringsprompter er nyttige i alle sammenhenger.
def should_use_cot(task_acc_cot, task_acc_direct, cot_cost_mult):
gain = task_acc_cot - task_acc_direct
# Only adopt CoT if accuracy gain justifies the token multiplier
return gain > MIN_GAIN and gain / cot_cost_mult > MIN_EFFICIENCYCoT i produksjon
CoT i produksjon: velg ut konsistente eksempler (eller stol på modellens innebygde resonnering), krev en svarmarkør som kan analyseres, generer flere kjeder for vanskelige oppgaver, valider aritmetikk med kodekjøring der det er mulig, og aktiver resonnering basert på et vanskelighetsestimat for å kontrollere kostnadene.
Logg kjedene for offline-analyse, men eksponer dem aldri som fasitforklaringer.
def production_solve(q):
if easy(q):
return extract(llm(DIRECT_PROMPT.format(q=q), temperature=0))
chains = [llm(FS_COT.format(q=q), temperature=0.7) for _ in range(8)]
return majority_vote([extract(c) for c in chains])Hurtigsjekk
Resonner over hvorfor CoT hjelper, og hvor det ikke gjør det.
Oppsummering
Viktigste punkter:
- CoT bytter ekstra tokener mot ekstra sekvensiell beregning; det hjelper på oppgaver i flere trinn, men ikke på trivielle oppgaver.
- Zero-shot-CoT bruker en utløsende frase, mens few-shot-CoT gir konsistente eksempler på resonnering.
- Avslutt alltid med en svarmarkør som kan hentes ut maskinelt; kjeder er ikke pålitelige forklaringer.
- Generer flere kjeder for vanskelige oppgaver, overlat aritmetikk til kode, og aktiver CoT basert på vanskelighetsgrad.
- For modeller med innebygd resonnering bør De foretrekke korte prompter med et budsjett for resonneringsinnsats fremfor lange instruksjoner om resonneringskjeder.
Lær deg AI-prompt engineering med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 199
Ofte stilte spørsmål
Er leksjonen «Chain-of-thought-prompting» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «Chain-of-thought-prompting», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Chain-of-thought-prompting»?
Få frem trinnvis resonnering. Du øver på AI-prompt engineering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-prompt engineering?
Ingen tidligere erfaring er nødvendig. AI-prompt engineering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Chain-of-thought-prompting»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-prompt engineering-leksjonen?
Ja. Alle AI-prompt engineering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Chain-of-thought-prompting
- Sampling med self-consistency
- Utforskning med tree-of-thought
- Når resonneringsprompter hjelper