ChatGPT 연동

CHAN·2024년 10월 21일

Python

목록 보기
3/3

Python으로 ChatGPT(또는 GPT-3 모델)를 연동하려면 OpenAI API를 사용해야 합니다. 이 API를 통해 GPT 모델을 호출하고 자연어 처리 기능을 사용할 수 있습니다. 아래는 Python을 사용하여 ChatGPT와 연동하는 방법에 대한 단계별 가이드입니다.

1. OpenAI API 키 발급

먼저, OpenAI API를 사용하려면 OpenAI 계정을 만들고 API 키를 발급받아야 합니다.

  1. OpenAI 공식 사이트에서 계정을 생성하세요.
  2. 로그인 후, API 키 페이지로 이동하여 새로운 API 키를 생성합니다.
  3. 생성된 API 키를 복사해 둡니다. 이 키는 API 호출 시 인증에 필요합니다.

2. Python 설치 및 환경 설정

Python이 설치되어 있지 않다면, 먼저 Python을 설치하세요. 이미 Python이 설치되어 있다면, openai 라이브러리를 설치하기만 하면 됩니다.

  1. Python 설치:
    Homebrew를 사용하여 Python을 설치할 수 있습니다.

    brew install python
  2. openai 라이브러리 설치:
    Python 환경에서 OpenAI API를 사용하기 위해서는 openai 패키지를 설치해야 합니다.

    pip install openai

3. Python 코드로 OpenAI API 사용하기

이제 OpenAI API를 호출하는 Python 코드를 작성해봅시다. 아래 예시는 chat-completion 엔드포인트를 사용하여 ChatGPT를 호출하는 예시입니다.

import openai

# OpenAI API 키 설정
openai.api_key = 'your-api-key-here'  # 발급받은 API 키를 입력하세요.

def chat_with_gpt(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",  # GPT-3.5-turbo 모델 사용
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},  # 시스템 메시지
            {"role": "user", "content": prompt}  # 사용자 입력 메시지
        ]
    )

    return response['choices'][0]['message']['content']  # ChatGPT 응답 반환

# 예시: 사용자 입력을 받아 GPT와 대화
user_input = input("사용자: ")
gpt_response = chat_with_gpt(user_input)
print(f"ChatGPT: {gpt_response}")

4. 코드 설명

  1. openai.api_key 설정: OpenAI API 키를 코드에서 설정하여 API를 사용할 수 있게 합니다.
  2. openai.ChatCompletion.create():
    • model: 사용할 GPT 모델을 지정합니다. 최신 모델인 gpt-3.5-turbo 또는 gpt-4 등을 사용할 수 있습니다.
    • messages: 대화 내역을 리스트 형식으로 전달합니다. 시스템 메시지(role: "system")와 사용자 메시지(role: "user")가 포함됩니다.
  3. 응답 처리: ChatGPT의 응답은 JSON 형식으로 반환되며, choices[0]['message']['content']에서 메시지 내용을 추출합니다.

5. 응답 형식

ChatGPT의 응답은 아래와 같은 형식으로 JSON 데이터를 반환합니다.

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1692041234,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Here is the response from ChatGPT."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 20,
    "total_tokens": 30
  }
}
  • choices: 모델의 응답은 choices 리스트에 포함되며, 첫 번째 응답을 선택하여 출력합니다.
  • usage: API 호출에서 사용된 토큰 수를 보여줍니다. prompt_tokens는 입력에 사용된 토큰 수, completion_tokens는 생성된 응답의 토큰 수를 의미합니다.

6. 에러 처리

OpenAI API 호출 시 발생할 수 있는 에러를 처리하기 위해 try-except 구문을 추가할 수 있습니다.

def chat_with_gpt(prompt):
    try:
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": prompt}
            ]
        )
        return response['choices'][0]['message']['content']
    except Exception as e:
        return f"에러 발생: {str(e)}"

7. 추가 기능

  • 대화 상태 유지: API 요청 시 이전 메시지 내역을 포함하여 대화의 맥락을 유지할 수 있습니다.

    conversation = [
        {"role": "system", "content": "You are a helpful assistant."}
    ]
    
    def chat_with_gpt(prompt):
        conversation.append({"role": "user", "content": prompt})
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=conversation
        )
        conversation.append(response['choices'][0]['message'])  # 응답을 대화 내역에 추가
        return response['choices'][0]['message']['content']
  • 모델 변경: gpt-3.5-turbo 대신 gpt-4와 같은 더 발전된 모델을 사용할 수 있습니다. 모델의 성능과 속도는 다를 수 있으니, 필요에 맞는 모델을 선택하세요.

8. 요금 및 토큰 관리

OpenAI API는 호출할 때마다 요금이 발생하며, 토큰 단위로 요금을 부과합니다. API 호출 시 사용된 토큰 수는 usage 필드에서 확인할 수 있습니다. 따라서 요금 관련 부분도 고려해야 합니다.

  • prompt_tokens: 사용자 입력에 사용된 토큰 수
  • completion_tokens: GPT 응답에 사용된 토큰 수
  • total_tokens: 총 토큰 수 (한 번의 호출에 사용된 총 토큰)

요약

  1. OpenAI API 키 발급: OpenAI 계정에서 API 키를 발급받습니다.
  2. Python 라이브러리 설치: pip install openai 명령어로 openai 패키지를 설치합니다.
  3. API 호출 코드 작성: Python 코드에서 OpenAI API 키를 설정하고 openai.ChatCompletion.create()를 사용하여 GPT 모델을 호출합니다.
  4. 에러 처리 및 대화 관리: 에러 처리를 추가하고 대화 상태를 유지하여 더 나은 사용자 경험을 제공합니다.

이 과정을 통해 Python으로 ChatGPT 모델을 연동할 수 있습니다. 추가적인 질문이 있으면 언제든지 알려주세요!

profile
프로그래머

0개의 댓글