OpenAI-koppling
Anslut OpenAI till Brevo via Tajo för att utnyttja AI-driven innehållsgenerering, sentimentanalys av kunder, intelligent segmentering och prediktiv analys för dina marknadsautomationsflöden.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | OpenAI |
| Kategori | AI / ML (Anpassad) |
| Installationskomplexitet | Medel |
| Officiell integration | Nej |
| Data som synkas | Innehåll, embeddings, insikter, prediktioner |
| Autentiseringsmetod | API-nyckel (Bearer-token) |
Funktioner
- AI-innehållsgenerering - Generera ämnesrader, brödtext och CTA:er för e-post med GPT-modeller
- Sentimentanalys av kunder - Analysera supportärenden och feedback för sentimentpoäng
- Smart segmentering - Använd embeddings för att klustra kunder efter beteendemönster
- Prediktiv analys - Förutsäg churn, LTV och köpbenägenhet
- Flerspråkigt innehåll - Generera marknadsföringsinnehåll på vilket som helst stött språk
- Bildgenerering - Skapa kampanjbilder med DALL-E-integration
Förutsättningar
Innan du börjar, se till att du har:
- Ett OpenAI-konto med API-åtkomst
- En API-nyckel från OpenAI-instrumentpanelen
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto med kopplingsbehörigheter
- Tillräckligt med OpenAI API-krediter för din förväntade användning
Autentisering
Autentisering med API-nyckel
OpenAI använder Bearer-tokenautentisering för alla API-förfrågningar:
# 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};Säkerhet för API-nyckel
Exponera aldrig din OpenAI API-nyckel i klientsidekod. Använd alltid miljövariabler och förfrågningar på serversidan. Rotera nycklar regelbundet via OpenAI-instrumentpanelen.
Konfiguration
Grundinställning
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.7Mallar för innehållsgenerering
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 | Metod | Beskrivning |
|---|---|---|
https://api.openai.com/v1/responses | POST | Skapa AI-svar (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Generera textkompletteringar |
https://api.openai.com/v1/embeddings | POST | Skapa textembeddings |
https://api.openai.com/v1/images/generations | POST | Generera bilder |
https://api.openai.com/v1/audio/speech | POST | Text-till-tal-generering |
https://api.openai.com/v1/audio/transcriptions | POST | Tal-till-text-transkription |
https://api.openai.com/v1/moderations | POST | Innehållsmoderering |
https://api.openai.com/v1/models | GET | Lista tillgängliga modeller |
Kodexempel
Initiera kopplingen
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'});Generera e-postinnehåll
// 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;Sentimentanalys av kunder
// 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 clusteringHastighetsbegränsningar
| Modell | RPM (förfrågningar/min) | TPM (tokens/min) | RPD (förfrågningar/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 |
Headrar för hastighetsbegränsning
Övervaka headrar för hastighetsbegränsning (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) i API-svar för att implementera proaktiv strypning och undvika 429-fel.
Felsökning
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Ogiltig API-nyckel | Verifiera nyckel i OpenAI-instrumentpanelen |
| 429 Rate Limited | För många förfrågningar | Implementera exponentiell backoff |
| 500 Server Error | OpenAI-driftstörning | Kontrollera status.openai.com och försök igen |
| Avkortat svar | max_tokens för lågt | Öka parametern max_tokens |
| Dålig innehållskvalitet | Temperatur för hög | Sänk temperaturen för konsistens |
Felsökningsläge
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueBästa praxis
- Cacha svar - Lagra genererat innehåll för att minska API-anrop och kostnader
- Använd strukturerade utdata - Begär JSON-svar för pålitlig parsning
- Implementera återförsökslogik - Hantera hastighetsbegränsningar med exponentiell backoff
- Övervaka tokenanvändning - Spåra konsumtion för att kontrollera kostnader
- Använd lämpliga modeller - Använd gpt-4o-mini för enkla uppgifter, gpt-4o för komplexa
- Validera utdata - Validera alltid AI-genererat innehåll innan det skickas till kunder
Säkerhet
- Bearer-tokenautentisering - API-nycklar överförs via Authorization-header
- Endast serversida - Exponera aldrig API-nycklar i klientsidekod
- Nyckelrotation - Rotera API-nycklar regelbundet via OpenAI-instrumentpanelen
- Användningsövervakning - Sätt utgiftsgränser i OpenAI-faktureringsinställningarna
- Innehållsmoderering - Använd Moderations API för att filtrera osäkert innehåll
- Datasekretess - Granska OpenAI:s policyer för dataanvändning för ditt användningsfall