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"

요청 매개변수

간단한 텍스트 생성 요청을 구성하는 주요 매개변수는 다음과 같다:

간단한 텍스트 생성 예제

아래 코드는 간단한 텍스트를 생성하는 예제이다. 사용자가 질문을 하면, 시스템은 그에 대한 답변을 생성한다.

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": "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

messages

temperature

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

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의 기본적인 사용법과 텍스트 생성을 위한 다양한 옵션을 이해할 수 있다. 이러한 기본 개념을 바탕으로, 다양한 활용 사례에서 창의적인 텍스트를 생성할 수 있다.