OpenAI Connector
Forbind OpenAI med Brevo via Tajo for at udnytte AI-drevet indholdsgenerering, kundesentimentanalyse, intelligent segmentering og prædiktiv analyse til dine marketing-workflows.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | OpenAI |
| Kategori | AI / ML (brugerdefineret) |
| Opsætningskompleksitet | Mellem |
| Officiel integration | Nej |
| Synkroniserede data | Indhold, embeddings, indsigter, forudsigelser |
| Autentifikationsmetode | API-nøgle (Bearer-token) |
Funktioner
- AI-indholdsgenerering - Generér emnelinjer til e-mails, brødtekst og CTA’er med GPT-modeller
- Kundesentimentanalyse - Analysér supportsager og feedback for sentiment-scoring
- Smart segmentering - Brug embeddings til at klynge kunder efter adfærdsmønstre
- Prædiktiv analyse - Forudsig churn, LTV og købstilbøjelighed
- Indhold på flere sprog - Generér marketingindhold på ethvert understøttet sprog
- Billedgenerering - Skab kampagnevisualer med DALL-E-integration
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- En OpenAI-konto med API-adgang
- En API-nøgle fra OpenAI-dashboardet
- En Brevo-konto med API-adgang
- En Tajo-konto med connector-tilladelser
- Tilstrækkelige OpenAI API-kreditter til dit forventede forbrug
Autentifikation
API-nøgleautentifikation
OpenAI bruger Bearer-token-autentifikation til alle API-anmodninger:
# 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-nøglesikkerhed
Eksponér aldrig din OpenAI API-nøgle i client-side-kode. Brug altid miljøvariabler og server-side-anmodninger. Rotér nøgler regelmæssigt via OpenAI-dashboardet.
Konfiguration
Grundlæggende opsætning
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.7Skabeloner til indholdsgenerering
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 | Metode | Beskrivelse |
|---|---|---|
https://api.openai.com/v1/responses | POST | Opret AI-responses (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Generér tekst-completions |
https://api.openai.com/v1/embeddings | POST | Opret tekst-embeddings |
https://api.openai.com/v1/images/generations | POST | Generér billeder |
https://api.openai.com/v1/audio/speech | POST | Tekst-til-tale-generering |
https://api.openai.com/v1/audio/transcriptions | POST | Tale-til-tekst-transskription |
https://api.openai.com/v1/moderations | POST | Indholdsmoderation |
https://api.openai.com/v1/models | GET | Vis tilgængelige modeller |
Kodeeksempler
Initialisér connector
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'});Generér e-mailindhold
// 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;Kundesentimentanalyse
// 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 }});Smart segmentering med 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
| Model | RPM (anmodninger/min.) | TPM (tokens/min.) | RPD (anmodninger/dag) |
|---|---|---|---|
| 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-headers
Overvåg rate-limit-headers (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) i API-svar for at implementere proaktiv throttling og undgå 429-fejl.
Fejlfinding
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldig API-nøgle | Verificér nøgle i OpenAI-dashboardet |
| 429 Rate Limited | For mange anmodninger | Implementér eksponentiel backoff |
| 500 Server Error | OpenAI-nedbrud | Tjek status.openai.com, og prøv igen |
| Afkortet svar | max_tokens for lav | Øg max_tokens-parameteren |
| Dårlig indholdskvalitet | Temperature for høj | Sænk temperature for konsistens |
Debug-tilstand
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueBedste praksis
- Cache svar - Gem genereret indhold for at reducere API-kald og omkostninger
- Brug strukturerede outputs - Anmod om JSON-svar for pålidelig parsing
- Implementér retry-logik - Håndtér rate limits med eksponentiel backoff
- Overvåg tokenforbrug - Spor forbrug for at styre omkostninger
- Brug passende modeller - Brug gpt-4o-mini til simple opgaver, gpt-4o til komplekse
- Validér outputs - Validér altid AI-genereret indhold, før du sender det til kunder
Sikkerhed
- Bearer-token-auth - API-nøgler sendes via Authorization-headeren
- Kun server-side - Eksponér aldrig API-nøgler i client-side-kode
- Nøglerotation - Rotér API-nøgler regelmæssigt via OpenAI-dashboardet
- Forbrugsovervågning - Sæt udgiftsgrænser i OpenAI-faktureringsindstillinger
- Indholdsmoderation - Brug Moderations API til at filtrere usikkert indhold
- Datasikkerhed - Gennemgå OpenAI’s databrugspolitikker for dit anvendelsestilfælde