ReAct Prompting

ReAct Prompting

Advanced

Advanced Reasoning

ReAct (Reasoning and Acting) kombinerer reasoning og action-taking i én prompt. Modellen tænker højt, beslutter actions og observerer resultater iterativt.

Foto: Zach M / Unsplash

Hvad teknikken går ud på

ReAct strukturerer en opgave som en gentagen sekvens af tre felter: Thought, Action og Observation. Modellen formulerer et ræsonnement, vælger en handling i et defineret format, og får resultatet af handlingen tilbage som tekst i konteksten. Løkken kører videre, indtil modellen producerer et Answer-felt.

Forskellen til chain-of-thought er hvor mellemleddene kommer fra. I chain-of-thought stammer hvert skridt fra modellens egne vægte, og en fejl tidligt i kæden bliver ikke opdaget. I ReAct erstattes de faktuelle mellemled af observationer fra en søgning, en database eller et API.

Forskellen til tree-of-thought er formen. Tree-of-thought forgrener flere hypoteser og vælger mellem dem, mens ReAct typisk er lineær og i stedet henter ny information ind mellem hvert skridt. Og i forhold til rå function calling er ReAct ikke et API-format, men et mønster for, hvornår kald udføres, og hvordan resultatet indarbejdes.

Hvorfor det virker

Når en observation skrives ind i prompten, bliver den en del af det token-materiale, næste generering betinges på. Sandsynlighedsfordelingen for de følgende tokens flyttes dermed fra parametrisk hukommelse mod konkret tekst i context window. Det er samme mekanisme som i RAG, blot udløst af modellen selv i stedet for af et fast forudgående opslag.

Thought-feltet fungerer som en oversættelse fra et sammensat spørgsmål til ét præcist kald. Et spørgsmål med to led kan sjældent besvares af én søgning, og den mellemliggende tekst tvinger opdelingen frem, før Action-feltet skrives.

Det faste format har også en teknisk funktion. Fordi Action-linjen følger en fast syntaks, kan den parses af koden omkring modellen uden fri fortolkning. Fejlforplantning begrænses, fordi hvert led bekræftes eksternt, før det næste bygges ovenpå.

Hvornår det ikke hjælper

Hvis svaret allerede ligger i modellens vægte, tilføjer løkken kun latency og tokenforbrug. Et enkeltstående faktaspørgsmål eller en ren omskrivningsopgave bliver ikke bedre af tre runder Thought og Observation.

Transparens forveksles let med korrekthed. Thought-sporet er genereret tekst, ikke en protokol over den underliggende beregning, og et velformuleret ræsonnement kan stå ved siden af et forkert svar. Endnu vigtigere: en observation behandles som sand, uanset om kilden var upålidelig. Et misvisende søgeresultat forplanter sig direkte til svaret og ser mere troværdigt ud, netop fordi det står under Observation.

Håndskrevet ReAct-scaffolding er desuden ofte overflødigt på Claude Opus 5, GPT-5.6 Sol og Gemini 3.1 Pro. Disse modeller har intern reasoning og native tool-brug, og et konkurrerende tekstformat i prompten kan trække dem væk fra det trænede kaldsformat. Mindre modeller som GPT-5 nano og Claude Haiku 4.5 har stadig gavn af eksplicit struktur, men falder til gengæld oftere ud af formatet midt i en løkke.

Kontrol af løkken

Hele historikken sendes med i hver iteration, så tokenforbruget vokser hurtigt. Lange observationer bør trimmes eller opsummeres, inden de lægges tilbage i konteksten, ellers fortrænger de instruktionerne længere oppe.

Et loft over antal iterationer er nødvendigt i produktion. Uden det kan modellen gentage samme Action i det uendelige, typisk når et tool returnerer tomt eller fejler. Definer eksplicit, hvad der skrives i Observation ved fejl, så løkken får noget at reagere på i stedet for tavshed.

Eksempel

Prompt:

Spørgsmål: Hvad er befolkningen i Danmarks hovedstad?

Thought: Jeg skal først finde Danmarks hovedstad, derefter finde befolkningstallet.
Action: Search[Danmarks hovedstad]
Observation: København er Danmarks hovedstad.
Thought: Nu ved jeg hovedstaden er København. Jeg skal finde befolkningen.
Action: Search[København befolkning]
Observation: København har ca. 644,431 indbyggere (2023).
Thought: Jeg har nu svaret.
Answer: København, Danmarks hovedstad, har cirka 644,431 indbyggere.

Output:

Svaret findes gennem iterativ reasoning og action.

Hvornår skal du bruge denne teknik?

  • Når opgaven kræver flere steps
  • Når du har eksterne tools/APIs
  • For kompleks informationssøgning
  • Agent-baserede systemer

Fordele

  • Struktureret problem-solving
  • Integration med eksterne tools
  • Transparent reasoning proces
  • God til multi-step opgaver

Ulemper

  • !Kræver tool integration
  • !Kompleks at implementere
  • !Token-intensiv
  • !Langsom execution

Tips & Best Practices

  • 💡Definer klare actions modellen kan tage
  • 💡Giv feedback efter hver observation
  • 💡Brug med function calling
  • 💡Test grundigt før production

Relaterede Teknikker