---
title: "OpenAI 커넥터"
description: "Tajo를 통해 AI 기반 콘텐츠 생성, 고객 인사이트, 지능형 마케팅 자동화를 Brevo와 연결하는 완전한 OpenAI 통합 가이드입니다."
url: https://tajo.io/kr/docs/connectors/custom/openai/
markdown: https://tajo.io/kr/docs/connectors/custom/openai.md
lang: ko-KR
robots: noindex
---

Tajo 사전 이용 신청

이름과 회사 이메일 주소를 입력하세요. Tajo 이용 신청을 확인할 수 있는 링크를 이메일로 보내드립니다.

# OpenAI 커넥터

커넥터 상태: 예정 아직 구축되지 않았습니다. Tajo는 현재 이 커넥터를 실행하지 않습니다.

| 원본 필드 | 대상 필드 | 예시 값 |
| --- | --- | --- |
| `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 통합으로 캠페인 비주얼 생성

## 사전 요구 사항

시작하기 전에 다음이 준비되어 있는지 확인하십시오.

1. API 접근이 가능한 OpenAI 계정
2. [OpenAI 대시보드](https://platform.openai.com/api-keys)의 API 키
3. API 접근이 가능한 Brevo 계정
4. 커넥터 권한이 있는 Tajo 계정
5. 예상 사용량에 충분한 OpenAI API 크레딧

## 인증

### API 키 인증

OpenAI는 모든 API 요청에 Bearer 토큰 인증을 사용합니다.

```bash
# 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
```

```javascript
// 모든 요청에는 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 대시보드를 통해 키를 주기적으로 교체하십시오.

## 구성

### 기본 설정

```yaml
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
```

### 콘텐츠 생성 템플릿

```yaml
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/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 | 사용 가능한 모델 목록 |

## 코드 예제

### 커넥터 초기화

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

### 이메일 콘텐츠 생성

```javascript
// 맞춤형 이메일 제목 생성
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;
```

### 고객 감정 분석

```javascript
// 고객 피드백 감정 분석
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 }
});
```

### 임베딩을 사용한 스마트 세그먼테이션

```javascript
// 고객 클러스터링을 위한 임베딩 생성
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 낮추기 |

### 디버그 모드

```yaml
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 데이터 사용 정책 검토

## 관련 리소스

- [Brevo 커넥터](https://tajo.io/kr/docs/connectors/marketing/brevo)
- [고객 동기화 스킬](https://tajo.io/kr/docs/skills/data-sync/customer-sync)
- [이메일 마케팅 스킬](https://tajo.io/kr/docs/skills/email-marketing)
- [OpenAI API 레퍼런스](https://platform.openai.com/docs/api-reference)
