OpenAI 커넥터

Tajo를 통해 OpenAI를 Brevo와 연결하여 AI 기반 콘텐츠 생성, 고객 감정 분석, 지능형 세그먼테이션, 마케팅 자동화 워크플로를 위한 예측 분석을 활용하십시오.

개요

속성
플랫폼OpenAI
카테고리AI / ML (Custom)
설정 복잡도중간
공식 통합아니오
동기화 데이터콘텐츠, 임베딩, 인사이트, 예측
인증 방법API 키 (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-requests, x-ratelimit-remaining-tokens)를 모니터링하여 사전 조절을 구현하고 429 오류를 방지하십시오.

문제 해결

문제원인해결 방법
401 Unauthorized잘못된 API 키OpenAI 대시보드에서 키 확인
429 속도 제한너무 많은 요청지수 백오프 구현
500 서버 오류OpenAI 장애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 생성 콘텐츠를 항상 검증

보안

  • Bearer 토큰 인증 - 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 어시스턴트

안녕하세요! 문서에 대해 무엇이든 물어보세요.