OpenAI Connector
Verbinde OpenAI über Tajo mit Brevo, um KI-gestützte Content-Erstellung, Kundenstimmungsanalyse, intelligente Segmentierung und prädiktive Analysen für deine Marketing-Automation-Workflows zu nutzen.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | OpenAI |
| Kategorie | KI / ML (Custom) |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Content, Embeddings, Insights, Predictions |
| Authentifizierung | API-Schlüssel (Bearer Token) |
Funktionen
- KI-Content-Erstellung - Generiere E-Mail-Betreffzeilen, Textkörper und CTAs mit GPT-Modellen
- Kundenstimmungsanalyse - Analysiere Support-Tickets und Feedback für Sentiment-Scoring
- Smarte Segmentierung - Nutze Embeddings, um Kund:innen nach Verhaltensmustern zu clustern
- Prädiktive Analysen - Prognostiziere Churn, LTV und Kaufwahrscheinlichkeit
- Mehrsprachiger Content - Generiere Marketing-Inhalte in jeder unterstützten Sprache
- Bildgenerierung - Erstelle Kampagnen-Visuals mit DALL-E-Integration
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein OpenAI-Konto mit API-Zugriff
- Einen API-Schlüssel aus dem OpenAI-Dashboard
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit Connector-Berechtigungen
- Ausreichendes OpenAI-API-Guthaben für deine erwartete Nutzung
Authentifizierung
API-Schlüssel-Authentifizierung
OpenAI nutzt Bearer-Token-Authentifizierung für alle API-Anfragen:
# 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};API-Schlüssel-Sicherheit
Lege deinen OpenAI-API-Schlüssel niemals in Client-seitigem Code offen. Verwende immer Umgebungsvariablen und Server-seitige Anfragen. Rotiere Schlüssel regelmäßig über das OpenAI-Dashboard.
Konfiguration
Grundeinrichtung
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.7Vorlagen für Content-Erstellung
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.7API-Endpoints
| Endpoint | Methode | Beschreibung |
|---|---|---|
https://api.openai.com/v1/responses | POST | KI-Antworten erstellen (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Textvervollständigungen generieren |
https://api.openai.com/v1/embeddings | POST | Text-Embeddings erstellen |
https://api.openai.com/v1/images/generations | POST | Bilder generieren |
https://api.openai.com/v1/audio/speech | POST | Text-to-Speech-Generierung |
https://api.openai.com/v1/audio/transcriptions | POST | Speech-to-Text-Transkription |
https://api.openai.com/v1/moderations | POST | Content-Moderation |
https://api.openai.com/v1/models | GET | Verfügbare Modelle auflisten |
Code-Beispiele
Connector initialisieren
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'});E-Mail-Inhalte generieren
// 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;Kundenstimmungsanalyse
// 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 }});Smarte Segmentierung mit 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 clusteringRate Limits
| Modell | RPM (Anfragen/Min) | TPM (Tokens/Min) | RPD (Anfragen/Tag) |
|---|---|---|---|
| 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 |
Rate-Limit-Header
Überwache die Rate-Limit-Header (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) in API-Antworten, um proaktives Throttling zu implementieren und 429-Fehler zu vermeiden.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiger API-Schlüssel | Schlüssel im OpenAI-Dashboard prüfen |
| 429 Rate Limited | Zu viele Anfragen | Exponential Backoff implementieren |
| 500 Server Error | OpenAI-Ausfall | status.openai.com prüfen und erneut versuchen |
| Abgeschnittene Antwort | max_tokens zu niedrig | Parameter max_tokens erhöhen |
| Schlechte Content-Qualität | Temperature zu hoch | Temperature für mehr Konsistenz senken |
Debug-Modus
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueBest Practices
- Antworten cachen - Speichere generierten Content, um API-Aufrufe und Kosten zu reduzieren
- Strukturierte Outputs nutzen - Fordere JSON-Antworten für zuverlässiges Parsing an
- Retry-Logik implementieren - Behandle Rate Limits mit Exponential Backoff
- Token-Verbrauch überwachen - Verfolge den Verbrauch zur Kostenkontrolle
- Passende Modelle wählen - Nutze gpt-4o-mini für einfache Aufgaben, gpt-4o für komplexe
- Outputs validieren - Validiere KI-generierten Content immer, bevor du ihn an Kund:innen sendest
Sicherheit
- Bearer-Token-Auth - API-Schlüssel werden über den Authorization-Header übertragen
- Nur serverseitig - Lege API-Schlüssel niemals in Client-seitigem Code offen
- Schlüsselrotation - Rotiere API-Schlüssel regelmäßig über das OpenAI-Dashboard
- Nutzungs-Monitoring - Lege Ausgabenlimits in den OpenAI-Billing-Einstellungen fest
- Content-Moderation - Nutze die Moderations-API, um unsichere Inhalte zu filtern
- Datenschutz - Überprüfe die Datennutzungsrichtlinien von OpenAI für deinen Anwendungsfall