ChatGPT API를 사용하여 간단한 텍스트를 생성하는 방법을 살펴보겠다. 이 예제는 API의 기본 구조와 사용법을 이해하는 데 중점을 둔다.
API 호출 기본 구조
ChatGPT API를 통해 텍스트를 생성하려면 API 호출을 해야 한다. API 호출은 주로 HTTP POST 요청으로 이루어지며, 요청 본문에 필요한 매개변수와 데이터를 JSON 형식으로 포함한다. 기본적인 호출 구조는 다음과 같다:
import openai
openai.api_key = "YOUR_API_KEY"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Can you generate some text for me?"}
]
)
print(response['choices'][0]['message']['content'])
OpenAI 라이브러리 설치 및 설정
이 예제를 실행하기 전에 OpenAI Python 라이브러리를 설치해야 한다. 설치는 pip 명령어를 통해 간단히 할 수 있다.
pip install openai
설치가 완료되면 API 키를 설정해야 한다. API 키는 OpenAI에서 발급받을 수 있으며, 이를 코드에 추가하여 API 호출 시 사용할 수 있다.
openai.api_key = "YOUR_API_KEY"
요청 매개변수
간단한 텍스트 생성 요청을 구성하는 주요 매개변수는 다음과 같다:
- model: 사용할 언어 모델을 지정한다. 예를 들어,
gpt-4
또는gpt-3.5-turbo
를 선택할 수 있다. - messages: 대화형 텍스트를 정의하는 JSON 배열이다. 이 배열에는 사용자와 시스템의 역할을 구분하여 메시지를 추가할 수 있다.
간단한 텍스트 생성 예제
아래 코드는 간단한 텍스트를 생성하는 예제이다. 사용자가 질문을 하면, 시스템은 그에 대한 답변을 생성한다.
import openai
openai.api_key = "YOUR_API_KEY"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a short poem about the sea."}
]
)
generated_text = response['choices'][0]['message']['content']
print(generated_text)
위 코드에서는 사용자가 "Write a short poem about the sea."라고 요청했고, API는 이에 대해 짧은 시를 생성하여 반환한다. 응답 데이터에서 텍스트는 choices[0]['message']['content']
에 저장된다.
응답 데이터 구조
API의 응답 데이터는 JSON 형식으로 제공되며, 생성된 텍스트와 함께 다양한 메타데이터를 포함한다. 주요 구성 요소는 다음과 같다:
- id: 요청에 대한 고유 식별자
- object: 응답의 객체 유형 (이 경우 "chat.completion")
- created: 응답 생성 시간 (Unix 시간)
- choices: 생성된 텍스트 및 관련 정보가 포함된 배열
- usage: API 호출에 사용된 토큰 수
예를 들어, 위 코드의 응답 데이터를 살펴보면 다음과 같이 구성될 수 있다:
{
"id": "chatcmpl-7aHs93kP...",
"object": "chat.completion",
"created": 1694004852,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The sea whispers tales untold..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 10,
"total_tokens": 22
}
}
요청 파라미터의 이해
텍스트 생성을 위한 요청 파라미터는 다양한 옵션을 제공하여 결과를 조정할 수 있다. 주요 파라미터는 다음과 같다.
model
- 사용할 모델을 지정한다. 예:
gpt-4
,gpt-3.5-turbo
.
messages
- 대화 내역을 배열로 전달하며, 각각의 항목은 다음과 같은 형식을 갖는다:
- role: 발신자의 역할을 정의한다 (
system
,user
,assistant
). - content: 발신자의 메시지 내용을 포함한다.
temperature
- 텍스트 생성에서의 창의성을 조절한다. 값의 범위는 0에서 1 사이이며, 낮은 값은 더 보수적인 출력을, 높은 값은 더 다양한 출력을 생성한다.
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a creative assistant."},
{"role": "user", "content": "Generate a creative story about a space adventure."}
],
temperature=0.8
)
max_tokens
- 생성할 텍스트의 최대 토큰 수를 지정한다. 이 값을 통해 응답의 길이를 제어할 수 있다.
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": "Give me a summary of the history of AI."}
],
max_tokens=50
)
top_p
- nucleus sampling을 사용하여 텍스트 생성을 조절한다. top_p는 0에서 1 사이의 값을 가지며, 1에 가까울수록 더 다양한 출력을 생성한다.
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": "Write a suspenseful plot for a mystery novel."}
],
top_p=0.9
)
n
- 한 번의 호출로 생성할 응답 개수를 지정한다. 여러 개의 응답을 생성하여 비교하거나 선택할 수 있다.
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": "Suggest a few taglines for a new tech product."}
],
n=3
)
응답 데이터 처리 및 파싱
응답 데이터를 처리하고 필요한 정보를 추출하는 방법은 매우 중요하다. API의 응답은 choices
배열 안에 생성된 텍스트를 포함하고 있으며, 일반적으로 첫 번째 응답 (choices[0]
)을 사용한다.
기본 응답 처리
생성된 텍스트를 간단히 출력하는 예시는 다음과 같다:
generated_text = response['choices'][0]['message']['content']
print(generated_text)
다중 응답 처리
여러 개의 응답을 요청한 경우, 각 응답을 순회하여 처리할 수 있다:
for i, choice in enumerate(response['choices']):
print(f"Option {i + 1}: {choice['message']['content']}\n")
예제 확장: 텍스트 변환
기본적인 텍스트 생성 외에도 ChatGPT API를 사용하여 입력된 텍스트를 변환하는 다양한 작업을 수행할 수 있다. 예를 들어, 간단한 텍스트를 시나 에세이 형식으로 변환하거나, 특정 스타일로 다시 작성하는 것이 가능한다.
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a professional editor."},
{"role": "user", "content": "Rewrite the following text in a more formal style: 'Hey, can you send me that report?'."}
]
)
print(response['choices'][0]['message']['content'])
이 예제에서는 비격식적인 요청을 보다 형식적인 문장으로 변환하는 결과를 얻을 수 있다.
코드 동작 방식 요약
위에서 다룬 예제와 파라미터들을 통해 ChatGPT API의 기본적인 사용법과 텍스트 생성을 위한 다양한 옵션을 이해할 수 있다. 이러한 기본 개념을 바탕으로, 다양한 활용 사례에서 창의적인 텍스트를 생성할 수 있다.