LLM 25일 코스 - Day 7: OpenAI GPT 시리즈

Day 7: OpenAI GPT 시리즈

OpenAI의 GPT 시리즈는 LLM 시대를 연 주역입니다. ChatGPT의 등장으로 일반 대중에게 AI가 알려졌고, API를 통해 개발자들이 가장 많이 사용하는 모델이기도 합니다.

OpenAI 모델 선택 가이드 (2026-04 기준)

모델군추천 상황메모
GPT-5 계열복잡한 추론, 에이전트형 워크플로정확도 우선, Responses API 권장
GPT-4.1 계열범용 텍스트/코딩, 품질-비용 균형일반 백엔드 API 기본 선택지
GPT-4o / GPT-4o mini멀티모달(텍스트+이미지+음성), 저지연실시간/인터랙티브 시나리오에 유리

가격과 지원 모델은 자주 바뀌므로 고정 표를 외우기보다 공식 페이지를 항상 먼저 확인하세요.

  • API 가격: https://platform.openai.com/pricing
  • 모델 문서: https://developers.openai.com/api/docs/models

Responses API 기본 사용법 (권장)

# pip install openai
from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY")  # 환경변수 권장

# 기본 텍스트 생성 (Responses API)
response = client.responses.create(
    model="gpt-4.1-mini",
    input=[
        {"role": "system", "content": "당신은 친절한 AI 튜터입니다."},
        {"role": "user", "content": "Transformer가 뭔가요? 간단히 설명해주세요."},
    ],
    temperature=0.7,     # 창의성 조절 (0=결정적, 2=매우 랜덤)
    max_output_tokens=500,
)

print(response.output_text)
print(f"사용 토큰: 입력={response.usage.input_tokens}, "
      f"출력={response.usage.output_tokens}")

스트리밍 응답 처리 (Chat Completions 호환 예시)

from openai import OpenAI

client = OpenAI()

# 스트리밍: 토큰이 생성될 때마다 바로 출력
stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Python의 장점 3가지를 알려주세요."},
    ],
    stream=True,  # 스트리밍 활성화
)

full_response = ""
for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)
        full_response += content

print(f"\n\n총 응답 길이: {len(full_response)}자")

멀티턴 대화와 시스템 프롬프트 (Chat Completions 호환 예시)

from openai import OpenAI

client = OpenAI()

conversation = [
    {"role": "system", "content": "당신은 파이썬 전문가입니다. 코드 예제를 포함하여 답해주세요."},
]

def chat(user_message):
    conversation.append({"role": "user", "content": user_message})

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=conversation,
        temperature=0.3,
    )

    assistant_message = response.choices[0].message.content
    conversation.append({"role": "assistant", "content": assistant_message})
    return assistant_message

# 멀티턴 대화
print(chat("리스트 컴프리헨션이 뭔가요?"))
print("---")
print(chat("그걸 딕셔너리에도 쓸 수 있나요?"))
# 이전 대화 맥락을 기억하고 답변

실무 팁

상황추천 모델이유
간단한 분류, 추출경량 모델(예: 4o mini급)빠르고 저렴
복잡한 추론, 분석상위 추론 모델(예: GPT-5/4.1 상위)정확도 우선
프로토타이핑경량 모델비용 절감
이미지 분석멀티모달 모델이미지 입력 처리
대량 배치 처리경량 모델 + Batch API비용 효율

temperature 설정 가이드: 분류/추출은 0, 일반 대화는 0.7, 창작은 1.0~1.5

오늘의 연습문제

  1. OpenAI API 키를 발급받고, 경량 모델 하나를 골라 “한국의 수도는?”이라는 질문을 보내보세요. 사용된 토큰 수와 예상 비용을 계산하세요.
  2. 같은 질문을 temperature 0, 0.7, 1.5로 각각 5번씩 보내고 응답의 다양성을 비교해보세요.
  3. 멀티턴 대화에서 대화가 길어지면 토큰 비용이 어떻게 증가하는지 계산해보세요. 대화가 50턴이 되면 어떤 문제가 생길까요?

이 글이 도움이 되었나요?