Konektor OpenAI
Połącz OpenAI z Brevo przez Tajo, aby korzystać z generowania treści wspieranego przez AI, analizy sentymentu klientów, inteligentnej segmentacji i analityki predykcyjnej w przepływach automatyzacji marketingu.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | OpenAI |
| Kategoria | AI / ML (Niestandardowa) |
| Poziom konfiguracji | Średni |
| Integracja oficjalna | Nie |
| Synchronizowane dane | Treść, Osadzenia, Wglądy, Predykcje |
| Metoda uwierzytelniania | Klucz API (Token Bearer) |
Funkcje
- Generowanie treści AI - Generuj tematy e-maili, treść i CTA za pomocą modeli GPT
- Analiza sentymentu klientów - Analizuj zgłoszenia pomocy technicznej i opinie dla oceny sentymentu
- Inteligentna segmentacja - Używaj osadzeń do grupowania klientów według wzorców zachowań
- Analityka predykcyjna - Prognozuj odejścia, LTV i skłonność do zakupu
- Treść wielojęzyczna - Generuj treści marketingowe w dowolnym obsługiwanym języku
- Generowanie obrazów - Twórz wizualizacje kampanii z integracją DALL-E
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Konto OpenAI z dostępem do API
- Klucz API z dashboardu OpenAI
- Konto Brevo z dostępem do API
- Konto Tajo z uprawnieniami konektora
- Wystarczające kredyty API OpenAI dla oczekiwanego użytkowania
Uwierzytelnianie
Uwierzytelnianie kluczem API
OpenAI używa uwierzytelniania tokenem Bearer dla wszystkich żądań 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};Bezpieczeństwo klucza API
Nigdy nie ujawniaj swojego klucza API OpenAI w kodzie po stronie klienta. Zawsze używaj zmiennych środowiskowych i żądań po stronie serwera. Regularnie rotuj klucze przez dashboard OpenAI.
Konfiguracja
Podstawowa konfiguracja
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.7Szablony generowania treści
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.7Endpointy API
| Endpoint | Metoda | Opis |
|---|---|---|
https://api.openai.com/v1/responses | POST | Twórz odpowiedzi AI (Responses API) |
https://api.openai.com/v1/chat/completions | POST | Generuj uzupełnienia tekstowe |
https://api.openai.com/v1/embeddings | POST | Twórz osadzenia tekstowe |
https://api.openai.com/v1/images/generations | POST | Generuj obrazy |
https://api.openai.com/v1/audio/speech | POST | Generowanie tekstu na mowę |
https://api.openai.com/v1/audio/transcriptions | POST | Transkrypcja mowy na tekst |
https://api.openai.com/v1/moderations | POST | Moderacja treści |
https://api.openai.com/v1/models | GET | Lista dostępnych modeli |
Przykłady kodu
Inicjalizacja 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'});Generuj treść e-maila
// 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 sentymentu klientów
// 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 }});Inteligentna segmentacja z osadzeniami
// 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 clusteringLimity API
| Model | RPM (Żądania/min) | TPM (Tokeny/min) | RPD (Żądania/dzień) |
|---|---|---|---|
| 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 | Nie dotyczy | 200 |
Nagłówki limitów
Monitoruj nagłówki limitów (x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens) w odpowiedziach API, aby wdrożyć proaktywne ograniczanie przepustowości i unikać błędów 429.
Rozwiązywanie problemów
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| 401 Unauthorized | Nieprawidłowy klucz API | Zweryfikuj klucz w dashboardzie OpenAI |
| 429 Rate Limited | Za dużo żądań | Wdrożyj wykładnicze wycofanie |
| 500 Server Error | Awaria OpenAI | Sprawdź status.openai.com i ponów próbę |
| Obcięta odpowiedź | max_tokens zbyt niski | Zwiększ parametr max_tokens |
| Niska jakość treści | Temperatura zbyt wysoka | Obniż temperaturę dla spójności |
Tryb debug
connectors: openai: debug: true log_level: verbose log_prompts: false # Don't log prompts in production log_usage: trueNajlepsze praktyki
- Buforuj odpowiedzi - Przechowuj wygenerowaną treść, aby zmniejszyć wywołania API i koszty
- Używaj ustrukturyzowanych wyników - Żądaj odpowiedzi JSON dla niezawodnego parsowania
- Wdrożyj logikę ponownych prób - Obsługuj limity szybkości z wykładniczym wycofaniem
- Monitoruj użycie tokenów - Śledź zużycie, aby kontrolować koszty
- Używaj odpowiednich modeli - Używaj gpt-4o-mini dla prostych zadań, gpt-4o dla złożonych
- Waliduj wyniki - Zawsze waliduj treści generowane przez AI przed wysłaniem do klientów
Bezpieczeństwo
- Uwierzytelnianie tokenem bearer - Klucze API przesyłane przez nagłówek Authorization
- Tylko po stronie serwera - Nigdy nie ujawniaj kluczy API w kodzie po stronie klienta
- Rotacja kluczy - Regularnie rotuj klucze API przez dashboard OpenAI
- Monitorowanie użycia - Ustaw limity wydatków w ustawieniach rozliczeniowych OpenAI
- Moderacja treści - Używaj Moderations API do filtrowania nieodpowiedniej treści
- Prywatność danych - Zapoznaj się z polityką użytkowania danych OpenAI dla swojego przypadku użycia