ChatGPT API — ChatGPT 웹에서 복사·붙여넣기하던 시대는 끝났습니다. API를 직접 연결하면 자동화·대량 처리·나만의 AI 서비스 구축이 가능합니다. Python 5줄로 시작하는 방법을 완전 정리합니다.
| 항목 | ChatGPT 웹 | OpenAI API |
|---|---|---|
| 사용 방법 | 브라우저에서 대화 | 프로그램으로 직접 호출 |
| 자동화 | 불가 | 가능 (대량·반복 처리) |
| 비용 | 월정액 ($20/month) | 사용량 기반 (토큰당 과금) |
| 커스터마이징 | 제한적 | 시스템 프롬프트, 파인튜닝 |
| 자체 서비스 통합 | 불가 | 가능 (챗봇, 앱, 웹서비스) |
platform.openai.com 접속 → 회원가입 또는 로그인보안 주의: API 키는 절대 GitHub에 올리거나 공개하지 마세요. 환경 변수(.env)에 저장하는 것이 기본입니다.
# 패키지 설치
pip install openai python-dotenv
# .env 파일 생성 (프로젝트 루트에)
OPENAI_API_KEY=sk-your-api-key-here 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) | 모델 | 성능 | 속도 | 비용 (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입니다.
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "당신은 친절한 한국어 번역 전문가입니다."},
{"role": "user", "content": "Please translate: 'Hello, world!'"}
]
) 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 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) 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) 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 | 컨텍스트 길이 초과 | 메시지 히스토리 줄이기 또는 긴 모델 사용 |
예금이자계산기에 원금, 연이율, 가입 기간과 과세 구분을 같은 조건으로 입력하세요. 단리와 복리, 기본금리와 우대금리를 나눠…
ISA계좌를 만들기 전에 연간·누적 납입한도, 손익통산 뒤 적용되는 비과세와 초과분 분리과세, 계좌 유형별 투자 가능…
비과세종합저축은 누구나 자동 가입하는 상품이 아닙니다. 신청일 기준 가입 대상과 필요한 증빙, 여러 금융기관의 기존…
예금자보호한도 1억원은 계좌마다 따로 적용되지 않습니다. 같은 금융회사 안의 보호 대상 예·적금 원금과 소정의 이자를…
ETF 괴리율을 판단할 때 확인할 괴리율 방향, 호가 스프레드, 거래량와 실행 순서를 정리했습니다. 실시간 값으로…
채권 듀레이션을 판단할 때 확인할 수정 듀레이션, 금리 변화 폭, 볼록성와 실행 순서를 정리했습니다. 듀레이션을…