Connecteur OpenAI
Connectez OpenAI à Brevo via Tajo pour exploiter la génération de contenu assistée par IA, l’analyse de sentiment client, la segmentation intelligente et l’analytique prédictive dans vos workflows d’automatisation marketing.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | OpenAI |
| Catégorie | IA / ML (Custom) |
| Complexité d’installation | Moyenne |
| Intégration officielle | Non |
| Données synchronisées | Contenu, embeddings, insights, prédictions |
| Méthode d’authentification | API Key (Bearer Token) |
Fonctionnalités
- Génération de contenu par IA, Générez des objets d’e-mails, du corps de texte et des CTA avec les modèles GPT
- Analyse de sentiment client, Analysez les tickets de support et les feedbacks pour un scoring de sentiment
- Segmentation intelligente, Utilisez les embeddings pour regrouper les clients par schémas de comportement
- Analytique prédictive, Prévoyez le churn, la LTV et la propension à l’achat
- Contenu multilingue, Générez du contenu marketing dans toute langue prise en charge
- Génération d’images, Créez des visuels de campagne via l’intégration DALL-E
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte OpenAI avec accès API
- Une clé API depuis le tableau de bord OpenAI
- Un compte Brevo avec accès API
- Un compte Tajo avec les permissions connecteur
- Suffisamment de crédits API OpenAI pour votre usage prévu
Authentification
Authentification par clé API
OpenAI utilise l’authentification par Bearer token pour toutes les requêtes API :
# Définissez vos clés APIexport OPENAI_API_KEY=sk-your-api-keyexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// Toutes les requêtes nécessitent l'en-tête Authorizationconst headers = { 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`, 'Content-Type': 'application/json'};
// Pour un accès limité à une organisationconst orgHeaders = { ...headers, 'OpenAI-Organization': process.env.OPENAI_ORG_ID, 'OpenAI-Project': process.env.OPENAI_PROJECT_ID};Sécurité de la clé API
N’exposez jamais votre clé API OpenAI dans du code côté client. Utilisez toujours des variables d’environnement et des requêtes côté serveur. Faites tourner les clés périodiquement via le tableau de bord OpenAI.
Configuration
Configuration de base
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 génération de contenu
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 API
| Endpoint | Méthode | Description |
|---|---|---|
https://api.openai.com/v1/responses | POST | Créer des réponses IA (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Générer des complétions de texte |
https://api.openai.com/v1/embeddings | POST | Créer des embeddings de texte |
https://api.openai.com/v1/images/generations | POST | Générer des images |
https://api.openai.com/v1/audio/speech | POST | Génération texte-vers-parole |
https://api.openai.com/v1/audio/transcriptions | POST | Transcription parole-vers-texte |
https://api.openai.com/v1/moderations | POST | Modération de contenu |
https://api.openai.com/v1/models | GET | Lister les modèles disponibles |
Exemples de code
Initialiser le connecteur
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'});Générer du contenu d’e-mail
// Générer des objets d'e-mail personnalisésconst 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;Analyse de sentiment client
// Analyser le sentiment des feedbacks clientsconst 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 }});Segmentation intelligente via embeddings
// Générer des embeddings pour le clustering clientconst 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();// Utilisez les embeddings pour un clustering client basé sur la similaritéLimites de débit
| Modèle | RPM (requêtes/min) | TPM (tokens/min) | RPD (requêtes/jour) |
|---|---|---|---|
| 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 |
En-têtes de limite de débit
Surveillez les en-têtes de limite de débit (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) dans les réponses API pour implémenter un throttling proactif et éviter les erreurs 429.
Dépannage
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Clé API invalide | Vérifiez la clé dans le tableau de bord OpenAI |
| 429 Rate Limited | Trop de requêtes | Implémentez un backoff exponentiel |
| 500 Server Error | Panne OpenAI | Consultez status.openai.com et réessayez |
| Réponse tronquée | max_tokens trop bas | Augmentez le paramètre max_tokens |
| Qualité du contenu médiocre | Température trop haute | Baissez la température pour plus de cohérence |
Mode debug
connectors: openai: debug: true log_level: verbose log_prompts: false # Ne loguez pas les prompts en production log_usage: trueBonnes pratiques
- Mettez en cache les réponses, Stockez le contenu généré pour réduire les appels API et les coûts
- Utilisez les sorties structurées, Demandez des réponses JSON pour un parsing fiable
- Implémentez une logique de retry, Gérez les limites de débit avec un backoff exponentiel
- Surveillez l’usage en tokens, Suivez la consommation pour contrôler les coûts
- Utilisez des modèles appropriés, Utilisez gpt-4o-mini pour les tâches simples, gpt-4o pour les complexes
- Validez les sorties, Validez toujours le contenu généré par IA avant de l’envoyer aux clients
Sécurité
- Authentification par Bearer token, Clés API transmises via l’en-tête Authorization
- Côté serveur uniquement, N’exposez jamais les clés API dans du code côté client
- Rotation des clés, Faites tourner les clés API régulièrement via le tableau de bord OpenAI
- Surveillance de l’usage, Définissez des limites de dépenses dans les paramètres de facturation OpenAI
- Modération de contenu, Utilisez l’API Moderations pour filtrer les contenus dangereux
- Confidentialité des données, Consultez les politiques d’usage des données d’OpenAI pour votre cas d’usage