Saltar al contenido principal

Asistente de IA

⚠️ OBSOLETO: Esta funcionalidad está obsoleta y será eliminada en futuras versiones. Por favor, consulta la documentación y endpoints actuales antes de implementar integraciones nuevas.

Descripción General

El sistema de Asistente de IA proporciona APIs REST para crear y gestionar asistentes de OpenAI, hilos de conversación y mensajes. Todos los endpoints requieren autenticación y están integrados con la API Beta de OpenAI Assistants.

Asistente

Resumen de Endpoints

MétodoEndpointDescripción
GET/assistantListar todos los asistentes
GET/assistant/:idObtener asistente por ID
GET/assistant/:id/instructionsObtener instrucciones del asistente
POST/assistantCrear asistente con configuración por defecto
POST/assistant/adminCrear asistente con configuración personalizada
PUT/assistant/:id/instructionsActualizar instrucciones del asistente
DELETE/assistant/:idEliminar asistente específico
DELETE/assistantEliminar todos los asistentes

Operaciones de Asistente

MétodoEndpointDescripciónNivel de Acceso
GET/assistantListar todos los asistentesAutenticado
GET/assistant/:idObtener asistente por IDAutenticado
GET/assistant/:id/instructionsObtener instrucciones del asistenteAutenticado
POST/assistantCrear asistente con configuración por defectoAutenticado
POST/assistant/adminCrear asistente con configuración personalizadaSolo Admin
PUT/assistant/:id/instructionsActualizar instrucciones del asistenteAutenticado
DELETE/assistant/:idEliminar asistente específicoAutenticado
DELETE/assistantEliminar todos los asistentesAutenticado

Crear Asistente (Estándar)

POST /assistant

Cuerpo de la Solicitud:

{
"name": "Asistente de Cumplimiento"
}

Ejemplo de Uso:

curl -X POST http://localhost:3000/api/v1/assistant \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token_acceso>" \
-d '{
"name": "Asistente de Cumplimiento"
}'

✅ 201 Creado - Asistente Creado Exitosamente

  • Content-Type: application/json

  • Descripción: Asistente creado exitosamente con configuración por defecto

  • Ejemplo:

    {
    "message": "Asistente Asistente de Cumplimiento con id asst_abc123 creado exitosamente"
    }

❌ 429 Demasiadas Solicitudes - Límite Alcanzado

  • Content-Type: application/json

  • Descripción: Se ha alcanzado el límite de creación de asistentes

  • Ejemplo:

    {
    "message": "Límite de asistentes alcanzado"
    }

❌ 500 Error Interno del Servidor

  • Content-Type: application/json

  • Descripción: Error al crear asistente

  • Ejemplo:

    {
    "message": "Error al crear asistente"
    }

Crear Asistente (Admin)

POST /assistant/admin

Cuerpo de la Solicitud:

{
"name": "Asistente Personalizado",
"instructions": "Instrucciones personalizadas del sistema",
"model": "gpt-3.5-turbo-0125",
"tools": [{"type": "code_interpreter"}]
}

Ejemplo de Uso:

curl -X POST http://localhost:3000/api/v1/assistant/admin \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token_acceso_admin>" \
-d '{
"name": "Asistente Personalizado",
"instructions": "Instrucciones personalizadas del sistema",
"model": "gpt-3.5-turbo-0125",
"tools": [{"type": "code_interpreter"}]
}'

✅ 201 Creado - Asistente Creado Exitosamente

  • Content-Type: application/json

  • Descripción: Asistente creado con configuración personalizada

  • Ejemplo:

    {
    "message": "Asistente Asistente Personalizado con id asst_xyz789 creado exitosamente"
    }

❌ 401 No Autorizado

  • Content-Type: application/json

  • Descripción: Se requieren privilegios de administrador

  • Ejemplo:

    {
    "message": "Se requieren privilegios de administrador"
    }

❌ 429 Demasiadas Solicitudes - Límite Alcanzado

  • Content-Type: application/json

  • Descripción: Se ha alcanzado el límite de creación de asistentes

  • Ejemplo:

    {
    "message": "Límite de asistentes alcanzado"
    }

❌ 500 Error Interno del Servidor

  • Content-Type: application/json

  • Descripción: Error al crear asistente

  • Ejemplo:

    {
    "message": "Error al crear asistente"
    }

Hilos

Resumen de Endpoints

MétodoEndpointDescripción
GET/threadsObtener todos los hilos (cualquier usuario)
GET/threadObtener hilos del usuario autenticado
GET/thread/:gptIdObtener mensajes de un hilo específico
POST/threadCrear nuevo hilo con mensaje inicial
POST/thread/:gptIdAgregar mensaje a hilo existente
PUT/thread/:gptIdActualizar nombre del hilo
DELETE/thread/:gptIdEliminar hilo específico
DELETE/threadEliminar todos los hilos del usuario

Operaciones de Hilo

MétodoEndpointDescripciónNivel de Acceso
GET/threadsObtener todos los hilos (cualquier usuario)Autenticado
GET/threadObtener hilos del usuario autenticadoAutenticado
GET/thread/:gptIdObtener mensajes de un hilo específicoAutenticado
POST/threadCrear nuevo hilo con mensaje inicialAutenticado
POST/thread/:gptIdAgregar mensaje a hilo existenteAutenticado
PUT/thread/:gptIdActualizar nombre del hiloAutenticado
DELETE/thread/:gptIdEliminar hilo específicoAutenticado
DELETE/threadEliminar todos los hilos del usuarioAutenticado

Crear Hilo

POST /thread

Agregar Mensaje a Hilo

POST /thread/:gptId

Cuerpo de la Solicitud:

{
"content": "¿Cuáles son los requisitos específicos para las políticas de retención de datos?",
"assistantId": "1"
}

Ejemplo de Uso:

curl -X POST http://localhost:3000/api/v1/thread/hilo_xyz789 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token_acceso>" \
-d '{
"content": "¿Cuáles son los requisitos específicos para las políticas de retención de datos?",
"assistantId": "1"
}'

✅ 201 Creado - Mensaje Agregado Exitosamente

  • Content-Type: application/json

  • Descripción: Mensaje agregado al hilo exitosamente

  • Ejemplo:

    {
    "message": "Mensaje agregado exitosamente"
    }

❌ 400 Solicitud Incorrecta - Mensaje Muy Corto

  • Content-Type: application/json

  • Descripción: El mensaje debe tener al menos 15 palabras o 40 caracteres

  • Ejemplo:

    {
    "error": "El mensaje debe tener al menos 15 palabras o 40 caracteres"
    }

❌ 500 Error Interno del Servidor

  • Content-Type: application/json

  • Descripción: Error al crear mensaje o hilo

  • Ejemplo:

    {
    "error": "Error al crear mensaje o hilo"
    }

Modelos de Datos

Modelo de Asistente

El modelo Assistant almacena metadatos con identificadores locales y de OpenAI:

CampoTipoDescripción
assistantIdSTRING(50)Identificador de asistente de OpenAI
nameSTRING(100)Nombre visible del asistente
instructionsTEXTInstrucciones/sistema prompt
toolsTEXTConfiguración serializada de herramientas
modelSTRING(100)Identificador del modelo GPT
statusENUM"ACTIVE" o "INACTIVE"

Autenticación y Límites

Límites de Asistentes

La creación de asistentes está limitada por configuración a través del middleware assistantlimitReached, que consulta el modelo de configuración antes de permitir la creación.

Validación de Mensajes

Todos los mensajes deben cumplir requisitos mínimos:

  • Mínimo 15 palabras o 40 caracteres
  • Validado en las funciones createThread() y addNewMessage()
  • Devuelve 400 Bad Request si la validación falla

Integración con OpenAI

El sistema utiliza la API Beta de OpenAI Assistants con las siguientes operaciones:

OperaciónMétodo OpenAI
Crear asistenteopenai.beta.assistants.create()
Actualizar asistenteopenai.beta.assistants.update()
Crear hiloopenai.beta.threads.create()
Agregar mensajeopenai.beta.threads.messages.create()
Crear runopenai.beta.threads.runs.create()
Listar mensajesopenai.beta.threads.messages.list()

Notas

  • Todas las operaciones de asistentes e hilos requieren autenticación
  • El sistema mantiene identificadores duales: IDs locales y de OpenAI
  • La validación de mensajes previene envíos triviales que consuman recursos de la API
  • Los endpoints de admin requieren el middleware adicional verifyAdmin
  • El sistema utiliza polling síncrono para respuestas de asistentes, asegurando la finalización antes de responder al cliente
  • Los límites por configuración aplican cuotas de recursos para la creación de asistentes