Importante: la Assistants API que enseña esta lección está deprecada y OpenAI la apaga por completo el 26 de agosto de 2026 — prácticamente ahora mismo. Fue reemplazada por la Responses API (combinada con Conversations y Prompts), anunciada en marzo de 2025 con esta fecha de cierre confirmada. La arquitectura conceptual de 3 piezas se mantiene, solo cambian los nombres:
| Assistants API (esta lección) | Responses API (actual) |
|---|---|
| Assistant | Prompt (versionado desde el dashboard, no por código) |
| Thread | Conversation |
| Run (asíncrono, requiere polling) | Response (la llamada básica es síncrona — sin bucle de espera) |
Vale la pena entender el patrón Assistant/Thread/Run de este ejercicio porque el mismo curso de OpenAI está construido sobre él y porque el modelo mental es el mismo — pero para código nuevo en un proyecto real, arrancá directamente con client.responses.create() en vez de client.beta.assistants.
Con la API básica de Chat, sos vos responsable de todo: guardar el historial, contar tokens, y si querés que la IA analice un PDF de 100 páginas, tenés que trocearlo vos mismo.
Situación típica: querés crear un "Analista Financiero" que pueda leer tus Excel y PDFs de facturas. Con la API normal, tendrías que escribir cientos de líneas de código para extraer texto y manejar la ventana de contexto.
Por qué es importante: la API de Assistants abstrae toda esa complejidad. OpenAI gestiona la memoria (hilos "infinitos") y la ejecución de herramientas, permitiéndote crear agentes autónomos robustos con mucho menos código.
La arquitectura se basa en 3 pilares:
Cómo funciona: 1) creás el Asistente una vez (o lo reutilizás); 2) cuando un usuario llega, creás un Thread vacío; 3) añadís mensajes del usuario al hilo; 4) creás un Run para que el Asistente lea el hilo y responda.
| Usá Assistants API cuando... | NO lo uses cuando... |
|---|---|
| Necesitás memoria persistente y automática de largas conversaciones | Querés la mínima latencia posible (Chat Completions es más rápido) |
| Necesitás que la IA ejecute código Python, genere gráficos o lea archivos (RAG) | Querés control total y granular sobre cada mensaje exacto que se envía al modelo |
| Estás construyendo agentes complejos con múltiples pasos de razonamiento | El costo es un factor crítico (Assistants puede consumir más tokens ocultos en gestión de contexto) |
Objetivo: crear un "Tutor de Matemáticas" que no solo chatea, sino que escribe y ejecuta código Python real para resolver ecuaciones, y lee documentos para responder preguntas específicas.
Contexto inicial: necesitás tu API Key configurada.
Vamos a crear un asistente y darle la herramienta code_interpreter.
Vamos a preguntarle algo que requiera cálculo, como la secuencia de Fibonacci.
Ahora actualizaremos el asistente para que pueda leer archivos.
// Nota: para este paso necesitás un archivo pequeño en tu carpeta.
Al ejecutar el paso 2, deberías ver que el asistente responde con la lista de Fibonacci. Si inspeccionaras los run_steps, verías que generó código Python y lo ejecutó.
| Si ves esto... | Causa | Solución |
|---|---|---|
run.status se queda en requires_action | El asistente quiere llamar a una función personalizada (function calling) que no manejaste | En este ejemplo básico solo usamos Code Interpreter; revisá si definiste herramientas extra |
Error file_not_found | No creaste el archivo local antes de subirlo | Asegurate de que datos_empresa.txt exista en tu carpeta |
| Respuesta lenta | Assistants API es más lenta que Chat API porque guarda estado y gestiona herramientas | Es normal; implementá indicadores de carga en tu UI |
Concepto central: la API de Asistentes delega la gestión del estado (memoria) y la ejecución de herramientas a OpenAI, liberando a tu backend de esa carga.
Para recordar:
thread_id (o conversation_id en Responses) en tu base de datos para que el usuario pueda retomar la conversación días despuésretrieve run) — la Responses API elimina esta necesidad para el caso básico