OpenAI 커넥터
커넥터 상태: 예정 아직 구축되지 않았습니다. Tajo는 현재 이 커넥터를 실행하지 않습니다.
예시 그림 · 샘플 데이터
동기화 예시
원본
OpenAI
커넥터 상태: 예정
대상
다른 도구
커넥터 상태: 사용자 지정 도구
필드 매핑
| 원본 필드 | 대상 필드 | 예시 값 |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- 초안
- 레코드 한 건 검토
- 이 버전 승인
상태는 개별 커넥터에 대한 것으로, 이 동기화가 준비됐다는 보장은 아닙니다. 표시된 필드는 예시입니다. 동기화 실행 전에 실제 스키마와 권한을 확인하세요.
Tajo를 통해 OpenAI를 Brevo와 연결하여 AI 기반 콘텐츠 생성, 고객 감정 분석, 지능형 세그먼테이션, 마케팅 자동화 워크플로를 위한 예측 분석을 활용하십시오.
개요
| 속성 | 값 |
|---|---|
| 플랫폼 | OpenAI |
| 카테고리 | AI / ML (Custom) |
| 설정 복잡도 | 중간 |
| 공식 통합 | 아니오 |
| 동기화 데이터 | 콘텐츠, 임베딩, 인사이트, 예측 |
| 인증 방법 | API 키 (Bearer Token) |
기능
- AI 콘텐츠 생성 - GPT 모델로 이메일 제목, 본문, CTA 생성
- 고객 감정 분석 - 지원 티켓 및 피드백을 분석하여 감정 점수 산출
- 스마트 세그먼테이션 - 임베딩을 사용하여 행동 패턴별로 고객 클러스터링
- 예측 분석 - 이탈, LTV, 구매 성향 예측
- 다국어 콘텐츠 - 지원되는 모든 언어로 마케팅 콘텐츠 생성
- 이미지 생성 - DALL-E 통합으로 캠페인 비주얼 생성
사전 요구 사항
시작하기 전에 다음이 준비되어 있는지 확인하십시오.
- API 접근이 가능한 OpenAI 계정
- OpenAI 대시보드의 API 키
- API 접근이 가능한 Brevo 계정
- 커넥터 권한이 있는 Tajo 계정
- 예상 사용량에 충분한 OpenAI API 크레딧
인증
API 키 인증
OpenAI는 모든 API 요청에 Bearer 토큰 인증을 사용합니다.
# API 키 설정export OPENAI_API_KEY=sk-your-api-keyexport TAJO_API_KEY=your_tajo_api_keyexport 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.7API 엔드포인트
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
https://api.openai.com/v1/responses | POST | AI 응답 생성 (Responses API) |
https://api.openai.com/v1/chat/completions | POST | 텍스트 완성 생성 |
https://api.openai.com/v1/embeddings | POST | 텍스트 임베딩 생성 |
https://api.openai.com/v1/images/generations | POST | 이미지 생성 |
https://api.openai.com/v1/audio/speech | POST | 텍스트-음성 변환 생성 |
https://api.openai.com/v1/audio/transcriptions | POST | 음성-텍스트 변환 |
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'});이메일 콘텐츠 생성
// 맞춤형 이메일 제목 생성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-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 |
속도 제한 헤더
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모범 사례
- 응답 캐싱 - API 호출 및 비용을 줄이기 위해 생성된 콘텐츠 저장
- 구조화된 출력 사용 - 안정적인 파싱을 위해 JSON 응답 요청
- 재시도 로직 구현 - 지수 백오프로 속도 제한 처리
- 토큰 사용량 모니터링 - 비용 관리를 위해 소비량 추적
- 적절한 모델 사용 - 단순한 작업에는 gpt-4o-mini, 복잡한 작업에는 gpt-4o 사용
- 출력 검증 - 고객에게 전송하기 전에 AI 생성 콘텐츠를 항상 검증
보안
- Bearer 토큰 인증 - Authorization 헤더를 통해 API 키 전송
- 서버 측 전용 - 클라이언트 측 코드에 API 키를 노출하지 않음
- 키 교체 - OpenAI 대시보드를 통해 API 키를 정기적으로 교체
- 사용량 모니터링 - OpenAI 청구 설정에서 지출 한도 설정
- 콘텐츠 조정 - Moderations API를 사용하여 안전하지 않은 콘텐츠 필터링
- 데이터 개인 정보 보호 - 사용 사례에 대한 OpenAI 데이터 사용 정책 검토