ChatGPT API — ChatGPT 웹에서 복사·붙여넣기하던 시대는 끝났습니다. API를 직접 연결하면 자동화·대량 처리·나만의 AI 서비스 구축이 가능합니다. Python 5줄로 시작하는 방법을 완전 정리합니다.
ChatGPT API란 — 웹 vs API 차이
| 항목 | ChatGPT 웹 | OpenAI API |
|---|---|---|
| 사용 방법 | 브라우저에서 대화 | 프로그램으로 직접 호출 |
| 자동화 | 불가 | 가능 (대량·반복 처리) |
| 비용 | 월정액 ($20/month) | 사용량 기반 (토큰당 과금) |
| 커스터마이징 | 제한적 | 시스템 프롬프트, 파인튜닝 |
| 자체 서비스 통합 | 불가 | 가능 (챗봇, 앱, 웹서비스) |
STEP 1. OpenAI API 키 발급
platform.openai.com접속 → 회원가입 또는 로그인- 우측 상단 프로필 → API keys 클릭
- Create new secret key → 키 이름 입력 → Create secret key
- 생성된 키를 복사해 안전한 곳에 저장 (다시 볼 수 없음)
- 결제 수단 등록: Settings → Billing → Add payment method
보안 주의: API 키는 절대 GitHub에 올리거나 공개하지 마세요. 환경 변수(.env)에 저장하는 것이 기본입니다.
STEP 2. Python 환경 설정
# 패키지 설치
pip install openai python-dotenv
# .env 파일 생성 (프로젝트 루트에)
OPENAI_API_KEY=sk-your-api-key-here
STEP 3. 첫 번째 API 호출 — 5줄 코드
from openai import OpenAI
client = OpenAI() # OPENAI_API_KEY 환경 변수 자동 읽기
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "안녕하세요! 간단히 소개해 주세요."}]
)
print(response.choices[0].message.content)
모델 선택 가이드 — gpt-4o vs gpt-4o-mini
| 모델 | 성능 | 속도 | 비용 (1M 토큰) | 추천 용도 |
|---|---|---|---|---|
| gpt-4o | 최고 | 빠름 | 입력 $2.50 / 출력 $10 | 복잡한 분석·창작 |
| gpt-4o-mini | 우수 | 매우 빠름 | 입력 $0.15 / 출력 $0.60 | 대량 처리·챗봇 |
| o1-mini | 추론 특화 | 느림 | 입력 $3 / 출력 $12 | 수학·코딩·논리 |
대부분의 용도는 gpt-4o-mini로 충분합니다. gpt-4o 대비 성능은 85% 수준이지만 비용은 1/15입니다.
실전 예제 — 자주 쓰는 패턴 5가지
예제 1. 시스템 프롬프트로 역할 고정
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "당신은 친절한 한국어 번역 전문가입니다."},
{"role": "user", "content": "Please translate: 'Hello, world!'"}
]
)
예제 2. 대화 히스토리 유지
history = [{"role": "system", "content": "당신은 유용한 어시스턴트입니다."}]
def chat(user_message):
history.append({"role": "user", "content": user_message})
response = client.chat.completions.create(model="gpt-4o-mini", messages=history)
assistant_message = response.choices[0].message.content
history.append({"role": "assistant", "content": assistant_message})
return assistant_message
예제 3. 스트리밍 출력 (타이핑 효과)
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "긴 글을 써 주세요."}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
예제 4. JSON 구조화 출력
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "사과 효능 3가지를 JSON으로: [{"효능": ..., "근거": ...}]"}],
response_format={"type": "json_object"}
)
import json
data = json.loads(response.choices[0].message.content)
예제 5. 토큰 사용량 확인
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "안녕하세요"}]
)
usage = response.usage
print(f"입력: {usage.prompt_tokens}, 출력: {usage.completion_tokens}, 합계: {usage.total_tokens}")
비용 계산 방법
토큰은 대략 한글 기준 1.5~2자에 1토큰, 영어는 4글자에 1토큰입니다.
| 작업 | 대략 토큰 수 | gpt-4o-mini 비용 |
|---|---|---|
| 짧은 질문 + 답변 | 200토큰 | 약 $0.0001 (0.14원) |
| 블로그 글 1편 (2000자) | 3000~4000토큰 | 약 $0.002 (2.8원) |
| 하루 100개 처리 | 30만~40만 토큰 | 약 $0.2 (280원) |
자주 발생하는 오류 해결
| 오류 | 원인 | 해결 |
|---|---|---|
| AuthenticationError | API 키 오류 | 키 재발급 또는 환경변수 확인 |
| RateLimitError | 분당 요청 초과 | time.sleep(1) 후 재시도, 또는 티어 업그레이드 |
| InsufficientQuotaError | 크레딧 부족 | Billing에서 결제 수단 추가·충전 |
| BadRequestError | 컨텍스트 길이 초과 | 메시지 히스토리 줄이기 또는 긴 모델 사용 |
답글 남기기