Conector OpenAI
Conecte o OpenAI ao Brevo através do Tajo para aproveitar a geração de conteúdo com IA, análise de sentimento de clientes, segmentação inteligente e análises preditivas para seus workflows de automação de marketing.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | OpenAI |
| Categoria | IA / ML (Personalizado) |
| Complexidade de configuração | Média |
| Integração oficial | Não |
| Dados sincronizados | Conteúdo, Embeddings, Insights, Predições |
| Método de autenticação | API Key (Bearer Token) |
Recursos
- Geração de conteúdo com IA - Gere assuntos de e-mail, corpo de texto e CTAs com modelos GPT
- Análise de sentimento de clientes - Analise tickets de suporte e feedback com pontuação de sentimento
- Segmentação inteligente - Use embeddings para agrupar clientes por padrões de comportamento
- Análises preditivas - Preveja churn, LTV e propensão de compra
- Conteúdo multilíngue - Gere conteúdo de marketing em qualquer idioma suportado
- Geração de imagens - Crie imagens para campanhas com integração DALL-E
Pré-requisitos
Antes de começar, certifique-se de ter:
- Uma conta OpenAI com acesso à API
- Uma chave de API do painel da OpenAI
- Uma conta Brevo com acesso à API
- Uma conta Tajo com permissões de conector
- Créditos suficientes na API OpenAI para o uso esperado
Autenticação
Autenticação por API Key
A OpenAI usa autenticação Bearer token para todas as requisições à API:
# Set your API keysexport OPENAI_API_KEY=sk-your-api-keyexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// All requests require the Authorization headerconst headers = { 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`, 'Content-Type': 'application/json'};
// For organization-scoped accessconst orgHeaders = { ...headers, 'OpenAI-Organization': process.env.OPENAI_ORG_ID, 'OpenAI-Project': process.env.OPENAI_PROJECT_ID};Segurança da API Key
Nunca exponha sua API key da OpenAI em código do lado do cliente. Sempre use variáveis de ambiente e requisições do lado do servidor. Faça rotação periódica das chaves pelo painel da OpenAI.
Configuração
Configuração 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.7Templates de geração de conteúdo
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.7Endpoints da API
| Endpoint | Método | Descrição |
|---|---|---|
https://api.openai.com/v1/responses | POST | Criar respostas de IA (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Gerar completions de texto |
https://api.openai.com/v1/embeddings | POST | Criar embeddings de texto |
https://api.openai.com/v1/images/generations | POST | Gerar imagens |
https://api.openai.com/v1/audio/speech | POST | Geração de texto para fala |
https://api.openai.com/v1/audio/transcriptions | POST | Transcrição de fala para texto |
https://api.openai.com/v1/moderations | POST | Moderação de conteúdo |
https://api.openai.com/v1/models | GET | Listar modelos disponíveis |
Exemplos de código
Inicializar o 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'});Gerar conteúdo de e-mail
// Generate personalized email subject linesconst 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álise de sentimento do cliente
// Analyze customer feedback sentimentconst 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 }});Segmentação inteligente com embeddings
// Generate embeddings for customer clusteringconst 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 clusteringLimites de taxa
| Modelo | RPM (Requisições/Min) | TPM (Tokens/Min) | RPD (Requisições/Dia) |
|---|---|---|---|
| gpt-4o | 500 | 30.000 | 10.000 |
| gpt-4o-mini | 500 | 200.000 | 10.000 |
| text-embedding-3-small | 500 | 1.000.000 | 10.000 |
| dall-e-3 | 5 | N/A | 200 |
Cabeçalhos de limite de taxa
Monitore os cabeçalhos de limite de taxa (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) nas respostas da API para implementar throttling proativo e evitar erros 429.
Solução de problemas
| Problema | Causa | Solução |
|---|---|---|
| 401 Unauthorized | API key inválida | Verifique a chave no painel da OpenAI |
| 429 Rate Limited | Muitas requisições | Implemente backoff exponencial |
| 500 Server Error | Indisponibilidade da OpenAI | Verifique status.openai.com e tente novamente |
| Resposta truncada | max_tokens muito baixo | Aumente o parâmetro max_tokens |
| Qualidade ruim do conteúdo | Temperature muito alta | Reduza a temperature para consistência |
Modo de depuração
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueMelhores práticas
- Faça cache das respostas - Armazene conteúdo gerado para reduzir chamadas à API e custos
- Use saídas estruturadas - Solicite respostas em JSON para parsing confiável
- Implemente lógica de retry - Trate limites de taxa com backoff exponencial
- Monitore o uso de tokens - Acompanhe o consumo para controlar custos
- Use os modelos apropriados - Use gpt-4o-mini para tarefas simples, gpt-4o para as complexas
- Valide as saídas - Sempre valide conteúdo gerado por IA antes de enviar aos clientes
Segurança
- Autenticação Bearer token - API keys transmitidas via cabeçalho Authorization
- Somente do lado do servidor - Nunca exponha API keys em código do lado do cliente
- Rotação de chaves - Faça rotação das API keys regularmente pelo painel da OpenAI
- Monitoramento de uso - Defina limites de gasto nas configurações de cobrança da OpenAI
- Moderação de conteúdo - Use a Moderations API para filtrar conteúdo inseguro
- Privacidade de dados - Revise as políticas de uso de dados da OpenAI para seu caso de uso