Técnica de prompting que mejora el razonamiento de los LLMs al pedirles que descompongan problemas complejos en pasos intermedios explícitos antes de llegar a una conclusión.
Chain-of-Thought (CoT) es una técnica de prompt engineering que mejora dramáticamente la capacidad de razonamiento de los modelos de lenguaje grandes al pedirles que «piensen paso a paso». En lugar de saltar directamente a la respuesta, el modelo genera pasos intermedios de razonamiento que lo guían hacia conclusiones más precisas y verificables.
Introducido por Wei et al. en 2022, CoT demostró que los modelos grandes pueden resolver problemas de matemáticas, lógica y sentido común que antes fallaban consistentemente. La técnica funciona porque los LLMs predicen tokens secuencialmente — cuando generan pasos intermedios, cada paso proporciona contexto crucial para el siguiente, haciendo visible el proceso de razonamiento y permitiendo correcciones en tiempo real.
El impacto es significativo: en el benchmark GSM8K de problemas matemáticos, GPT-3 (175B) pasó de 17.7% de precisión con prompting estándar a 58.1% con CoT. En problemas de sentido común (CommonsenseQA), la mejora fue de 76.0% a 78.7%.
La implementación más simple: agregar «Pensemos paso a paso» al final del prompt. Funciona sorprendentemente bien sin ejemplos:
# Prompt estándar
prompt = "Si una tienda tiene 15 manzanas y vende 7, ¿cuántas quedan?"
# Respuesta típica: "8" (sin mostrar el trabajo)
# Zero-shot CoT
prompt = """Si una tienda tiene 15 manzanas y vende 7, ¿cuántas quedan?
Pensemos paso a paso."""
# Respuesta típica:
# "Empezamos con 15 manzanas.
# Vendemos 7 manzanas.
# 15 - 7 = 8
# Quedan 8 manzanas."Proporcionar ejemplos con razonamiento explícito antes de la pregunta objetivo:
prompt = """
Ejemplo: Si tengo 10 naranjas y como 3, ¿cuántas quedan?
Paso 1: Empiezo con 10 naranjas
Paso 2: Como 3 naranjas
Paso 3: 10 - 3 = 7
Respuesta: Quedan 7 naranjas.
Pregunta: Si una biblioteca tiene 45 libros y presta 18, ¿cuántos quedan?
"""Generar múltiples cadenas de razonamiento independientes y elegir la respuesta más frecuente. Mejora significativamente la precisión:
import openai
from collections import Counter
def self_consistency_cot(prompt, n_samples=5):
responses = []
for _ in range(n_samples):
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": f"{prompt}\nPensemos paso a paso."}],
temperature=0.7 # Variabilidad para diferentes cadenas
)
responses.append(extract_final_answer(response.choices[0].message.content))
# Votación mayoritaria
return Counter(responses).most_common(1)[0][0]En el benchmark GSM8K, self-consistency mejoró la precisión de CoT estándar de 58.1% a 74.4%.
Explora múltiples ramas de razonamiento en paralelo, evaluando y podando caminos menos prometedores:
def tree_of_thoughts(problem, max_depth=3):
def generate_thoughts(state, depth):
if depth >= max_depth:
return [evaluate_solution(state)]
# Generar múltiples pensamientos candidatos
thoughts = llm.generate_thoughts(state, n=3)
# Evaluar cada pensamiento
scored_thoughts = [(t, evaluate_thought(t)) for t in thoughts]
# Seleccionar los mejores para continuar
best_thoughts = sorted(scored_thoughts, key=lambda x: x[1], reverse=True)[:2]
results = []
for thought, score in best_thoughts:
new_state = state + [thought]
results.extend(generate_thoughts(new_state, depth + 1))
return results
return generate_thoughts([problem], 0)| Técnica | GSM8K (matemáticas) | CommonsenseQA | Latencia | Costo |
|---|---|---|---|---|
| Estándar | 17.7% | 76.0% | 1x | 1x |
| Zero-shot CoT | 58.1% | 78.7% | 2-3x | 2-3x |
| Few-shot CoT | 65.2% | 82.1% | 2-3x | 2-3x |
| Self-Consistency | 74.4% | 85.3% | 10-15x | 10-15x |
| Tree of Thoughts | 78.9% | 87.2% | 20-50x | 20-50x |
Zero-shot CoT: Problemas simples a medianos, cuando el costo es una preocupación principal.
Few-shot CoT: Dominios específicos donde tienes ejemplos de alta calidad, problemas que requieren formato específico.
Self-Consistency: Problemas críticos donde la precisión es más importante que el costo, decisiones de alto impacto.
Tree of Thoughts: Problemas de planificación compleja, búsqueda creativa, cuando necesitas explorar múltiples enfoques.
Los agentes de IA utilizan CoT internamente para planificar acciones y usar herramientas. En function calling, CoT ayuda al modelo a decidir qué función llamar y con qué parámetros:
system_prompt = """
Eres un asistente que puede usar herramientas. Para cada solicitud:
1. Analiza qué información necesitas
2. Determina qué herramientas usar
3. Planifica la secuencia de llamadas
4. Ejecuta paso a paso
Herramientas disponibles: get_weather, send_email, search_web
"""
user_prompt = """
Necesito enviar un email a mi equipo sobre el clima de mañana en Madrid.
Pensemos paso a paso.
"""# Problema: El modelo puede generar pasos lógicos pero incorrectos
prompt = "¿Cuántos días hay en febrero de 2023?"
# Respuesta incorrecta pero plausible:
# "Paso 1: 2023 no es divisible por 4
# Paso 2: Por tanto, 2023 no es año bisiesto
# Paso 3: Febrero en años no bisiestos tiene 28 días
# Respuesta: 28 días"
#
# ERROR: 2023 SÍ tiene 28 días, pero el razonamiento sobre divisibilidad es correctoChain-of-thought representa un cambio fundamental en cómo interactuamos con los LLMs — de «pregunta-respuesta» a «colaboración en el razonamiento». Para ingenieros senior construyendo sistemas de IA, dominar CoT es crítico porque:
Mejora la confiabilidad: Los pasos intermedios hacen auditable el proceso de decisión, crucial para aplicaciones de alto riesgo. Reduce costos a largo plazo: Aunque CoT usa más tokens por consulta, reduce iteraciones de debugging y refinamiento de prompts. Habilita casos de uso complejos: Problemas que antes requerían múltiples llamadas al modelo ahora se resuelven en una sola sesión de razonamiento estructurado.
La diferencia entre un sistema que «funciona a veces» y uno que «funciona consistentemente» a menudo está en la implementación correcta de CoT y sus variantes.
Disciplina de diseñar instrucciones efectivas para modelos de lenguaje, combinando claridad, estructura y ejemplos para obtener respuestas consistentes y de alta calidad.
Redes neuronales masivas basadas en la arquitectura Transformer, entrenadas con enormes corpus de texto para comprender y generar lenguaje natural con capacidades emergentes como razonamiento, traducción y generación de código.
Sistemas autónomos que combinan modelos de lenguaje con razonamiento, memoria y uso de herramientas para ejecutar tareas complejas de múltiples pasos con mínima intervención humana.
Capacidad de los LLMs para generar llamadas estructuradas a funciones externas basándose en lenguaje natural, habilitando la integración con APIs, bases de datos y herramientas del mundo real.
Técnicas para reducir la generación de información falsa pero plausible por parte de los LLMs, desde RAG hasta verificación factual y diseño de prompts.