Конектор OpenAI
Свържете OpenAI с Brevo чрез Tajo, за да използвате AI-задвижвано генериране на съдържание, анализ на клиентски сантимент, интелигентно сегментиране и предиктивна аналитика за вашите маркетингови автоматизации.
Преглед
| Свойство | Стойност |
|---|---|
| Платформа | OpenAI |
| Категория | AI / ML (Персонализирана) |
| Сложност на настройка | Средна |
| Официална интеграция | Не |
| Синхронизирани данни | Съдържание, Embeddings, Инсайти, Прогнози |
| Метод на автентикация | API Key (Bearer Token) |
Функции
- AI генериране на съдържание – Генерирайте subject line на имейли, body copy и CTA с GPT модели
- Анализ на клиентски сантимент – Анализирайте support тикети и обратна връзка за скориране на сантимент
- Интелигентно сегментиране – Използвайте embeddings за клъстериране на клиенти по поведенчески модели
- Предиктивна аналитика – Прогнозирайте churn, LTV и склонност към покупка
- Съдържание на множество езици – Генерирайте маркетингово съдържание на всеки поддържан език
- Генериране на изображения – Създавайте визуални елементи за кампании с DALL-E интеграция
Предварителни условия
Преди да започнете, уверете се, че имате:
- Акаунт в OpenAI с API достъп
- API ключ от OpenAI dashboard
- Акаунт в Brevo с API достъп
- Акаунт в Tajo с конекторни права
- Достатъчно OpenAI API кредити за очакваната ви употреба
Автентикация
API Key автентикация
OpenAI използва Bearer token автентикация за всички 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};Сигурност на API ключа
Никога не излагайте вашия OpenAI API ключ в client-side код. Винаги използвайте environment променливи и server-side заявки. Ротирайте ключовете периодично чрез OpenAI dashboard.
Конфигурация
Основна настройка
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Шаблони за генериране на съдържание
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 крайни точки
| Endpoint | Method | Описание |
|---|---|---|
https://api.openai.com/v1/responses | POST | Създаване на AI отговори (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Генериране на текстови completions |
https://api.openai.com/v1/embeddings | POST | Създаване на текстови embeddings |
https://api.openai.com/v1/images/generations | POST | Генериране на изображения |
https://api.openai.com/v1/audio/speech | POST | Генериране на text-to-speech |
https://api.openai.com/v1/audio/transcriptions | POST | Speech-to-text транскрипция |
https://api.openai.com/v1/moderations | POST | Модерация на съдържание |
https://api.openai.com/v1/models | GET | Списък на наличните модели |
Примери за код
Инициализация на конектора
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'});Генериране на съдържание за имейли
// 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;Анализ на клиентски сантимент
// 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 }});Интелигентно сегментиране с 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 clusteringЛимити на заявки
| Модел | RPM (заявки/мин) | TPM (токени/мин) | RPD (заявки/ден) |
|---|---|---|---|
| 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
Следете headers за лимитите на заявките (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) в API отговорите, за да внедрите проактивно throttling и да избегнете 429 грешки.
Отстраняване на проблеми
| Проблем | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Невалиден API ключ | Проверете ключа в OpenAI dashboard |
| 429 Rate Limited | Твърде много заявки | Внедрете експоненциален backoff |
| 500 Server Error | Прекъсване на OpenAI | Проверете status.openai.com и повторете |
| Съкратен отговор | max_tokens е твърде нисък | Увеличете параметъра max_tokens |
| Лошо качество на съдържанието | Твърде висока temperature | Намалете temperature за последователност |
Debug режим
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueНай-добри практики
- Кеширайте отговорите – Съхранявайте генерираното съдържание, за да намалите API повикванията и разходите
- Използвайте структурирани изходи – Изисквайте JSON отговори за надеждно парсване
- Внедрете retry логика – Обработвайте лимитите на заявките с експоненциален backoff
- Следете употребата на токени – Проследявайте консумацията, за да контролирате разходите
- Използвайте подходящи модели – Използвайте gpt-4o-mini за прости задачи, gpt-4o за сложни
- Валидирайте изходите – Винаги валидирайте AI-генерирано съдържание преди да го изпратите до клиенти
Сигурност
- Bearer token автентикация – API ключове, предавани чрез Authorization header
- Само от сървъра – Никога не излагайте API ключове в client-side код
- Ротация на ключове – Ротирайте API ключовете редовно чрез OpenAI dashboard
- Мониторинг на употребата – Задайте лимити на разходите в OpenAI billing настройките
- Модерация на съдържание – Използвайте Moderations API, за да филтрирате неподходящо съдържание
- Поверителност на данните – Прегледайте политиките на OpenAI за използване на данни за вашия случай