OpenAI コネクタ

Tajo を介して OpenAI を Brevo に接続し、AI 駆動のコンテンツ生成、顧客のセンチメント分析、インテリジェントなセグメンテーション、予測分析をマーケティング自動化ワークフローに活用します。

概要

プロパティ
プラットフォームOpenAI
カテゴリAI / ML(カスタム)
セットアップの複雑さ
公式統合いいえ
同期データコンテンツ、埋め込み、インサイト、予測
認証方式API Key(Bearer Token)

機能

  • AI コンテンツ生成 - GPT モデルでメール件名、本文、CTA を生成
  • 顧客センチメント分析 - サポートチケットやフィードバックを分析してセンチメントスコアリング
  • スマートセグメンテーション - 埋め込みを使用して行動パターン別に顧客をクラスタリング
  • 予測分析 - チャーン、LTV、購入傾向を予測
  • 多言語コンテンツ - サポートされている任意の言語でマーケティングコンテンツを生成
  • 画像生成 - DALL-E 統合でキャンペーンビジュアルを作成

前提条件

開始する前に、以下を準備してください。

  1. API アクセス可能な OpenAI アカウント
  2. OpenAI ダッシュボード からの API キー
  3. API アクセス可能な Brevo アカウント
  4. コネクタ権限を持つ Tajo アカウント
  5. 想定される使用量に十分な OpenAI API クレジット

認証

API キー認証

OpenAI はすべての API リクエストに Bearer トークン認証を使用します。

Terminal window
# API キーを設定
export OPENAI_API_KEY=sk-your-api-key
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
// すべてのリクエストに Authorization ヘッダーが必要
const headers = {
'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
'Content-Type': 'application/json'
};
// 組織スコープのアクセス用
const orgHeaders = {
...headers,
'OpenAI-Organization': process.env.OPENAI_ORG_ID,
'OpenAI-Project': process.env.OPENAI_PROJECT_ID
};

API キーのセキュリティ

OpenAI API キーをクライアントサイドコードに公開しないでください。常に環境変数とサーバーサイドリクエストを使用してください。OpenAI ダッシュボードから定期的にキーをローテーションしてください。

設定

基本セットアップ

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.7

API エンドポイント

エンドポイントメソッド説明
https://api.openai.com/v1/responsesPOSTAI レスポンスを作成(Responses API)
https://api.openai.com/v1/chat/completionsPOSTテキスト補完を生成
https://api.openai.com/v1/embeddingsPOSTテキスト埋め込みを作成
https://api.openai.com/v1/images/generationsPOST画像を生成
https://api.openai.com/v1/audio/speechPOSTテキストから音声を生成
https://api.openai.com/v1/audio/transcriptionsPOST音声からテキストに文字起こし
https://api.openai.com/v1/moderationsPOSTコンテンツモデレーション
https://api.openai.com/v1/modelsGET利用可能なモデルを一覧取得

コード例

コネクタの初期化

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'
});

メールコンテンツを生成

// パーソナライズされたメール件名を生成
const 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;

顧客センチメント分析

// 顧客フィードバックのセンチメントを分析
const 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 }
});

埋め込みを使用したスマートセグメンテーション

// 顧客クラスタリング用の埋め込みを生成
const 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();
// 類似性ベースの顧客クラスタリングに埋め込みを使用

レート制限

モデルRPM(リクエスト/分)TPM(トークン/分)RPD(リクエスト/日)
gpt-4o50030,00010,000
gpt-4o-mini500200,00010,000
text-embedding-3-small5001,000,00010,000
dall-e-35N/A200

レート制限ヘッダー

API レスポンスのレート制限ヘッダー(x-ratelimit-remaining-requestsx-ratelimit-remaining-tokens)を監視して、事前にスロットリングを実装し、429 エラーを回避してください。

トラブルシューティング

問題原因解決策
401 UnauthorizedAPI キーが無効OpenAI ダッシュボードでキーを確認
429 Rate Limitedリクエスト過多指数バックオフを実装
500 Server ErrorOpenAI の障害status.openai.com を確認して再試行
レスポンスが切り捨てられるmax_tokens が低すぎるmax_tokens パラメータを増やす
コンテンツ品質が低いTemperature が高すぎる一貫性のため temperature を下げる

デバッグモード

connectors:
openai:
debug: true
log_level: verbose
log_prompts: false # 本番環境ではプロンプトをログに記録しない
log_usage: true

ベストプラクティス

  1. レスポンスをキャッシュする - API 呼び出しとコストを削減するために生成されたコンテンツを保存
  2. 構造化された出力を使用する - 信頼性の高い解析のため JSON レスポンスをリクエスト
  3. リトライロジックを実装する - 指数バックオフでレート制限を処理
  4. トークン使用量を監視する - コストを制御するため消費量を追跡
  5. 適切なモデルを使用する - 単純なタスクには gpt-4o-mini、複雑なタスクには gpt-4o を使用
  6. 出力を検証する - 顧客に送信する前に常に AI 生成コンテンツを検証

セキュリティ

  • ベアラートークン認証 - Authorization ヘッダー経由で API キーを送信
  • サーバーサイドのみ - クライアントサイドコードに API キーを決して公開しない
  • キーローテーション - OpenAI ダッシュボードから定期的に API キーをローテーション
  • 使用量監視 - OpenAI 課金設定で支出制限を設定
  • コンテンツモデレーション - Moderations API を使用して安全でないコンテンツをフィルタリング
  • データプライバシー - ユースケースに応じて OpenAI のデータ使用ポリシーを確認

関連リソース

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AIアシスタント

こんにちは!ドキュメントについて何でもお聞きください。