Asistentes de IA personalizados en la práctica: el código y los comandos que realmente importan
Asistentes de IA Personalizados: lo esencial en un artículo — código real, diagramas y pasos concretos, extractos de un curso de 44 lecciones.
No hay teoría interminable aquí: abrimos la terminal y practicamos. Aquí tienes lo esencial de Asistentes IA Personalizados, extraído directamente de un curso completo de 44 lecciones —con código real que puedes copiar y pegar ahora mismo.
- Introducción y Puesta en Marcha
- Diseñar un Asistente Eficaz
- Crear GPTs Personalizados
- Claude Projects y Gemini Gems
- Acciones y Herramientas Externas
Threads, mensajes y runs
Objetivos pedagógicos
- Crear y gestionar un Thread de conversación
- Añadir mensajes de usuario en un Thread
- Lanzar un Run y gestionar su ciclo de vida
- Elegir entre polling y streaming
- Recuperar y mostrar la respuesta del asistente
Threads: ¿qué son en concreto?
Un Thread es un contenedor persistente que almacena el historial de una conversación entre un usuario y un asistente. Es OpenAI quien lo persiste en sus servidores. Tú solo gestionas el ID.
Buena práctica: un Thread por sesión de usuario. Por ejemplo, en tu app, creas un Thread cuando el usuario empieza a conversar. Almacenas el thread_id en tu base de datos.
| Estado | Significado |
|---|---|
| queued | En cola, va a iniciarse |
| in_progress | El asistente genera la respuesta |
| requires_action | Function call: tu código debe responder |
| completed | Finalizado con éxito |
| failed | Error, ver last_error |
| cancelled | Cancelado manualmente |
| expired | Timeout (10 minutos) |
Polling: esperar el final del Run
El patrón clásico consiste en comprobar periódicamente el estado hasta la finalización:
Ejemplo completo: conversación simple
Un Assistant global
Crea el Assistant una sola vez y guarda su ID en la configuración.
Un Thread por sesión
Crea un Thread al conectar el usuario y guarda el ID en la base de datos.
Recuperar el Thread
Con cada nuevo mensaje, reutiliza el ID guardado para conservar el historial.
Límites y cuotas
| Aspecto | Límite |
|---|---|
| Run timeout | 10 minutos |
| Mensajes por Thread | Sin límite estricto, pero hay que vigilarlo |
| Threads por cuenta | Sin límite estricto |
| Concurrence Runs | Según tier (10-1000 simultáneos) |
| Storage Threads | 30 días por defecto, purga automática después |
File search y code interpreter
Objetivos pedagógicos
- Crear un Vector Store y subir archivos
- Asociar un Vector Store a un Assistant para el RAG
- Activar Code Interpreter y probar cálculos en Python
- Recuperar los archivos generados por Code Interpreter
- Combinar ambas tools en un mismo Assistant
File Search: el RAG nativo de OpenAI
File Search es la tool de RAG nativa de la Assistants API. Le proporcionas archivos, los indexa automáticamente (chunking, embedding, vector store) y permite que el Assistant busque pasajes relevantes.
Diferencia con un RAG personalizado: con File Search no tienes que elegir chunker, ni modelo de embedding, ni gestionar una vector DB. OpenAI lo hace todo.
Los Vector Stores
Un Vector Store es un contenedor de archivos indexados, reutilizable entre varios Assistants. Lo creas una vez, añades tus documentos y luego lo asocias a los Assistants que lo necesiten.
Recuperar las citas
Activar Code Interpreter
Subir un archivo para Code Interpreter
Function calling y tools personalizadas
Objetivos pedagógicos
- Definir una función personalizada en formato JSON Schema
- Asociarla a un Assistant como tool
- Gestionar el estado requires_action y enviar una respuesta
- Definir varias funciones y dejar que el Assistant elija
- Construir un mini-agent que combine varias tools
¿Por qué function calling?
File Search y Code Interpreter son potentes pero limitados: solo acceden a los archivos y a Python local. Para TODO lo demás (tu base de datos interna, tus APIs personalizadas, acciones de negocio específicas), necesitas function calling.
Principio: describes tus funciones Python al modelo. Cuando quiere llamarlas, devuelve el nombre de la función y los argumentos. Tú ejecutas la función en tu lado y envías el resultado.
Definir una función en formato JSON Schema
Describes cada función con un nombre, una descripción y un esquema de los parámetros:
Gestionar el estado requires_action
Cuando el Assistant decide llamar a tu función, el Run pasa al estado requires_action. Debes:
Paralelización de tool_calls
Si el Assistant solicita varias funciones al mismo tiempo (por ejemplo "dame el tiempo en París Y en Lyon"), puedes ejecutarlas en paralelo para ganar rendimiento:
Mini-agent: combinar tools nativas y funciones
La culminación: un Assistant que combina file_search, code_interpreter Y tus funciones personalizadas. Se convierte en un agente real.
Este artículo cubre los extractos más útiles —el curso completo Asistentes IA Personalizados (11 capítulos, 44 lecciones, ejercicios resueltos y proyecto final) te lleva hasta el final.
./acceder-al-curso-completo curso gratuito: Ingeniería de promptsFAQ
¿Cuánto tiempo se tarda en aprender Asistentes IA Personalizados?
¿Se necesitan requisitos previos?
¿Por dónde empezar en la práctica?
📬 ¿Quieres recibir este tipo de guía cada semana? Suscríbete gratis — código real, cero rodeos.