Saltar al contenido principal

Streaming y conversaciones multiturno

Intermedio
What you'll learn
  • Transmitir respuestas en streaming token a token para que los usuarios vean la salida de inmediato
  • Entender por qué la API es sin estado y cómo llevar tú mismo el historial de la conversación
  • Continuar una conversación multiturno reenviando todo el intercambio previo
  • Evitar que las conversaciones largas disparen la ventana de contexto y el coste

Crear experiencias tipo chat con la API se reduce a dos realidades prácticas: usa streaming para que los usuarios vean la salida de inmediato, y gestiona tú mismo el historial porque la API es sin estado. Domina ambas y tu UX de chat se sentirá rápida y lo recordará todo.

Streaming

Sin streaming, el usuario espera a la respuesta completa. Con streaming, los tokens llegan a medida que se generan, lo que da una velocidad percibida mucho mejor.

Pro tip
  • Usa el ayudante de streaming del SDK en lugar de analizar los eventos crudos a mano: gestiona por ti el ciclo de vida de los eventos.
with client.messages.stream(
model="claude-sonnet-5", max_tokens=1024,
messages=[{"role": "user", "content": "Explain RAG in two sentences."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Multiturno: tú gestionas el historial

La API no tiene memoria entre llamadas (por qué). Para continuar una conversación, vuelve a enviar todo el intercambio previo cada vez.

Guided walkthrough1 of 4
  1. Envía el primer mensaje del usuario en la lista de mensajes.
messages = [{"role": "user", "content": "Hi, I'm planning a trip."}]
# ... get assistant reply, then append both turns:
messages.append({"role": "assistant", "content": assistant_text})
messages.append({"role": "user", "content": "Make it 3 days."})
# send the full `messages` list again

Las conversaciones largas llenan la ventana

A medida que crece el historial, consume la ventana de contexto y el coste aumenta. Estrategias para mantenerlo bajo control:

  • Resume/compacta los turnos más antiguos en un breve recordatorio que arrastres hacia adelante.
  • Recorta los turnos anteriores irrelevantes.
  • Combínalo con la caché de prompts para evitar volver a pagar por un prefijo estable.
Watch out
  • Cada llamada reenvía todo el historial: las conversaciones largas cuestan más y, con el tiempo, pueden superar la ventana de contexto si nunca compactas ni recortas.
Key takeaways
  • Transmite tokens en streaming para una velocidad percibida rápida; el ayudante del SDK gestiona el ciclo de vida de los eventos.
  • La API es sin estado: no tiene memoria entre llamadas.
  • Continúa una conversación añadiendo cada turno y reenviando la lista de mensajes completa.
  • Compacta, recorta y usa caché para controlar el coste y el tamaño de las conversaciones largas.

Ponte a prueba

0/3
  1. ¿Por qué el streaming mejora la experiencia de chat?
  2. ¿Cómo continúas una conversación multiturno en esta API?
  3. ¿Qué estrategia NO se sugiere para evitar que las conversaciones largas llenen la ventana de contexto?

Siguiente