El encadenamiento de prompts (prompt chaining) consiste en dividir un trabajo en una secuencia de prompts, donde la salida de un prompt pasa a formar parte de la entrada del siguiente. En lugar de pedirle a un modelo que lea cincuenta reseñas, encuentre los problemas, los ordene y escriba un informe de una sola vez, le pides cada cosa por turno. Cada prompt tiene un solo trabajo, y entre pasos tú (o tu código) puedes mirar el resultado, corregirlo o detenerte.
El bloque de abajo es una cadena de tres pasos que convierte reseñas de clientes en una nota para un equipo de producto. Cada pestaña es un paso. La entrada del paso 2 es la respuesta del paso 1, pegada, y la entrada del paso 3 es la respuesta del paso 2.
[
{"review": 1, "complaint": "La batería murió a las 4 horas"},
{"review": 1, "complaint": "Cable de carga demasiado corto"},
{"review": 2, "complaint": "La app cierra la sesión"},
{"review": 3, "complaint": "La batería no dura un trayecto"},
{"review": 4, "complaint": "La app se cerró al emparejar"},
{"review": 4, "complaint": "La batería se gasta rápido"},
{"review": 5, "complaint": "Cable demasiado corto para usarlos cargando"}
]
El paso 1 solo lee y extrae. El paso 2 nunca ve las reseñas, solo la lista, así que no puede volver a resumirlas. El paso 3 solo redacta. Si el paso 3 sale con el tono equivocado, vuelves a ejecutar solo el paso 3; la extracción y la agrupación se quedan como estaban.
Fíjate en lo que el paso 3 no dice: que una batería murió a las 4 horas, o que los problemas de la app eran cierres de sesión y fallos. El paso 3 solo recibió los nombres de los temas, así que esos detalles no estaban en su entrada. Decidir qué recibe cada paso es la principal decisión de diseño de una cadena, y un detalle que quieras en la respuesta final tiene que pasarse hasta el final.
Por qué encadenar en lugar de escribir un prompt enorme
Cada paso tiene un trabajo y un estándar. Un solo prompt que pide extracción, análisis y redacción cuidada tiene tres objetivos que equilibrar, y nada te dice cuál recortó. Un prompt con un solo trabajo puede decir exactamente cómo es un buen resultado para ese trabajo, y puedes juzgar la respuesta con ese criterio.
Puedes revisar lo intermedio. En un solo prompt, una queja que se pierde desaparece dentro de un párrafo bien escrito y nunca la ves. En una cadena, la lista del paso 1 está ahí mismo. Revisarla lleva segundos, y corregirla antes del paso 2 sale más barato que encontrar el error en el informe final.
Cada paso puede usar sus propios ajustes. La extracción y la agrupación piden una temperatura baja y una salida estructurada que el código pueda analizar. El paso de redacción puede ser más libre. En código puedes incluso enviar pasos distintos a modelos distintos, como uno pequeño y rápido para la extracción.
Los fallos son locales. Cuando una cadena se rompe, sabes qué paso falló y vuelves a ejecutar solo ese.
Los costes también son reales. Una cadena hace más llamadas, así que tarda más y cuesta más que un solo prompt. Y un error que se cuela en un paso temprano se arrastra a todos los siguientes, por eso vale la pena revisar los pasos intermedios.
Cómo diseñar una cadena
- Escribe los pasos que darías a mano. Si primero harías una lista, luego la ordenarías y después la redactarías, son tres prompts. Los pasos que requieren tipos de pensamiento distintos son los puntos naturales para dividir.
- Decide el formato de salida de cada paso antes de escribir su prompt. Lo que consuma el siguiente paso debe ser fácil de leer y de revisar: un array JSON, una lista numerada, una tabla. La prosa libre solo está bien para el último paso.
- Pasa solo lo que necesita el siguiente paso. El paso 2 de arriba recibe la lista de quejas, no las reseñas. Menos entrada significa menos distracciones, y hace que cada paso se pueda probar por separado.
- Añade una comprobación entre pasos. En código, analiza el JSON y confirma que existen los campos. Para las decisiones de criterio, la comprobación puede ser a su vez un prompt: "¿Esta lista contiene todas las quejas de estas reseñas? Responde sí o no y luego enumera las que falten."
- Marca con claridad el material pegado. La entrada de cada paso es texto producido por un paso anterior, y los delimitadores evitan que el modelo lo lea como instrucciones nuevas.
Este es un paso de comprobación para la cadena de arriba, ejecutado sobre una versión de la salida del paso 1 a la que le faltaba una queja. Una comprobación así es un prompt aparte con una sola pregunta concreta, así que es más fácil acertarla que la propia extracción.
Incompleta
- Reseña 4: la batería se gasta rápido
Si la comprobación dice "Incompleta", vuelve a ejecutar el paso 1 o añade a mano el elemento que falta antes de que se ejecute el paso 2.
Una cadena en código
En código, una cadena es una secuencia de llamadas en la que cada prompt se construye con la respuesta anterior. Esta versión usa el SDK de Python de Anthropic; la misma forma funciona con cualquier proveedor.
import json
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
def ask(prompt):
response = client.messages.create(
model=MODEL,
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return response.content[0].text
reviews = open("reviews.txt", encoding="utf-8").read()
complaints = ask(
"List every complaint in the reviews inside the <reviews> tags. Ignore praise. "
'Return a JSON array of objects with the keys "review" and "complaint". '
"Return only the JSON, with no code fence.\n\n"
f"<reviews>\n{reviews}\n</reviews>"
)
json.loads(complaints) # raises an error here if step 1 did not return valid JSON
themes = ask(
"Group these complaints into themes. Return only a JSON array with the keys "
'"theme", "count" and "reviews", sorted by count, highest first.\n\n'
f"<complaints>\n{complaints}\n</complaints>"
)
note = ask(
"Write a note of at most four sentences to the product team based on these "
f"themes. Lead with the most common one.\n\n<themes>\n{themes}\n</themes>"
)
print(note)
La línea json.loads es la comprobación más sencilla posible: si el paso 1 respondió con prosa, la cadena se detiene ahí en lugar de pasar una entrada defectuosa. Una cadena en producción también comprobaría los campos, reintentaría una vez un paso fallido y registraría cada resultado intermedio para que una mala respuesta final pueda rastrearse hasta el paso que la causó.
Encadenar en una app de chat
No necesitas código para encadenar prompts. Ejecuta el paso 1, lee la respuesta, corrige lo que esté mal y pégala en el prompt del paso 2. Hacer cada paso en un chat nuevo deja la conversación anterior fuera del contexto, así que una instrucción escrita para un paso no afecta al siguiente. Quedarte en un mismo chat es más rápido y funciona cuando los pasos están muy relacionados, pero todo el historial viaja con cada mensaje nuevo.
El encadenamiento frente a técnicas relacionadas
La cadena de pensamiento es razonamiento escrito dentro de una respuesta; una cadena de prompts son varias respuestas y tú controlas lo que pasa entre ellas. Las dos se combinan bien: cualquier paso de una cadena puede pedir razonamiento paso a paso.
En una cadena, los pasos los fijas tú de antemano. Cuando es el propio modelo el que decide qué paso viene después, como buscar, leer un resultado y luego elegir otra acción, el patrón es un bucle de agente, descrito en prompting ReAct. Las cadenas fijas son más fáciles de probar y de predecir, así que son el mejor punto de partida siempre que ya conozcas los pasos.
Preguntas frecuentes
¿Qué es el encadenamiento de prompts?
El encadenamiento de prompts es una técnica en la que divides una tarea en varios prompts que se ejecutan uno tras otro, y la salida de cada prompt se inserta en el siguiente. Por ejemplo, un prompt extrae las quejas de unas reseñas, un segundo las agrupa en temas y un tercero escribe un informe a partir de los temas.
¿Qué diferencia hay entre el encadenamiento de prompts y la cadena de pensamiento?
La cadena de pensamiento ocurre dentro de una sola respuesta: el modelo escribe su razonamiento antes de la respuesta. El encadenamiento de prompts usa varias llamadas separadas, y tú o tu código pasan el resultado de una a la siguiente. Puedes revisar, corregir o volver a ejecutar cualquier paso de una cadena, algo que no puedes hacer con el razonamiento dentro de una respuesta.
¿Puedo encadenar prompts en ChatGPT o Claude sin programar?
Sí. Ejecuta el primer prompt, revisa la respuesta y luego pégala en el siguiente prompt, en el mismo chat o en uno nuevo. Empezar un chat nuevo para cada paso evita que los borradores e instrucciones anteriores influyan en los pasos siguientes.
¿Cuándo debo encadenar prompts en lugar de usar uno solo?
Usa una cadena cuando un solo prompt pide varios tipos de trabajo distintos, como extraer, analizar y redactar, o cuando necesitas revisar o reutilizar un resultado intermedio. Si un solo prompt ya da una respuesta fiable, una cadena solo añade llamadas, coste y tiempo de espera.