관리 메뉴

Leo's Garage

OpenAI/ChatGPT API를 Python에 연동하는 방법 본문

Study/AI Services

OpenAI/ChatGPT API를 Python에 연동하는 방법

LeoBehindK 2023. 2. 1. 00:47
728x90
반응형

prompt를 통해서 문답하는 OpenAI의 API를 Python에서 사용하는 방법에 대해 간략히 설명하겠다. 

Setting up API credentials

Python에 통합하기에 앞서서 먼저 OpenAI의 API를 발급받아야 한다. 

https://platform.openai.com/overview

 

OpenAI API

An API for accessing new AI models developed by OpenAI

platform.openai.com

상기 주소로 접속하여 회원 가입을 한다.

상기와 같이 API keys 화면으로 들어가서 API key를 발급받는다.

발급받은 key는 반드시 기억하고 있어야 한다. 

Installing Required Libraries

OpenAI를 Python에서 사용하기 위해서는 'openai' 라이브러리를 먼저 설치해야 한다. 

이 라이브러리는 API 사용을 손쉽게 만들어주는데 아래와 같이 설치한다.

pip install openai

 

Integrating the API with Python

자 이제 openai 라이브러리를 사용해서 API Key를 넣어보자

import openai
openai.api_key = "YOUR_API_KEY_HERE"

그 다음에 API를 통해서 text prompt를 사용을 휴ㅐ보자. 'completion' 변수를 이용해서 예제를 작성해보았다.

model_engine = "text-davinci-002"
prompt = "In the year 2050, the world will be a better place because"

completion = openai.Completion.create(
    engine=model_engine,
    prompt=prompt,
    max_tokens=1024,
    n=1,
    stop=None,
    temperature=0.5,
)

message = completion.choices[0].text
print(message)

이 예제에서는 Davinci Language model을 사용했다. 

여기서 prompt에 들어간 내용이 실제 OpenAI의 chatGPT에 물어본 내용이다. 

temperature : 텍스트의 랜덤성을 제어하며, 낮은 값은 더 보수적이고 예측 가능한 출력을 생성하는 반면 높은 값은 더 창의적이고 다양한 출력을 생성한다.

max_tokens : API 호출 시 사용되는 token의 최대치이다. 각 모델 별로 word당 소요되는 token이 다르며 token에 따라 과금이 달라진다. 

n : 동일 promp에 대한 다른 output의 갯수를 지정한다. 같은 질문에 대해서 서로 다른 답을 받을 수도 있다.

stop : API가 텍스트 생성을 위한 중지 기준으로 사용할 문자열 또는 문자열 시퀀스다. 생성된 텍스트에서 지정된 중지 문자열 중 하나가 발견되면 API는 텍스트 생성을 중지하고 출력 텍스트를 해당 지점까지 반환한다.

 

상기 코드를 돌리면 'In the year 2050, the world will be a better place because'에 대한 답변이 message에 담기게 된다. 

현재 n = 1이므로 completion.choices[0]에만 값이 들어가게 된다. 

 

stop 파라미터를 사용한 예는 아래와 같다 .

import openai

# Initialize the API key
openai.api_key = "YOUR_API_KEY"

# Define the prompt
prompt = "The future of AI is bright and "

# Generate text completions using OpenAI API
completions = openai.Completion.create(
    engine="text-davinci-002",
    prompt=prompt,
    max_tokens=100,
    n=1,
    stop=["because", "however"],
)

# Get the first completion
message = completions.choices[0].text

print(message)

상기 코드를 돌리게 되면 output으로 나온 메시지에 because, however이 나오면 text generate를 멈추게 된다. 

728x90
반응형
Comments