Resumen

Cuando trabajas con modelos de lenguaje, dos fricciones aparecen de inmediato: esperar a que toda la respuesta se genere antes de ver algo en pantalla y no poder enviar más de un mensaje por llamado. Ambas limitaciones hacen que cualquier aplicación se sienta lenta y poco práctica. Aquí se aborda cómo resolverlas usando streaming y el envío de múltiples mensajes con la API de Anthropic.

¿Qué es streaming y por qué mejora la experiencia del usuario?

El concepto de streaming permite que el texto aparezca en pantalla mientras el modelo lo genera, palabra por palabra, tal como sucede al usar Claude.AI o ChatGPT. Aunque el tiempo total entre inicio y final sea el mismo, la percepción del usuario cambia radicalmente: la respuesta se siente inmediata.

Sin streaming, el flujo es simple pero frustrante: se envía el prompt, el modelo procesa todo internamente y solo al terminar devuelve el resultado completo. Con streaming, cada fragmento de texto listo se entrega al instante.

¿Cómo se implementa el streaming en el código?

La diferencia en el código es mínima pero significativa [01:52]:

  • En lugar de llamar a anthropic.messages.create, se usa anthropic.messages.stream.
  • Opcionalmente se pasa stream: true como parámetro adicional.
  • El prompt, el modelo y la cantidad máxima de tokens permanecen iguales.

Lo que cambia de fondo es la forma de mostrar la respuesta en consola. En el enfoque sin streaming, se esperaba un único mensaje y se leía su contenido. Con streaming, se escucha cada content block delta [02:24]: cuando un fragmento de texto está listo y es del tipo text delta, se imprime de inmediato.

¿Dónde encontrar la documentación oficial de streaming?

La implementación está bien documentada en la sección Streaming Messages de la API Docs de Claude [03:23]. Allí se encuentra un listado de opciones de configuración y un ejemplo mínimo bajo el título Basic Streaming Request, que es prácticamente idéntico al código utilizado, solo con un prompt y una cantidad de tokens distintos.

¿Cómo enviar múltiples mensajes en un solo llamado?

La propiedad messages de la API recibe un array de objetos, lo que permite pasar la cantidad de mensajes que se desee en una sola petición [03:52]. Cada objeto define el rol (en este caso user) y el contenido del mensaje.

Por ejemplo, en un archivo messages.ts se envían dos preguntas independientes:

  • "¿Cuál es la capital de Colombia?"
  • "¿Cuál es el color de su bandera?"

Aunque son mensajes distintos, la API mantiene el contexto entre ellos [04:28]. No se especifica de qué bandera se habla en la segunda pregunta, pero el modelo entiende que ambas preguntas están relacionadas y responde correctamente: la capital es Bogotá y la bandera de Colombia tiene tres franjas horizontales con sus respectivos colores.

¿Qué es la memoria de contexto en la API de mensajes?

La memoria de contexto significa que el modelo retiene la información de mensajes anteriores dentro del mismo llamado. Esto permite conversaciones coherentes sin necesidad de repetir datos. Al usar el modelo más potente, incluso se obtienen detalles adicionales, como emojis representando cada color de la bandera [05:03].

¿Qué pasó con el endpoint de Text Completions?

Antes, la forma de mantener conversaciones más fluidas con Anthropic era a través del endpoint de completion, conocido como Text Completions API [05:30]. Sin embargo, la documentación oficial lo marca como API legacy. La recomendación actual es usar la Messages API, que es precisamente la que se ha utilizado en estos ejemplos y ofrece capacidades superiores para manejar tanto streaming como mensajes múltiples.

Con estas dos funcionalidades implementadas — streaming en tiempo real y procesamiento de múltiples mensajes — la aplicación de terminal pasa de ser una conexión básica a un uso avanzado de la API. ¿Ya probaste enviar mensajes que dependan del contexto entre sí? Comparte tu experiencia y los resultados que obtuviste.