Conector de OpenAI

Conecta OpenAI con Brevo a través de Tajo para aprovechar la generación de contenido con IA, el análisis de sentimiento de clientes, la segmentación inteligente y la analítica predictiva en tus flujos de automatización de marketing.

Resumen

PropiedadValor
PlataformaOpenAI
CategoríaIA / ML (Personalizada)
Complejidad de configuraciónMedia
Integración oficialNo
Datos sincronizadosContenido, Embeddings, Insights, Predicciones
Método de autenticaciónAPI Key (Bearer Token)

Funcionalidades

  • Generación de contenido con IA - Genera asuntos de email, cuerpo y CTAs con modelos GPT
  • Análisis de sentimiento de clientes - Analiza tickets de soporte y feedback con puntuación de sentimiento
  • Segmentación inteligente - Usa embeddings para agrupar clientes por patrones de comportamiento
  • Analítica predictiva - Predice churn, LTV y propensión de compra
  • Contenido multilenguaje - Genera contenido de marketing en cualquier idioma admitido
  • Generación de imágenes - Crea visuales para campañas con la integración de DALL-E

Requisitos previos

Antes de empezar, asegúrate de tener:

  1. Una cuenta de OpenAI con acceso a la API
  2. Una API key desde el panel de OpenAI
  3. Una cuenta de Brevo con acceso a la API
  4. Una cuenta de Tajo con permisos de conector
  5. Créditos suficientes en la API de OpenAI para tu uso previsto

Autenticación

Autenticación con API Key

OpenAI usa autenticación por Bearer token en todas las peticiones a la API:

Terminal window
# Set your API keys
export OPENAI_API_KEY=sk-your-api-key
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
// All requests require the Authorization header
const headers = {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json'
};
// For organization-scoped access
const orgHeaders = {
...headers,
'OpenAI-Organization': process.env.OPENAI_ORG_ID,
'OpenAI-Project': process.env.OPENAI_PROJECT_ID
};

Seguridad de la API Key

Nunca expongas tu API key de OpenAI en código del lado del cliente. Usa siempre variables de entorno y peticiones del lado del servidor. Rota las claves periódicamente desde el panel de OpenAI.

Configuración

Configuración básica

connectors:
openai:
enabled: true
model: "gpt-4o"
embedding_model: "text-embedding-3-small"
image_model: "dall-e-3"
features:
content_generation: true
sentiment_analysis: true
smart_segmentation: true
predictive_analytics: true
limits:
max_tokens_per_request: 4096
max_requests_per_minute: 60
temperature: 0.7

Plantillas de generación de contenido

templates:
email_subject:
model: "gpt-4o"
system_prompt: |
You are an expert email marketer. Generate compelling
subject lines that drive open rates.
max_tokens: 100
temperature: 0.8
email_body:
model: "gpt-4o"
system_prompt: |
Generate personalized email content based on customer
data and campaign objectives.
max_tokens: 2048
temperature: 0.7

Endpoints de la API

EndpointMétodoDescripción
https://api.openai.com/v1/responsesPOSTCrear respuestas de IA (Responses API)
https://api.openai.com/v1/chat/completionsPOSTGenerar completions de texto
https://api.openai.com/v1/embeddingsPOSTCrear embeddings de texto
https://api.openai.com/v1/images/generationsPOSTGenerar imágenes
https://api.openai.com/v1/audio/speechPOSTGeneración de texto a voz
https://api.openai.com/v1/audio/transcriptionsPOSTTranscripción de voz a texto
https://api.openai.com/v1/moderationsPOSTModeración de contenido
https://api.openai.com/v1/modelsGETListar los modelos disponibles

Ejemplos de código

Inicializar el conector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('openai', {
apiKey: process.env.OPENAI_API_KEY,
defaultModel: 'gpt-4o'
});

Generar contenido de email

// Generate personalized email subject lines
const response = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-4o',
messages: [
{
role: 'system',
content: 'Generate 5 compelling email subject lines for a product launch.'
},
{
role: 'user',
content: `Product: ${product.name}. Target: ${segment.description}.`
}
],
max_tokens: 200,
temperature: 0.8
})
});
const result = await response.json();
const subjectLines = result.choices[0].message.content;

Análisis de sentimiento de clientes

// Analyze customer feedback sentiment
const sentimentAnalysis = await fetch(
'https://api.openai.com/v1/chat/completions',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-4o',
messages: [
{
role: 'system',
content: 'Analyze sentiment. Return JSON: {score: -1 to 1, label: string, topics: string[]}'
},
{ role: 'user', content: customerFeedback }
],
response_format: { type: 'json_object' },
max_tokens: 150
})
}
);
const sentiment = await sentimentAnalysis.json();
await tajo.contacts.update(email, {
attributes: { SENTIMENT_SCORE: JSON.parse(sentiment.choices[0].message.content).score }
});

Segmentación inteligente con embeddings

// Generate embeddings for customer clustering
const embeddingResponse = await fetch(
'https://api.openai.com/v1/embeddings',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'text-embedding-3-small',
input: customerDescriptions,
dimensions: 256
})
}
);
const embeddings = await embeddingResponse.json();
// Use embeddings for similarity-based customer clustering

Límites de velocidad

ModeloRPM (Peticiones/min)TPM (Tokens/min)RPD (Peticiones/día)
gpt-4o50030.00010.000
gpt-4o-mini500200.00010.000
text-embedding-3-small5001.000.00010.000
dall-e-35N/A200

Cabeceras de límite de velocidad

Monitoriza las cabeceras de rate limit (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) en las respuestas de la API para aplicar throttling proactivo y evitar errores 429.

Resolución de problemas

ProblemaCausaSolución
401 UnauthorizedAPI key no válidaVerifica la clave en el panel de OpenAI
429 Rate LimitedDemasiadas peticionesAplica exponential backoff
500 Server ErrorCaída de OpenAIComprueba status.openai.com y reintenta
Respuesta truncadamax_tokens demasiado bajoAumenta el parámetro max_tokens
Calidad de contenido bajaTemperature demasiado altaReduce la temperature para mayor consistencia

Modo depuración

connectors:
openai:
debug: true
log_level: verbose
log_prompts: false # Don't log prompts in production
log_usage: true

Buenas prácticas

  1. Cachea las respuestas - Almacena el contenido generado para reducir llamadas a la API y costes
  2. Usa salidas estructuradas - Solicita respuestas JSON para un parsing fiable
  3. Implementa lógica de reintentos - Gestiona los rate limits con exponential backoff
  4. Monitoriza el uso de tokens - Rastrea el consumo para controlar los costes
  5. Usa los modelos adecuados - Usa gpt-4o-mini para tareas simples y gpt-4o para las complejas
  6. Valida las salidas - Valida siempre el contenido generado por IA antes de enviarlo a los clientes

Seguridad

  • Autenticación por Bearer token - API keys transmitidas en la cabecera Authorization
  • Solo del lado del servidor - Nunca expongas las API keys en código del lado del cliente
  • Rotación de claves - Rota las API keys con regularidad desde el panel de OpenAI
  • Monitorización del uso - Establece límites de gasto en la configuración de facturación de OpenAI
  • Moderación de contenido - Usa la API de Moderations para filtrar contenido no seguro
  • Privacidad de datos - Revisa las políticas de uso de datos de OpenAI para tu caso de uso

Recursos relacionados

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.