Menu

Cadena de pensamiento: pensemos paso a paso

La cadena de pensamiento (chain of thought) le pide a un modelo que escriba su razonamiento antes de dar la respuesta. Ayuda sobre todo en problemas de matemáticas y lógica de varios pasos, e importa menos en los modelos de razonamiento, que ya piensan antes de responder.

Puedes editar cada prompt de esta página y abrirlo después en ChatGPT, Claude u otra app de IA.

La cadena de pensamiento (chain of thought prompting) le pide a un modelo de lenguaje que escriba los pasos intermedios de un problema antes de dar la respuesta final. En problemas de varios pasos, como los problemas de enunciado, los acertijos de lógica y los horarios, trabajar a la vista suele dar más respuestas correctas que responder de golpe, y te deja pasos que puedes comprobar. La versión más corta es una sola frase añadida al prompt: "Pensemos paso a paso".

Por qué ayuda escribir los pasos

Un modelo produce su respuesta un token a la vez, y todo lo que ya escribió pasa a ser entrada para el siguiente token. Si un prompt exige la respuesta de inmediato, el modelo tiene que producirla antes de que exista ningún resultado intermedio en la página. Si primero escribe "Las ventas de café del lunes suman $168", ese número ya está en el contexto, y el siguiente paso puede apoyarse en él en lugar de mantenerlo implícito.

Esa es la intuición. La evidencia llegó con dos artículos de 2022. Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", demostraron que los ejemplos resueltos con su razonamiento escrito mejoraban a los modelos grandes en tareas de aritmética, sentido común y razonamiento simbólico. También vieron que el beneficio dependía del tamaño: los modelos más pequeños no ganaban, y a menudo escribían un razonamiento fluido que llevaba a respuestas incorrectas. Después, Kojima et al., "Large Language Models are Zero-Shot Reasoners", mostraron que una sola frase sin ejemplos, "Let's think step by step" (pensemos paso a paso), también mejoraba mucho los resultados, aunque en general menos que los ejemplos resueltos.

Respuesta directa frente a cadena de pensamiento

Las dos pestañas hacen la misma pregunta. La primera exige solo la cantidad; la segunda pide el desarrollo y pone la respuesta en una última línea fija.

Una cafetería vende el café a $3.50 y las magdalenas a $2.25. El lunes vendió 48 cafés y algunas magdalenas, y recaudó $213 en total. El martes vendió 10 cafés menos que el lunes y el doble de magdalenas. ¿Cuánto recaudó el martes? Responde solo con la cantidad.
Try it
Example replyReplies vary between models and runs.

$258

La respuesta directa muestra un despiste típico: 258sonlos258 son los 168 de café del lunes más los $90 de magdalenas del martes, así que olvidó que el martes se vendieron 10 cafés menos. La respuesta paso a paso le da al número de cafés del martes su propia línea, así que ese paso no se puede saltar en silencio. Un modelo actual quizá acierte también la versión directa; la diferencia crece cuando los problemas son más largos y los pasos dependen más unos de otros.

Los pasos escritos tienen una segunda ventaja: cuando una respuesta está mal, puedes ver qué paso falló y corregir el prompt o la entrada en ese punto.

Cadena de pensamiento few-shot

La técnica original de Wei et al. pone en el prompt ejemplos resueltos cuyas respuestas muestran su razonamiento, y el modelo responde la nueva pregunta de la misma forma. El ejemplo de abajo está adaptado de la primera figura de su artículo; la pregunta que sigue es nueva. Cambia la pregunta para probar la tuya.

Cadena de pensamiento few-shot
Fill in
Parts
P: Roger tiene 5 pelotas de tenis. Compra 2 botes más de pelotas de tenis. Cada bote tiene 3 pelotas. ¿Cuántas pelotas de tenis tiene ahora? R: Roger empezó con 5 pelotas. 2 botes de 3 pelotas cada uno son 6 pelotas. 5 + 6 = 11. La respuesta es 11.
P: Una biblioteca tenía 120 libros en sus estantes. Prestó 45, le devolvieron 18 y recibió una donación de 30. ¿Cuántos libros hay ahora en sus estantes? R:
Try it
Example replyReplies vary between models and runs.

La biblioteca empezó con 120 libros. Al prestar 45 quedaron 75 en los estantes. Al devolverle 18 llegó a 93. La donación de 30 la llevó a 123. La respuesta es 123.

La CoT few-shot te da control sobre la forma del razonamiento: qué tan largo es, qué detalla y cómo se enuncia la respuesta. "La respuesta es 11" en el ejemplo es un cierre fijo, y la respuesta lo copió. La CoT zero-shot es más rápida de escribir, pero deja esas decisiones al modelo. Para saber más sobre cómo armar conjuntos de ejemplos, consulta prompting few-shot; para la versión solo con instrucciones, consulta prompting zero-shot.

Pon la respuesta en su propia línea

En cuanto la respuesta contiene razonamiento, el resultado queda en algún lugar dentro de un párrafo, y eso es un problema cuando un programa tiene que leerlo. Pide la respuesta con una forma fija en la última línea, como hace el prompt de la cafetería con "Answer: $X" (una etiqueta fija que conviene dejar tal cual, porque es la que busca el código), y lee esa línea en el código:

import re

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

Tomar la última coincidencia importa, porque el propio razonamiento puede contener una línea que empiece por "Answer:" antes de que el modelo se corrija. Si los usuarios solo deben ver la respuesta, pide el razonamiento dentro de un par de etiquetas y la respuesta dentro de otro, y muestra solo el segundo. Salida estructurada explica cómo pedir JSON cuando necesitas más de un campo.

Modelos de razonamiento

Algunos modelos actuales están hechos para pensar antes de responder: generan un razonamiento interno, a menudo oculto o resumido, antes de la respuesta visible. Para ellos, "Pensemos paso a paso" importa mucho menos, porque los pasos ocurren se lo pidas o no. Añadirlo normalmente solo alarga la respuesta visible.

Lo que sigue ayudando con un modelo de razonamiento es todo lo que rodea al razonamiento: un planteamiento completo del problema, las restricciones que debe cumplir una respuesta correcta y el formato de la respuesta final. Describe cómo es una buena respuesta en lugar de guionizar cada paso; una receta fija de pasos puede desviar al modelo de un camino mejor que habría encontrado por su cuenta.

Cuándo no usar la cadena de pensamiento

La cadena de pensamiento cuesta tokens y tiempo, y solo compensa cuando una tarea tiene pasos que dependen unos de otros. Para una consulta simple, una traducción, una reescritura o una clasificación sencilla, solo hace más larga la respuesta. Un modelo también puede escribir un razonamiento que parece sólido y aun así llegar a una respuesta incorrecta, así que comprueba el resultado final por separado, no solo los pasos que llevaron a él.

Para problemas difíciles en los que una sola cadena puede equivocarse, hay dos extensiones que se apoyan en ella. La autoconsistencia genera varias cadenas y se queda con la respuesta a la que llegan la mayoría, y el árbol de pensamiento explora y compara varias líneas parciales de razonamiento antes de comprometerse con una.

Preguntas frecuentes

¿Qué es la cadena de pensamiento en prompting?

La cadena de pensamiento (chain of thought, CoT) le pide a un modelo de lenguaje que escriba los pasos intermedios de un problema antes de su respuesta final, ya sea mostrando ejemplos resueltos que incluyen su razonamiento o añadiendo una instrucción como "Pensemos paso a paso". En problemas de varios pasos esto suele dar más respuestas correctas, y te permite comprobar cada paso.

¿Sigue funcionando "pensemos paso a paso"?

Con los modelos de chat estándar sigue ayudando en problemas de varios pasos, sobre todo cuando el prompt empujaría a responder al instante. Los modelos de razonamiento, que piensan antes de responder, ya lo hacen internamente, así que la frase les aporta poco más que una respuesta más larga. Con esos modelos, plantea con claridad el problema y el formato de la respuesta.

¿Cuándo ayuda la cadena de pensamiento y cuándo no?

Ayuda en tareas que necesitan varios pasos dependientes: problemas de enunciado, aritmética, acertijos de lógica, planificación con restricciones y seguir lo que hace un código. Aporta poco en consultas simples, traducciones, reescrituras o clasificaciones sencillas, donde solo hace la respuesta más larga y lenta.

¿Qué diferencia hay entre la cadena de pensamiento zero-shot y la few-shot?

La CoT few-shot, presentada por Wei et al. en 2022, pone en el prompt ejemplos resueltos con su razonamiento, y el modelo imita ese estilo de razonar. La CoT zero-shot, de Kojima et al. 2022, no usa ejemplos y solo añade una instrucción como "Pensemos paso a paso". La zero-shot es más rápida de escribir; la few-shot da más control sobre cómo son los pasos.

¿El razonamiento escrito es como el modelo llegó de verdad a la respuesta?

No necesariamente. Los pasos son texto que genera el modelo, y pueden parecer sólidos aunque la respuesta final sea incorrecta, o contener un error aunque la respuesta resulte correcta. Trata el razonamiento como algo que revisar, no como una prueba, y verifica la respuesta final por separado.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR