Konektor OpenAI
Hubungkan OpenAI ke Brevo melalui Tajo untuk memanfaatkan pembuatan konten bertenaga AI, analisis sentimen pelanggan, segmentasi cerdas, dan analitik prediktif bagi alur kerja otomatisasi pemasaran Anda.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | OpenAI |
| Kategori | AI / ML (Custom) |
| Kompleksitas setup | Sedang |
| Integrasi resmi | Tidak |
| Data yang disinkronkan | Konten, embedding, insight, prediksi |
| Metode autentikasi | API Key (Bearer Token) |
Fitur
- Pembuatan konten AI - Hasilkan subject line email, isi pesan, dan CTA dengan model GPT
- Analisis sentimen pelanggan - Analisis tiket dukungan dan masukan untuk penilaian sentimen
- Segmentasi cerdas - Gunakan embedding untuk mengelompokkan pelanggan berdasarkan pola perilaku
- Analitik prediktif - Perkirakan churn, LTV, dan kecenderungan pembelian
- Konten multibahasa - Hasilkan konten pemasaran dalam bahasa apa pun yang didukung
- Pembuatan gambar - Buat visual kampanye dengan integrasi DALL-E
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Akun OpenAI dengan akses API
- API key dari dasbor OpenAI
- Akun Brevo dengan akses API
- Akun Tajo dengan izin konektor
- Kredit API OpenAI yang cukup untuk perkiraan penggunaan Anda
Autentikasi
Autentikasi API key
OpenAI menggunakan autentikasi Bearer token untuk seluruh permintaan API:
# 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};Keamanan API key
Jangan pernah mengekspos API key OpenAI Anda dalam kode sisi klien. Selalu gunakan environment variable dan permintaan sisi server. Rotasi key secara berkala melalui dasbor OpenAI.
Konfigurasi
Setup dasar
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.7Template pembuatan konten
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.7Endpoint API
| Endpoint | Metode | Deskripsi |
|---|---|---|
https://api.openai.com/v1/responses | POST | Membuat respons AI (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Menghasilkan penyelesaian teks |
https://api.openai.com/v1/embeddings | POST | Membuat embedding teks |
https://api.openai.com/v1/images/generations | POST | Menghasilkan gambar |
https://api.openai.com/v1/audio/speech | POST | Pembuatan text-to-speech |
https://api.openai.com/v1/audio/transcriptions | POST | Transkripsi speech-to-text |
https://api.openai.com/v1/moderations | POST | Moderasi konten |
https://api.openai.com/v1/models | GET | Menampilkan model yang tersedia |
Contoh kode
Inisialisasi konektor
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'});Menghasilkan konten email
// 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;Analisis sentimen pelanggan
// 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 }});Segmentasi cerdas dengan embedding
// 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 clusteringBatas rate
| Model | RPM (permintaan/menit) | TPM (token/menit) | RPD (permintaan/hari) |
|---|---|---|---|
| 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 | Tidak tersedia | 200 |
Header batas rate
Pantau header batas rate (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) pada respons API untuk menerapkan throttling proaktif dan menghindari error 429.
Pemecahan masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
| 401 Unauthorized | API key tidak valid | Periksa key di dasbor OpenAI |
| 429 Rate Limited | Terlalu banyak permintaan | Terapkan exponential backoff |
| 500 Server Error | Gangguan pada OpenAI | Periksa status.openai.com lalu coba lagi |
| Respons terpotong | max_tokens terlalu kecil | Naikkan parameter max_tokens |
| Kualitas konten buruk | Temperature terlalu tinggi | Turunkan temperature demi konsistensi |
Mode debug
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: truePraktik terbaik
- Cache respons - Simpan konten yang dihasilkan untuk mengurangi panggilan API dan biaya
- Gunakan structured output - Minta respons JSON agar parsing lebih andal
- Terapkan logika retry - Tangani batas rate dengan exponential backoff
- Pantau penggunaan token - Lacak konsumsi untuk mengendalikan biaya
- Gunakan model yang sesuai - Pakai gpt-4o-mini untuk tugas sederhana, gpt-4o untuk yang kompleks
- Validasi keluaran - Selalu validasi konten hasil AI sebelum dikirim ke pelanggan
Keamanan
- Autentikasi bearer token - API key dikirim melalui header Authorization
- Hanya sisi server - Jangan pernah mengekspos API key dalam kode sisi klien
- Rotasi key - Rotasi API key secara berkala melalui dasbor OpenAI
- Pemantauan penggunaan - Tetapkan batas pengeluaran di pengaturan billing OpenAI
- Moderasi konten - Gunakan Moderations API untuk menyaring konten yang tidak aman
- Privasi data - Tinjau kebijakan penggunaan data OpenAI untuk kasus penggunaan Anda