python OpenAI API 코드(예제, 실시간 Stream 포함)

python open ai api code

 

 

파이썬으로 OpenAI API 마스터하기: ChatGPT를 내 프로젝트에 통합하는 방법 (실전 코드 포함)

안녕하세요! 오늘은 많은 분들이 관심을 가지고 계시는 OpenAI API, 특히 ChatGPT와 같은 강력한 언어 모델을 파이썬으로 어떻게 활용할 수 있는지 알아보겠습니다. OpenAI API를 사용하면 챗봇, 콘텐츠 생성, 코드 생성, 번역 등 무궁무진한 애플리케이션을 개발할 수 있습니다.

 

이 글에서는 API 키 설정부터 시작하여, 기본적인 API 호출 방법, 스트리밍 응답 처리, 그리고 실제 활용 사례에서 영감을 받은 몇 가지 유용한 함수 예제까지 단계별로 안내해 드립니다.

LLM API 비용 비교가 필요하신분은 아래글

LLM API 비용 총정리 2025년 3월 정보 (ChatGPT, Claude, Gemini, Deepseek 등)

0. 왜 OpenAI API를 사용할까요?

  • 강력한 언어 모델: GPT-4 업계 1등 갓 근본의 Open AI 최첨단 모델 접근 가능
  • 다양한 기능: 텍스트 생성, 요약, 번역, 코드 작성, 질의응답 등
  • 쉬운 통합: Python 라이브러리를 통해 몇 줄의 코드로 간편하게 연동
  • 확장성: 아이디어를 빠르게 프로토타이핑하고 실제 서비스로 확장 가능

1. 준비물

가장 먼저 OpenAI API를 사용하기 위해 필요한 것들을 준비해야 합니다.

  • OpenAI API 키 발급:
    • OpenAI 웹사이트에 가입하고 로그인합니다.
    • API 섹션으로 이동하여 API 키를 생성합니다. (API Keys 메뉴)
    • 주의: 이 API 키는 비밀번호처럼 안전하게 보관해야 합니다! 외부에 노출되지 않도록 주의하세요. 환경 변수나 별도의 설정 파일에 저장하는 것을 권장합니다.

python open ai api code

사이트에서 예시 코드도 제공해줌. 사용할 수 있는 model명도 포함되어있구요

 

  • openai 파이썬 라이브러리 설치:
    터미널이나 명령 프롬프트에서 다음 명령어를 실행하여 라이브러리를 설치합니다.
    pip install openai

2. OpenAI API 기본 사용법: Chat Completions

가장 널리 사용되는 기능은 “Chat Completions” API입니다. 이를 통해 모델과 대화 형식으로 상호작용할 수 있습니다.

기본 구조:

from openai import OpenAI

# 1. API 키 설정 (환경 변수 사용 권장)
# import os
# client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# 또는 직접 입력 (보안에 유의)
client = OpenAI(api_key="여러분의_API_키를_여기에_입력하세요")

# 2. API 호출
try:
    response = client.chat.completions.create(
        model="gpt-4o-mini",  # 사용할 모델 선택 (예: "gpt-4", "gpt-3.5-turbo")
        messages=[
            {"role": "system", "content": "당신은 유머러스한 챗봇입니다."},
            {"role": "user", "content": "오늘 날씨 어때?"}
        ]
    )
    # 3. 응답 확인
    answer = response.choices[0].message.content
    print(answer)

except Exception as e:
    print(f"API 호출 중 오류 발생: {e}")

핵심 매개변수 설명:

  • model: 사용할 모델의 ID입니다. (예: gpt-4o-mini, gpt-4, gpt-3.5-turbo)
  • messages: 대화 내용을 리스트 형태로 전달합니다. 각 메시지는 딕셔너리 형태이며, rolecontent를 가집니다.
    • role:
      • system: 모델의 역할이나 전반적인 지침을 설정합니다. (예: “당신은 친절한 AI 비서입니다.”)
      • user: 사용자의 입력을 나타냅니다.
      • assistant: 모델의 이전 응답을 나타냅니다. (대화의 맥락을 유지하기 위해 사용)
    • content: 해당 역할의 메시지 내용입니다.
  • response.choices[0].message.content: 모델이 생성한 답변 텍스트입니다.

3. 실시간 응답 처리: 스트리밍(Streaming)

모델이 긴 텍스트를 생성할 때, 전체 응답을 한 번에 기다리는 대신 부분적으로 생성되는 내용을 실시간으로 받아보고 싶을 수 있습니다. 이때 stream=True 옵션을 사용합니다.

제공해주신 참고 코드의 process_stream 함수는 스트리밍 처리를 위한 훌륭한 예시입니다.

import time # 예외 발생 시 재시도를 위해 사용
from openai import OpenAI

# 1. API 키 설정 (환경 변수 사용 권장)
# import os
# client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# 또는 직접 입력 (보안에 유의)
client = OpenAI(api_key="여러분의_API_키를_여기에_입력하세요")
# 스트리밍 응답을 처리하는 함수
def process_stream(stream):
    collected_text = ""
    for chunk in stream:
        delta = chunk.choices[0].delta
        if delta.content:
            print(delta.content, end="", flush=True) # 실시간으로 출력
            collected_text += delta.content
    print() # 마지막에 줄바꿈
    return collected_text

# API 호출 시 stream=True 설정
try:
    stream_response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": "당신은 시를 쓰는 음유시인입니다."},
            {"role": "user", "content": "봄에 대한 짧은 시를 써줘."}
        ],
        stream=True  # 스트리밍 활성화
    )

    generated_poem = process_stream(stream_response)
    print("\n--- 전체 생성된 시 ---")
    print(generated_poem)

except Exception as e:
    print(f"API 호출 중 오류 발생: {e}")

stream=True로 설정하면, client.chat.completions.create는 응답 객체 대신 스트림 객체를 반환합니다. 이 스트림 객체를 반복하면서 chunk를 받아 처리할 수 있습니다. 각 chunkchoices[0].delta.content에 부분적으로 생성된 텍스트가 담겨 있습니다.

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다