OpenAI konektor
Poveži OpenAI sa Brevo putem Tajo za generisanje sadržaja pokretano VI, analizu sentimenta kupaca, inteligentnu segmentaciju i prediktivnu analitiku za tvoje tokove marketing automatizacije.
Pregled
| Svojstvo | Vrednost |
|---|---|
| Platforma | OpenAI |
| Kategorija | VI / ML (Prilagođeno) |
| Složenost podešavanja | Srednje |
| Zvanična integracija | Ne |
| Sinhronizovani podaci | Sadržaj, Embeddinzi, Uvidi, Predviđanja |
| Metod autentifikacije | API Key (Bearer Token) |
Karakteristike
- Generisanje VI sadržaja - Generisanje naslova emailova, tela i CTA-ova sa GPT modelima
- Analiza sentimenta kupaca - Analiza tiketa podrške i povratnih informacija za ocenjivanje sentimenta
- Pametna segmentacija - Korišćenje embeddinga za grupisanje kupaca prema obrascima ponašanja
- Prediktivna analitika - Prognoziranje odljeva, LTV i sklonosti kupovini
- Sadržaj na više jezika - Generisanje marketinškog sadržaja na bilo kom podržanom jeziku
- Generisanje slika - Kreiranje vizuelnih elemenata kampanje sa DALL-E integracijom
Preduslovi
Pre nego što započneš, proveri da imaš:
- OpenAI nalog sa API pristupom
- API ključ sa OpenAI dashboard-a
- Brevo nalog sa API pristupom
- Tajo nalog sa dozvolama konektora
- Dovoljno OpenAI API kredita za očekivanu upotrebu
Autentifikacija
Autentifikacija API ključem
OpenAI koristi Bearer token autentifikaciju za sve API zahteve:
# 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};Bezbednost API ključa
Nikada ne izlažu API ključ OpenAI u klijentskom kodu. Uvek koristi env varijable i server-side zahteve. Periodično rotiraj ključeve putem OpenAI dashboard-a.
Konfiguracija
Osnovno podešavanje
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.7Šabloni za generisanje sadržaja
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 endpointi
| Endpoint | Metoda | Opis |
|---|---|---|
https://api.openai.com/v1/responses | POST | Kreiranje VI odgovora (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Generisanje tekstualnih kompletiranja |
https://api.openai.com/v1/embeddings | POST | Kreiranje tekstualnih embeddinga |
https://api.openai.com/v1/images/generations | POST | Generisanje slika |
https://api.openai.com/v1/audio/speech | POST | Generisanje govora iz teksta |
https://api.openai.com/v1/audio/transcriptions | POST | Transkripcija govora u tekst |
https://api.openai.com/v1/moderations | POST | Moderacija sadržaja |
https://api.openai.com/v1/models | GET | Listanje dostupnih modela |
Primeri koda
Inicijalizacija konektora
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'});Generisanje email sadržaja
// 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;Analiza sentimenta kupaca
// 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 }});Pametna segmentacija sa embeddingima
// 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 clusteringOgraničenja brzine
| Model | RPM (Zahtevi/min) | TPM (Tokeni/min) | RPD (Zahtevi/dan) |
|---|---|---|---|
| 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 |
Headeri ograničenja brzine
Prati headere ograničenja brzine (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) u API odgovorima za implementaciju proaktivnog ograničavanja i izbjegavanje 429 grešaka.
Rešavanje problema
| Problem | Uzrok | Rešenje |
|---|---|---|
| 401 Unauthorized | Nevažeći API ključ | Proveri ključ u OpenAI dashboard-u |
| 429 Rate Limited | Previše zahteva | Implementiraj eksponencijalno usporavanje |
| 500 Server Error | OpenAI kvar | Proveri status.openai.com i pokušaj ponovo |
| Skraćen odgovor | max_tokens prenizak | Povećaj parametar max_tokens |
| Loš kvalitet sadržaja | Temperatura previsoka | Smanji temperaturu za konzistentnost |
Debug režim
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueNajbolje prakse
- Keširaj odgovore - Čuvaj generisani sadržaj da smanjiš API pozive i troškove
- Koristi strukturirane izlaze - Zahtevaj JSON odgovore za pouzdano parsiranje
- Implementiraj logiku ponovnog pokušaja - Obradi ograničenja brzine sa eksponencijalnim usporavanjem
- Prati korišćenje tokena - Prati potrošnju za kontrolu troškova
- Koristi odgovarajuće modele - Koristi gpt-4o-mini za jednostavne zadatke, gpt-4o za složene
- Validiraj izlaze - Uvek validira VI generisani sadržaj pre slanja kupcima
Bezbednost
- Bearer token autentifikacija - API ključevi preneti putem Authorization headera
- Samo server-side - Nikada ne izlažu API ključeve u klijentskom kodu
- Rotacija ključeva - Redovno rotiraj API ključeve putem OpenAI dashboard-a
- Praćenje korišćenja - Postavi limite potrošnje u OpenAI podešavanjima naplate
- Moderacija sadržaja - Koristi Moderations API za filtriranje nesigurnog sadržaja
- Privatnost podataka - Pregled OpenAI politika korišćenja podataka za tvoj slučaj upotrebe