파이썬으로 OpenAI API를 사용하여 자신만의 AI 도구 만들기

OpenAI가 이제 GPT-4 Turbo까지 모델을 지원하고 있으므로, Python 개발자들은 고급 AI 기능을 탐색할 수 있는 놀라운 기회를 얻게 되었습니다. 이 튜토리얼에서는 ChatGPT API를 Python 스크립트에 통합하는 방법에 대해 심층적으로 살펴보고, 초기 설정 단계부터 효과적인 API 사용까지 안내합니다.

ChatGPT API는 개발자들이 GPT 모델을 사용하여 대화 응답을 생성하는 데 사용할 수 있는 프로그래밍 인터페이스를 나타냅니다. 하지만 실제로는 모든 모델에 적용되는 OpenAI의 보편적인 API입니다.

GPT-4 Turbo가 더 고급이며 GPT-4보다 세 배 저렴하기 때문에, Python에서 이 강력한 API를 활용할 수 있는 최적의 시기가 왔습니다. 이제 시작하겠습니다!

Table of Contents

환경 설정하기

먼저, 파이썬에서 OpenAI API와 함께 작업할 수 있는 환경을 설정하는 방법을 안내해 드리겠습니다. 초기 단계에는 필요한 라이브러리 설치, API 접근 설정, API 키 및 인증 처리가 포함됩니다.

필수 파이썬 라이브러리 설치

시작하기 전에 시스템에 파이썬이 설치되어 있는지 확인하세요. 모든 것을 체계적으로 유지하기 위해 가상 환경을 사용하는 것이 좋습니다. 다음 명령어로 가상 환경을 생성할 수 있습니다:

python -m venv chatgpt_env

가상 환경을 활성화하려면 실행하세요:

  • chatgpt_env\Scripts\activate (Windows)
  • source chatgpt_env/bin/activate (macOS 또는 Linux)

다음으로, OpenAI API와 상호 작용하기 위한 OpenAI 파이썬 클라이언트 라이브러리와 구성을 처리하기 위한 python-dotenv 패키지를 포함한 필수 파이썬 라이브러리를 설치해야 합니다. 두 패키지를 설치하려면 다음 명령어를 실행하세요:

pip install openai python-dotenv

OpenAI API 접근 설정

OpenAI API 요청을 보내려면 먼저 OpenAI 플랫폼에 가입하고 고유한 API 키를 생성해야 합니다. 다음 단계를 따르세요:

  1. OpenAI의 API 키 페이지를 방문하여 새 계정을 만들거나 기존 계정으로 로그인하세요.
  2. 로그인한 후 API 키 섹션으로 이동하여 새 비밀 키 생성을 클릭하세요.
  3. 생성된 API 키를 복사하여 나중에 사용할 수 있도록 해야 합니다. 만약 잃어버리게 된다면, 새로운 API 키를 생성해야 합니다. OpenAI 웹사이트를 통해 API 키를 확인할 수 없습니다.

OpenAI의 API 키 페이지

현재 사용할 수 있는 생성된 API 키

API 키 및 인증

API 키를 받은 후, 보안을 위해 환경 변수로 저장하는 것을 권장합니다. 환경 변수를 관리하려면 python-dotenv 패키지를 사용하십시오. API 키를 포함한 환경 변수를 설정하려면 다음 단계를 따르십시오:

  1. 프로젝트 디렉토리에 .env라는 이름의 파일을 생성하세요.

  2. .env 파일에 다음 줄을 추가하고, 이전에 복사한 실제 API 키로 your_api_key를 대체하세요: CHAT_GPT_API_KEY=your_api_key.

  3. Python 코드에서 python-dotenv 패키지의 load_dotenv 함수를 사용하여 .env 파일에서 API 키를 로드하세요:

  import openai
  from openai import OpenAI
  import os
  from dotenv import load_dotenv

  # .env 파일에서 API 키 로드
  load_dotenv()
  client = OpenAI(api_key=os.environ.get("CHAT_GPT_API_KEY"))

참고: 최신 버전의 OpenAI Python 라이브러리에서는 아래와 같이 API 호출을 위해 OpenAI 클라이언트를 인스턴스화해야 합니다. 이는 이전 버전에서의 사용 방식과 달라졌으며, 이전에는 글로벌 메서드를 직접 사용했습니다.

이제 API 키를 추가하고 환경을 설정하여 Python에서 OpenAI API를 사용할 준비가 완료되었습니다. 이 문서의 다음 섹션에서는 이 강력한 도구를 사용하여 API와 상호 작용하고 채팅 앱을 구축하는 방법을 살펴볼 것입니다.

위의 코드 스니펫을 아래의 모든 코드 섹션에 추가한 후 실행하십시오.

Python에서 OpenAI API 사용

API를 .env 파일에서 로드한 후 Python 내에서 실제로 사용할 수 있습니다. Python에서 OpenAI API를 사용하려면 클라이언트 객체를 사용하여 API 호출을 할 수 있습니다. 그런 다음 일련의 메시지를 API에 입력으로 전달하고 모델에서 생성된 메시지를 출력으로 받을 수 있습니다.

간단한 ChatGPT 요청 생성

  1. 이전 단계를 완료했는지 확인하세요: 가상 환경 생성, 필요한 라이브러리 설치, 프로젝트 디렉토리에 OpenAI 비밀 키 및 .env 파일 생성.

  2. 간단한 ChatGPT 요청을 설정하기 위해 다음 코드 스니펫을 사용하세요:

  # 채팅 완성 생성
  chat_completion = client.chat.completions.create(
      model="gpt-4",
      messages=[{"role": "user", "content": "query"}]
  )
  print(chat_completion.choices[0].message.content)

여기서 client.chat.completions.createclient 객체의 메소드 호출입니다. chat 속성은 API의 채팅 전용 기능에 접근하고, completions.create는 입력에 기반하여 AI 모델이 응답 또는 완성을 생성하도록 요청하는 메소드입니다.

query를 실행하고자 하는 프롬프트로 대체하고, GPT-4 대신 지원되는 모든 GPT 모델을 사용하실 수 있습니다.

에러 처리

요청을 보내는 동안 네트워크 연결 문제, 레이트 제한 초과, 또는 기타 비정상적인 응답 상태 코드와 같은 다양한 문제가 발생할 수 있습니다. 따라서 이러한 상태 코드를 적절하게 처리하는 것이 중요합니다. 프로그램 흐름을 유지하고 더 나은 에러 처리를 위해 Python의 tryexcept 블록을 사용할 수 있습니다:

# 채팅 완성을 시도해보세요
try:
    chat_completion = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": "query"}],
        temperature=1,
        max_tokens=150  # 필요에 따라 토큰 수 조정
    )
    print(chat_completion.choices[0].message.content)

except openai.APIConnectionError as e:
    print("The server could not be reached")
    print(e.__cause__)

except openai.RateLimitError as e:
    print("A 429 status code was received; we should back off a bit.")

except openai.APIStatusError as e:
    print("Another non-200-range status code was received")
    print(e.status_code)
    print(e.response)

참고: OpenAI API의 어떤 모델을 사용하려면 사용 가능한 신용 대출이 필요합니다. 계정 생성 후 3개월이 지난 경우, 무료 신용 대출이 만료되었을 가능성이 높으며, 추가 크레딧을 구입해야 합니다 ($5 이상).

이제 API 요청을 추가로 구성하는 몇 가지 방법을 알아보겠습니다:

  • 최대 토큰 수. max_tokens 매개변수를 설정하여 필요에 따라 최대 출력 길이를 제한할 수 있습니다. 이는 비용 절감 조치일 수 있지만, 제한을 넘어서는 생성된 텍스트를 자르는 것이라는 점에 유의하세요.
  • 온도. 온도 매개변수를 조정하여 무작위성을 제어합니다. (높은 값은 응답을 더 다양하게 만들고, 낮은 값은 더 일관된 답변을 생성합니다.)

매개변수를 수동으로 설정하지 않으면 각각의 모델 기본값이 사용됩니다. 예를 들어 GPT-3.5-turbo는 0-7, GPT-4는 1입니다.

위의 매개변수 외에도 GPT의 기능을 원하는 대로 활용하기 위해 다양한 다른 매개변수와 구성을 할 수 있습니다. OpenAI의 API 문서를 참조하기 위해 연구하는 것이 좋습니다.

그럼에도 불구하고 어떤 매개변수 구성을 한 것과 상관없이 효과적이고 컨텍스트에 맞는 프롬프트가 여전히 필요합니다.

API 통합의 고급 기술

이 섹션에서는 OpenAI API를 파이썬 프로젝트에 고급 기술을 사용하여 통합하는 방법을 살펴보겠습니다. 자동화 작업, 파이썬 요청을 사용한 데이터 검색 및 대규모 API 요청 관리에 중점을 두고 있습니다.

OpenAI API를 사용한 작업 자동화

파이썬 프로젝트를 보다 효율적으로 만들기 위해 OpenAI API를 사용하여 다양한 작업을 자동화할 수 있습니다. 예를 들어, 이메일 응답, 고객 지원 답변 또는 콘텐츠 생성을 자동화하고 싶을 수 있습니다.

다음은 OpenAI API를 사용하여 작업을 자동화하는 방법의 예입니다.

def automated_task(prompt):
    try:
        chat_completion = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}],
            max_tokens=250
        )
        return chat_completion.choices[0].message.content
    except Exception as e:
        return str(e)

# 예제 사용
generated_text = automated_task("Write an short note that's less than 50 words to the development team asking for an update on the current status of the software update")
print(generated_text)

이 함수는 프롬프트를 입력으로 받아 생성된 텍스트를 출력으로 반환합니다.

Python 요청을 사용한 데이터 검색

인기 있는 requests 라이브러리를 사용하여 OpenAI API와 직접 상호 작용할 수 있으며, OpenAI 라이브러리에 의존하지 않아도 됩니다. 이 방법은 get 요청을 더 잘 제어하고 API 호출에 대한 유연성을 제공합니다.

다음 예제는 requests 라이브러리를 필요로 합니다(가지고 있지 않다면 pip install requests를 먼저 실행하세요).

headers = {
    'Content-Type': 'application/json',
    'Authorization': f'Bearer {api_key}',
}

data = {
    'model': 'gpt-4',  # 원하는 모델로 업데이트
    'messages': [{'role': 'user', 'content': 'Write an interesting fact about Christmas.'}]
}

response = requests.post('https://api.openai.com/v1/chat/completions', headers=headers, json=data)
print(response.json())

이 코드 스니펫은 헤더와 데이터를 인수로 사용하여 OpenAI API에 POST 요청을 보내는 방법을 보여줍니다. JSON 응답은 파싱되어 파이썬 프로젝트에서 사용할 수 있습니다.

대규모 API 요청 관리

대규모 프로젝트를 다룰 때, API 요청을 효율적으로 관리하는 것이 중요합니다. 배치(batching), 제한(throttling), 캐싱(caching)과 같은 기법을 통해 이를 달성할 수 있습니다.

  • 배치(Batching). 여러 요청을 단일 API 호출로 결합하여 사용하며, OpenAI 라이브러리에서 n 매개변수를 사용합니다: n = 필요한_응답_수.
  • 제한(Throttling). API 호출 속도를 제한하는 시스템을 구현하여 과도한 사용이나 API 과부하를 방지합니다.
  • 캐싱(Caching). 완료된 API 요청의 결과를 저장하여 유사한 프롬프트나 요청에 대한 중복 호출을 피합니다.

API 요청을 효과적으로 관리하려면 사용량을 추적하고 설정을 적절하게 조정하세요. 필요한 경우 time 라이브러리를 사용하여 요청 사이에 지연 시간이나 타임아웃을 추가할 수 있습니다.

이러한 고급 기법을 Python 프로젝트에 적용하면 OpenAI API를 최대한 활용하면서도 효율적이고 확장 가능한 API 통합을 보장할 수 있습니다.

실제 응용: 실제 프로젝트에서의 OpenAI API

OpenAI API를 실제 프로젝트에 통합하면 많은 이점을 제공할 수 있습니다. 이 섹션에서는 웹 개발에서 ChatGPT 통합 및 ChatGPT와 Python을 사용하여 챗봇 구축의 두 가지 구체적인 응용 사례를 논의합니다.

웹 개발에서 ChatGPT 통합

OpenAI API를 사용하면 사용자의 질문이나 요구에 맞춰 대화형이고 동적인 콘텐츠를 만들 수 있습니다. 예를 들어, ChatGPT를 사용하여 개인화된 제품 설명을 생성하거나, 매력적인 블로그 게시물을 만들거나, 서비스에 대한 일반적인 질문에 답변할 수 있습니다. OpenAI API의 힘과 약간의 Python 코드로 무한한 가능성이 있습니다.

파이썬 백엔드에서 API 호출을 사용하는 간단한 예를 생각해보십시오:

def generate_content(prompt):
    try:
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content
    except Exception as e:
        return str(e)

# 콘텐츠 생성을 위해 이 함수를 사용
description = generate_content("Write a short description of a hiking backpack")

그런 다음 description를 HTML과 JavaScript와 통합하는 코드를 작성하여 생성된 콘텐츠를 웹사이트에 표시할 수 있습니다.

ChatGPT와 Python으로 챗봇 구축

인공지능으로 구동되는 챗봇이 사용자 경험을 향상시키는 데 중요한 역할을 시작하고 있습니다. ChatGPT의 자연어 처리 능력과 Python을 결합하여 맥락을 이해하고 사용자 입력에 지능적으로 응답할 수 있는 챗봇을 구축할 수 있습니다.

사용자 입력을 처리하고 응답을 얻는 예를 고려하십시오:

def get_chatbot_response(prompt):
    try:
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content
    except Exception as e:
        return str(e)

# 명령 줄에서 사용자 입력 받기
user_input = input("Enter your prompt: ")
response = get_chatbot_response(user_input)
print(response)

그러나 루프가 없으므로 스크립트는 한 번 실행된 후 종료되므로 조건부 논리를 추가하는 것을 고려하십시오. 예를 들어 “종료” 또는 “중단”이라는 중지 구문을 말할 때까지 사용자 프롬프트를 계속 찾을 것인지 기본 조건부 논리를 추가했습니다.

위에서 언급한 논리를 고려할 때 OpenAI API 엔드포인트에서 챗봇을 실행하기 위한 완전한 최종 코드는 다음과 같습니다.

from openai import OpenAI
import os
from dotenv import load_dotenv

# .env 파일에서 API 키 로드
load_dotenv()
client = OpenAI(api_key=os.environ.get("CHAT_GPT_API_KEY"))

def get_chatbot_response(prompt):
    try:
        response = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content
    except Exception as e:
        return str(e)

while True:
    user_input = input("You: ")
    if user_input.lower() in ["exit", "quit"]:
        print("Chat session ended.")
        break
    response = get_chatbot_response(user_input)
    print("ChatGPT:", response)

이것은 Windows 명령 프롬프트에서 실행되는 모습입니다.

이러한 예제들이 ChatGPT AI로의 실험을 시작하는 데 도움이 되길 바랍니다. 전반적으로 OpenAI는 개발자들에게 API를 사용하여 새롭고 흥미로운 제품을 만들 수 있는 엄청난 기회를 제공하며, 가능성은 무한합니다.

OpenAI API 제한 사항 및 가격

OpenAI API는 강력하지만, 몇 가지 제한 사항이 있습니다:

  • 데이터 저장. OpenAI는 당신의 API 데이터를 30일간 보관하며, API 사용은 데이터 저장 동의를 의미합니다. 보내는 데이터에 주의하세요.

  • 모델 용량. 채팅 모델은 최대 토큰 제한이 있습니다. (예를 들어, GPT-3는 4096개의 토큰을 지원합니다.) API 요청이 이 제한을 초과하면 텍스트를 잘라내거나 생략해야 합니다.

  • 가격. OpenAI API는 무료가 아니며 모델 구독 요금과는 별도의 가격 체계를 따릅니다. 자세한 가격 정보는 OpenAI의 가격 세부 사항을 참조하세요. (다시 말하지만, GPT-4 Turbo는 GPT-4보다 세 배 저렴합니다!)

결론

Python에서 ChatGPT 모델 API의 잠재력을 탐색하면 고객 지원, 가상 어시스턴트, 콘텐츠 생성과 같은 다양한 애플리케이션에서 상당한 발전을 이룰 수 있습니다. 이 강력한 API를 프로젝트에 통합하여 GPT 모델의 기능을 Python 애플리케이션에서 원활하게 활용할 수 있습니다.

이 튜토리얼을 즐겼다면 다음 내용도 즐길 수 있습니다:

Source:
https://www.sitepoint.com/python-build-ai-tools-openai-api/