이번 포스트에서는 OpenAI의 ChatGPT API를 사용하여 대화를 생성하는 방법을 소개하고자 한다. 이 포스트는 Python을 사용하여 ChatGPT API Key를 환경 변수를 설정하고, OpenAI API를 호출하여 대화를 생성하며, 사용된 토큰 수를 출력하는 과정을 단계별로 쉽게 따라할 수 있도록 자세한 설명과 코드 분석을 제공하여 설명할 예정이다.
또한 openai 라이브러리 1.0.0 버전 이상에서는 API 호출하는 코드가 변경되었으니 이번 포스트 내용을 참고하면 좋을 것이다.
단계 1: 사전 준비
ChatGPT를 사용하기 위한 API Key 생성 및 환경변수 설정 방법은 아래 포스트를 확인해 보자.
단계 2: OpenAI API 호출 코드 작성
다음으로, 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}")
단계 3: 코드 분석 및 파라미터 설명
코드 분석
환경 변수 로드
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}")
파라미터 설명
- model: 사용할 모델의 이름을 지정한다. 기본값으로 “gpt-3.5-turbo-0125″를 사용할 예정이다.
- max_tokens: 생성할 응답의 최대 토큰 수를 지정한다. 기본값은 150이다.
- temperature: 샘플링의 다양성을 조절한다. 값이 높을수록 더 다양하고 창의적인 응답을 생성하며, 낮을수록 더 집중되고 일관된 응답을 생성한다. 기본값은 0.7이다.
- top_p: 확률적 샘플링 방법으로, 값이 낮을수록 더 높은 확률의 단어들을 선택한다. 기본값은 1.0이다.
- frequency_penalty: 특정 단어의 빈도를 줄이기 위한 패널티를 설정한다. 값이 높을수록 반복되는 단어의 사용 빈도가 낮아진다. 기본값은 0.0이다.
- presence_penalty: 새로운 단어를 사용하는 정도를 제어한다. 값이 높을수록 새로운 단어를 사용하는 빈도가 높아진다. 기본값은 0.0이다.
결론
이번 포스트에서는 OpenAI의 ChatGPT API를 사용하여 대화를 생성하는 방법을 설명해 보았다. 환경 변수 설정부터 대화 생성 코드 작성, 그리고 사용된 토큰 수를 출력하는 과정을 자세히 다루었으니, 이 포스트를 통해 쉽게 따라하여, ChatGPT API를 활용한 다양한 응용 프로그램 개발에 도움이 되기를 바란다.