Menu

Chain of thought: vamos pensar passo a passo

O chain of thought (cadeia de pensamento) pede ao modelo que escreva o raciocínio antes de dar a resposta. Ajuda mais em problemas de matemática e lógica com várias etapas e importa menos em modelos de raciocínio, que já pensam antes de responder.

Você pode editar cada prompt desta página e depois abri-lo no ChatGPT, no Claude ou em outro app de IA.

O chain of thought prompting (prompt de cadeia de pensamento) pede a um modelo de linguagem que escreva as etapas intermediárias de um problema antes de dar a resposta final. Em problemas de várias etapas, como problemas com enunciado, quebra-cabeças de lógica e agendas, trabalhar às claras tende a produzir mais respostas corretas do que responder de uma vez, e ainda deixa etapas que você pode conferir. A versão mais curta é uma única frase acrescentada ao prompt: "Vamos pensar passo a passo."

Por que escrever as etapas ajuda

O modelo produz a resposta um token por vez, e tudo o que ele já escreveu vira entrada para o próximo token. Se o prompt exige a resposta imediatamente, o modelo precisa produzi-la antes que exista qualquer resultado intermediário na página. Se ele escreve primeiro "o café de segunda somou R$ 168", esse número passa a estar no contexto, e a etapa seguinte pode se apoiar nele em vez de carregá-lo de forma implícita.

Essa é a intuição. As evidências vieram de dois artigos de 2022. Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", mostraram que exemplos resolvidos com o raciocínio escrito melhoravam modelos grandes em tarefas de aritmética, senso comum e raciocínio simbólico. Eles também descobriram que o benefício dependia da escala: modelos menores não ganhavam nada e muitas vezes escreviam um raciocínio fluente que levava a respostas erradas. Depois, Kojima et al., "Large Language Models are Zero-Shot Reasoners", mostraram que uma frase sem exemplos, "Let's think step by step" ("Vamos pensar passo a passo"), também melhorava muito os resultados, embora em geral menos do que os exemplos resolvidos.

Resposta direta e chain of thought

As duas abas fazem a mesma pergunta. A primeira exige só o valor; a segunda pede o raciocínio e coloca a resposta em uma última linha fixa.

Uma cafeteria vende café a R$ 3,50 e muffins a R$ 2,25. Na segunda-feira, ela vendeu 48 cafés e alguns muffins e faturou R$ 213 no total. Na terça-feira, vendeu 10 cafés a menos do que na segunda e o dobro de muffins. Quanto ela faturou na terça? Responda só com o valor.
Try it
Example replyReplies vary between models and runs.

R$ 258

A resposta direta mostra um deslize típico: R258eˊocafeˊdesegunda(R 258 é o café de segunda (R 168) mais os muffins de terça (R$ 90), ou seja, ela esqueceu que na terça foram vendidos 10 cafés a menos. A resposta passo a passo dá à quantidade de cafés de terça uma linha própria, então essa etapa não pode ser pulada em silêncio. Um modelo atual pode acertar a versão direta também; a diferença aumenta conforme os problemas ficam mais longos e as etapas dependem mais umas das outras.

As etapas escritas têm um segundo benefício: quando a resposta está errada, você consegue ver qual etapa quebrou e corrigir o prompt ou a entrada naquele ponto.

Chain of thought few-shot

A técnica original de Wei et al. coloca no prompt exemplos resolvidos cujas respostas mostram o raciocínio, e o modelo responde à nova pergunta do mesmo jeito. O exemplo abaixo foi adaptado da primeira figura do artigo; a pergunta depois dele é nova. Troque a pergunta para testar a sua.

Chain of thought few-shot
Fill in
Parts
P: Roger tem 5 bolas de tênis. Ele compra mais 2 latas de bolas de tênis. Cada lata tem 3 bolas. Quantas bolas de tênis ele tem agora? R: Roger começou com 5 bolas. 2 latas com 3 bolas cada dão 6 bolas. 5 + 6 = 11. A resposta é 11.
P: Uma biblioteca tinha 120 livros nas prateleiras. Emprestou 45, recebeu 18 de volta e ganhou uma doação de 30. Quantos livros há nas prateleiras agora? R:
Try it
Example replyReplies vary between models and runs.

A biblioteca começou com 120 livros. Emprestar 45 deixou 75 nas prateleiras. Receber 18 de volta deu 93. A doação de 30 levou o total a 123. A resposta é 123.

O CoT few-shot dá controle sobre a forma do raciocínio: o tamanho, o que ele detalha e como a resposta é apresentada. "A resposta é 11" no exemplo é um final fixo, e a resposta o copiou. O CoT zero-shot é mais rápido de escrever, mas deixa essas escolhas para o modelo. Para saber mais sobre montar conjuntos de exemplos, veja prompt few-shot; para a versão só com instrução, veja prompt zero-shot.

Coloque a resposta em uma linha própria

Quando a resposta contém raciocínio, o resultado fica em algum lugar dentro de um parágrafo, o que é um problema quando um programa precisa lê-lo. Peça a resposta em uma forma fixa na última linha, como o prompt da cafeteria faz com "Resposta: R$ X", e leia essa linha no código. O trecho abaixo procura o rótulo Answer:; troque pelo rótulo que você pediu no prompt, como Resposta:.

import re

matches = re.findall(r"^Answer:\s*(.+)$", reply, re.MULTILINE)
answer = matches[-1] if matches else None

Pegar a última ocorrência importa, porque o próprio raciocínio pode conter uma linha que começa com o rótulo antes de o modelo se corrigir. Se os usuários devem ver só a resposta, peça o raciocínio dentro de um par de tags e a resposta dentro de outro, e mostre só o segundo. Saída estruturada mostra como pedir JSON quando você precisa de mais de um campo.

Modelos de raciocínio

Alguns modelos atuais são feitos para pensar antes de responder: eles geram um raciocínio interno, muitas vezes oculto ou resumido, antes da resposta visível. Para eles, "Vamos pensar passo a passo" importa bem menos, porque as etapas acontecem quer você peça, quer não. Acrescentar a frase normalmente só deixa a resposta visível mais longa.

O que ainda ajuda com um modelo de raciocínio é tudo o que está em volta do raciocínio: um enunciado completo do problema, as restrições que uma resposta correta precisa cumprir e o formato da resposta final. Descreva como é uma boa resposta em vez de roteirizar cada etapa; uma receita fixa de etapas pode desviar o modelo de um caminho melhor que ele encontraria sozinho.

Quando não usar chain of thought

O chain of thought custa tokens e tempo, e só compensa quando a tarefa tem etapas que dependem umas das outras. Em uma consulta, uma tradução, uma reescrita ou uma classificação simples, ele só deixa a resposta mais longa. Um modelo também pode escrever um raciocínio que parece correto e ainda assim chegar a uma resposta errada, então confira o resultado final por conta própria, e não só as etapas que levaram a ele.

Para problemas difíceis em que uma única cadeia pode dar errado, duas extensões partem dela. O prompt de autoconsistência gera várias cadeias e fica com a resposta a que a maioria chega, e o tree of thought explora e compara várias linhas parciais de raciocínio antes de se comprometer com uma.

Perguntas frequentes

O que é chain of thought prompting?

Chain of thought (CoT), ou cadeia de pensamento, é pedir a um modelo de linguagem que escreva as etapas intermediárias de um problema antes da resposta final, seja mostrando exemplos resolvidos que incluem o raciocínio, seja acrescentando uma instrução como "Vamos pensar passo a passo". Em problemas de várias etapas, isso tende a produzir mais respostas corretas e permite conferir cada etapa.

"Vamos pensar passo a passo" ainda funciona?

Com modelos de chat comuns, ainda ajuda em problemas de várias etapas, principalmente quando o prompt, de outra forma, empurraria para uma resposta imediata. Os modelos de raciocínio, que pensam antes de responder, já fazem isso internamente, então a frase acrescenta pouco para eles além de uma resposta mais longa. Com esses modelos, apresente o problema e o formato da resposta com clareza.

Quando o chain of thought ajuda, e quando não ajuda?

Ajuda em tarefas que exigem várias etapas dependentes: problemas com enunciado, aritmética, quebra-cabeças de lógica, agendas com restrições e acompanhar o que um código faz. Acrescenta pouco a consultas, tradução, reescrita ou classificação simples, em que só deixa a resposta mais longa e mais lenta.

Qual é a diferença entre chain of thought zero-shot e few-shot?

O CoT few-shot, apresentado por Wei et al. em 2022, coloca no prompt exemplos resolvidos com o raciocínio, e o modelo imita esse estilo de raciocínio. O CoT zero-shot, de Kojima et al. 2022, não usa exemplos e simplesmente acrescenta uma instrução como "Vamos pensar passo a passo". O zero-shot é mais rápido de escrever; o few-shot dá mais controle sobre a cara das etapas.

O raciocínio escrito é o caminho que o modelo realmente seguiu?

Não necessariamente. As etapas são texto gerado pelo modelo, e podem parecer corretas enquanto a resposta final sai errada, ou conter um erro enquanto a resposta por acaso está certa. Trate o raciocínio como algo a conferir, não como prova, e verifique a resposta final por conta própria.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR