OpenAI의 ChatGPT API(챗지피티 API)를 사용하여 대화를 생성하고, 토큰 사용량까지 확인하는 방법을 소개하고자 한다.
특히 이번 가이드는 OpenAI Python 라이브러리 v1.0.0 이상 버전에 맞춰 구성되었으며,
초보자도 따라 하기 쉽게 환경 설정부터 함수 작성, 응답 파싱, 토큰 추적까지 단계별로 설명하고자 한다.
사전 준비: API Key 설정하기
ChatGPT API를 사용하기 위해 우선 OpenAI에서 발급받은 API Key를 환경변수로 설정하는 것을 강력 추천한다..env
파일을 활용하면 민감 정보를 안전하게 관리할 수 있다.
ChatGPT를 사용하기 위한 API Key 발급 및 환경변수 설정 방법은 아래 가이드를 확인해 보자.
Python 예제 코드: 대화 생성부터 토큰 추적까지

다음으로, OpenAI API를 호출하여 대화를 생성하는 Python 코드를 작성해 보자.
import os
from decouple import config
from openai import OpenAI
# 환경 변수에서 API 키 로드
api_key = config('OPENAI_API_KEY')
# OpenAI 클라이언트 초기화
client = OpenAI(api_key=api_key)
# 예제 프롬프트로 대화 생성
def generate_dialogue(prompt, model="gpt-3.5-turbo-0125", max_tokens=150, temperature=0.7, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0):
response = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
],
model=model,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
frequency_penalty=frequency_penalty,
presence_penalty=presence_penalty,
)
return response
# 프롬프트 예제
prompt = "Create a dialogue between two Americans at a restaurant."
dialogue = generate_dialogue(prompt)
# 결과를 대화 형식으로 출력
for choice in dialogue.choices:
message_content = choice.message.content.strip()
messages = message_content.split('\n\n')
for message in messages:
print(message)
print("\n")
# 사용된 토큰 수 출력
total_tokens = dialogue.usage.total_tokens
print(f"Total tokens used: {total_tokens}")
주요 파라미터 설명
파라미터 | 설명 |
---|---|
model | 사용할 GPT 모델 이름 (gpt-3.5-turbo-0125 등) |
max_tokens | 응답의 최대 토큰 수 (기본 값은 150) |
temperature | 창의성 조절: 높을수록 다양성 ↑, 낮을수록 일관성 ↑ |
top_p | 확률 기반 샘플링 제한 (1.0은 제한 없음) |
frequency_penalty | 동일 단어 반복 억제 (기본 값은 0.0) |
presence_penalty | 새로운 주제 언급 유도 (기본 값은 0.0) |
- model: 사용할 모델의 이름을 지정한다. 기본값으로 “gpt-3.5-turbo-0125″를 사용할 예정이다.
- max_tokens: 생성할 응답의 최대 토큰 수를 지정한다. 기본값은 150이다.
- temperature: 샘플링의 다양성을 조절한다. 값이 높을수록 더 다양하고 창의적인 응답을 생성하며, 낮을수록 더 집중되고 일관된 응답을 생성한다. 기본값은 0.7이다.
- top_p: 확률적 샘플링 방법으로, 값이 낮을수록 더 높은 확률의 단어들을 선택한다. 기본값은 1.0이다.
- frequency_penalty: 특정 단어의 빈도를 줄이기 위한 패널티를 설정한다. 값이 높을수록 반복되는 단어의 사용 빈도가 낮아진다. 기본값은 0.0이다.
- presence_penalty: 새로운 단어를 사용하는 정도를 제어한다. 값이 높을수록 새로운 단어를 사용하는 빈도가 높아진다. 기본값은 0.0이다.
코드 요약 및 응용 팁
.env
와python-decouple
로 API 키를 안전하게 관리OpenAI()
객체로 API 호출을 간결하게 구성messages
필드에system
,user
역할을 명확히 구분- 응답의
.choices[].message.content
에서 대화 내용을 추출 .usage.total_tokens
로 토큰 사용량을 정확히 추적 가능
코드 분석
환경 변수 로드
python-decouple
라이브러리를 사용하여 .env
파일에서 API 키를 로드한다.
api_key = config('OPENAI_API_KEY')
OpenAI 클라이언트 초기화
OpenAI
클래스를 사용하여 클라이언트를 초기화한다.
client = OpenAI(api_key=api_key)
대화 생성 함수
generate_dialogue
함수는 프롬프트와 여러 파라미터를 받아 OpenAI API를 호출하고, 대화 응답을 반환한다.
def generate_dialogue(prompt, model="gpt-3.5-turbo-0125", max_tokens=150, temperature=0.7, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0): response = client.chat.completions.create( messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt} ], model=model, max_tokens=max_tokens, temperature=temperature, top_p=top_p, frequency_penalty=frequency_penalty, presence_penalty=presence_penalty, ) return response
대화 출력
생성된 대화를 대화 형식으로 출력한다.
for choice in dialogue.choices: message_content = choice.message.content.strip() messages = message_content.split('\n\n') for message in messages: print(message) print("\n")
토큰 사용량 출력
사용된 총 토큰 수를 출력한다.
total_tokens = dialogue.usage.total_tokens print(f"Total tokens used: {total_tokens}")

결론
이번 포스트에서는 OpenAI의 ChatGPT API를 사용하여 대화를 생성하는 방법을 설명해 보았다. 환경 변수 설정부터 대화 생성 코드 작성, 그리고 사용된 토큰 수를 출력하는 과정을 자세히 다루었으니, 이 포스트를 통해 쉽게 따라하여, ChatGPT API를 활용한 다양한 응용 프로그램 개발에 도움이 되기를 바란다.
더 알아보기: 대규모 호출용 ChatGPT Batch API 가이드
연속 대화 처리, 자동화된 수백 건의 요청 처리에 관심 있다면 아래 포스트도 참고해 보자
[ChatGPT Batch API 사용 완전 가이드 (코드 포함, 2025 업데이트)]