0Pricing
AI Agents · Lección

Respuestas en streaming (SSE)

Transmita la salida del LLM token a token mediante Server-Sent Events para obtener interfaces ágiles e indicar el progreso.

Respuestas en streaming (SSE) es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.

¿Por qué usar streaming?

Sin streaming, debe esperar a que llegue la respuesta completa antes de mostrar algo. Con una respuesta de 50 tokens que tarda 5 segundos, el usuario no ve nada durante esos 5 segundos.

El streaming muestra los tokens a medida que llegan: el tiempo total es el mismo, pero la experiencia de usuario parece instantánea.

Server-Sent Events (SSE)

OpenAI y Anthropic transmiten mediante SSE, un protocolo HTTP unidireccional en el que el servidor envía eventos con el formato data: {...}\n\n.

La mayoría de los SDK oculta SSE detrás de una interfaz de iterador.

Streaming con OpenAI

Establezca stream=True y recorra la respuesta:

stream = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end='', flush=True)

Recopilar la respuesta completa

Acumule los deltas para obtener la cadena final:

buf = []
for chunk in stream:
    delta = chunk.choices[0].delta.content or ''
    buf.append(delta)
    print(delta, end='', flush=True)

full_text = ''.join(buf)
messages.append({'role': 'assistant', 'content': full_text})

Streaming con Anthropic

El mismo patrón, con una API ligeramente diferente:

with client.messages.stream(
    model='claude-sonnet-4-5',
    max_tokens=1024,
    messages=messages,
) as stream:
    for text in stream.text_stream:
        print(text, end='', flush=True)

    final = stream.get_final_message()
    print('\ndone, tokens:', final.usage.output_tokens)

Streaming de llamadas a herramientas

Las llamadas a herramientas también se transmiten. Con OpenAI, el nombre de la función y los argumentos llegan por partes:

for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.tool_calls:
        for tc in delta.tool_calls:
            # tc.function.name and tc.function.arguments arrive as partial strings
            pass

Contrapresión y cancelación

Si el usuario cierra la página, cancele el stream para dejar de gastar tokens:

try:
    for chunk in stream:
        if request_was_cancelled():
            stream.close()
            break
finally:
    stream.close()

Streaming a través de un servidor web

En FastAPI, use StreamingResponse:

from fastapi.responses import StreamingResponse

def token_generator():
    for chunk in stream:
        delta = chunk.choices[0].delta.content or ''
        yield f'data: {delta}\n\n'

return StreamingResponse(token_generator(), media_type='text/event-stream')

Usar un búfer para las oraciones

Para la conversión de texto a voz o la visualización por fragmentos, acumule contenido hasta que termine una oración:

buf = ''
for chunk in stream:
    buf += chunk.choices[0].delta.content or ''
    while '. ' in buf:
        sentence, buf = buf.split('. ', 1)
        speak(sentence + '.')

Analizar JSON en streaming

En las salidas JSON, no puede analizar los datos a mitad del stream. Tiene estas opciones:

  • Acumular toda la salida y analizarla una sola vez
  • Usar un analizador JSON en streaming (ijson) para emitir los campos cuando estén completos

Métricas de latencia: TTFT y TPS

  • TTFT: tiempo hasta el primer token (capacidad de respuesta percibida)
  • TPS: tokens por segundo (rendimiento)

El streaming optimiza el TTFT, no el tiempo total. Para una buena experiencia de chat, procure que el TTFT sea inferior a 500 ms.

¿Por qué usar streaming?

¿Cuál es el principal beneficio del streaming?

Repaso

El streaming mejora la experiencia de usuario, no la velocidad. Impleméntelo en cualquier agente que interactúe con una persona en tiempo real.

Preguntas frecuentes

¿La lección «Respuestas en streaming (SSE)» es gratis?

Sí — el texto completo de «Respuestas en streaming (SSE)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.

¿Qué aprenderé en «Respuestas en streaming (SSE)»?

Transmita la salida del LLM token a token mediante Server-Sent Events para obtener interfaces ágiles e indicar el progreso. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Agents?

No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Respuestas en streaming (SSE)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Agents?

Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Llamar a la API de OpenAI: chat.completions
  2. Llamar a la API de Anthropic: messages
  3. Respuestas en streaming (SSE)
  4. Control de costes: recuento de tokens y presupuestos
← Volver a AI Agents