Node.js

Servicio: open-ai

Información General


Propósito de Negocio

Proporciona una capa de abstracción sobre la API de OpenAI Assistants para:


Estructura del Proyecto

open-ai/src/
├── index.js                    ← Entry point (crea servidor HTTP)
├── app.js                      ← Express app con CORS y rutas
├── config/
│   ├── variables.js            ← SERVICE_PORT
│   ├── openAi.js               ← Inicialización del cliente OpenAI
│   ├── cors.js                 ← Configuración de CORS
│   ├── origins.js              ← Lista de orígenes permitidos
│   └── whatsappAssistant.js    ← Prompt/instrucciones del asistente WhatsApp (~22KB)
└── handlers/
    ├── addMessageToThread.js       ← PUT: agregar mensaje a thread
    ├── createAssistant.js          ← POST: crear asistente
    ├── createRun.js                ← POST: iniciar run
    ├── createRunAndPoll.js         ← POST: iniciar run y esperar resultado
    ├── createThread.js             ← POST: crear thread
    ├── createVectorStore.js        ← POST: crear vector store
    ├── createWhatsappAssistant.js  ← POST: crear asistente WhatsApp
    └── getAssistantResponse.js     ← GET: obtener respuesta del asistente

Endpoints Expuestos

Método Path Descripción
POST /threads Crear nuevo thread de conversación
POST /runs Iniciar run del asistente en un thread
POST /create-assistant Crear asistente de OpenAI
POST /create-run-and-poll Iniciar run y esperar respuesta completa
POST /create-vector-store Crear vector store para documentos
POST /create-whatsapp-assistant Crear asistente especializado de WhatsApp
PUT /add-message-to-thread Agregar mensaje a thread existente
GET /assistant-response/:threadId Obtener respuesta del asistente en un thread

Asistente de WhatsApp

El archivo config/whatsappAssistant.js (~22KB) contiene las instrucciones del sistema del asistente de WhatsApp de BimTrazER. Incluye:

Este prompt le dice al asistente cómo usar los endpoints /for-assistants/* del servicio whatsapp-bot como herramientas (tools de OpenAI).


Flujo de Conversación con OpenAI Assistants

[Frontend / whatsapp-bot]
    │
    ├── POST /threads → Crea thread (retorna threadId)
    │
    ├── PUT /add-message-to-thread → Agrega mensaje del usuario
    │
    ├── POST /runs → Inicia ejecución del asistente
    │       └── OpenAI procesa el mensaje
    │           ├── Si necesita datos → llama a function (tool use)
    │           │   └── [api-bimtrazer o whatsapp-bot] ejecuta la función
    │           └── Genera respuesta
    │
    └── GET /assistant-response/:threadId → Obtiene respuesta generada

Alternativa (blocking): POST /create-run-and-poll — Ejecuta y espera hasta que el run complete.


Variables de Entorno

Variable Descripción
SERVICE_PORT Puerto del servicio (default: 8093)
OPENAI_API_KEY Clave de API de OpenAI (sensible)
OPENAI_ASSISTANT_ID ID del asistente preconfigurado en OpenAI

Dependencias (package.json)

Librería Propósito
openai v4.62.1 SDK oficial de OpenAI
express v4 Framework HTTP
cors CORS middleware
dotenv Variables de entorno
multer Upload de archivos (posible para vector stores)

Rol en el Sistema

[api-bimtrazer]          [whatsapp-bot]
    │                         │
    └─────────┬───────────────┘
              │ HTTP requests
              ▼
         [open-ai :8093]
              │
              ▼ HTTPS
         [OpenAI API]
              │
              ├── Threads API → Conversaciones persistentes
              ├── Runs API → Ejecución del asistente
              ├── Assistants API → Gestión de asistentes
              └── Vector Stores → Base de conocimiento

Alertas Técnicas