이전 포스팅에서는 OpenAI API Key를 발급하는 방법(https://rfriend.tistory.com/794) 을 소개하였습니다. 

 

이번 포스팅에서는 애플리케이션을 개발할 때 REST API 로 OpenAI의 서비스를 사용할 수 있는 

 

(1) OpenAI API 를 이용해서 GPT-3 Text Embeddings 를 하는 방법

(2) OpenAI API 를 이용해서 ChatGPT 채팅을 하는 방법

 

을 소개하겠습니다. 

 

 

Application using OpenAI's REST API

 

 

 

먼저, openai 모듈이 없으면 터미널에서 openai 파이썬 모듈을 설치해야 합니다 

 

-- terminal 에서 모듈 설치

pip install openai
pip install --force-reinstall charset-normalizer==3.1.0

 

그리고, Billing method 에서 API를 사용한 만큼의 비용을 결제할 때 사용하는 신용카드를 등록해야 합니다.  

 

 

 

(1) OpenAI API 를 이용해서 GPT-3 Text Embeddings 를 하는 방법

 

텍스트 임베팅 (Text Embeddings)은 텍스트 유사성(text similarity), 텍스트 군집화(clustering), 토픽 모델링(topic modeling), 텍스트 검색(text search), 코드 검색(code search) 등에 사용됩니다. 

 

openai.Embedding.create() 함수에 텍스트 문장을 input 으로 넣어주면, 1,536 차원의 리스트(list) 데이터 유형의 embeddings 를 output 으로 반환합니다. 

 

OpenAI API Key는 외부로 노출되지 않도록 보안에 유의하시기 바랍니다. (사용한 만큼 과금이 됩니다!)

 

## OpenAI API key
## how to get key: https://rfriend.tistory.com/794
openai_key = "Your_OpenAI_API_Key_here"


## Getting Embeddings
def get_embedding(content, openai_key):
    import openai
    
    openai.api_key = openai_key
    
    text = content 
    
    response = openai.Embedding.create(
        model="text-embedding-ada-002", 
        input = text.replace("\n", " ")
        )
    
    embedding = response['data'][0]['embedding']
    
    return embedding


## run the UDF above
content = """What is love?"""

text_embs = get_embedding(content, openai_key)


## sentence embeddings in detail
type(text_embs)
# list

len(text_embs)
# 1536

print(text_embs)
# [0.010716659016907215, -0.019867753610014915, 
#. -0.010219654999673367, -0.008119810372591019, 
#  ...... 
#  0.014152202755212784, -0.022837355732917786, 
#. -0.0026341236662119627, -0.03941245377063751]

 

 

 

(2) OpenAI API 를 이용해서 ChatGPT 채팅을 하는 방법

 

messages 에 {"role": "system", "content": "You are an intelligent assistant."} 를 설정해주고, input("User : ") 를 통해 사용자의 질문을 input으로 입력받아 {"role": "user", "content": message} 를 함께 묶어서 (append) OpenAI API 를 통해 ChatGPT 모델에 전달합니다.

 

그러면 OpenAI의 서버에서 openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages) 함수가 GPU를 사용해서 열심히 Text Generation Inference 를 해서 답변(reply)를 API를 통해 사용자에게 반환합니다. 

 

제일 마지막에 있는 messages.append({"role": "assistant", "content": reply}) 는 ChatGPT 가 답변한 내용(reply)를 messages 에 합쳐 놓아서 이후의 이어지는 질문에 이전 답변을 참고하는데 사용됩니다. (ChatGPT는 이전 상태에 대한 기억이 없기 때문에 이렇게 해주는 것임). 

 

#%% AI-assisted Chatting
import openai 

opneai_key = "Your_OpenAI_API_Key_here"
openai.api_key = opneai_key


messages = [ {"role": "system", 
              "content": "You are an intelligent assistant."} ]

message = input("User : ")
if message:
    messages.append(
        {"role": "user", 
         "content": message},
    )
    chat = openai.ChatCompletion.create(
        model="gpt-3.5-turbo", 
        messages=messages
    )

    
reply = chat.choices[0].message.content

print(f"ChatGPT: {reply}")

messages.append({"role": "assistant", "content": reply})


## 챗팅 결과
# User :  What is love?

# ChatGPT: Love is a complex emotion and can mean different things to different people. 
# Generally, love refers to a deep affection, care, and attachment felt towards someone or something. 
# It involves feelings of intense happiness, contentment, and a sense of connection. 
# Love can exist in various forms, such as romantic love, familial love, platonic love, 
# or even love for hobbies and interests. It is often characterized by selflessness, 
# understanding, support, and the desire to nurture and protect the well-being of the loved one. 
# Love can bring joy, fulfillment, and a sense of purpose to our lives, but it can also be challenging 
# and require effort, compromise, and understanding. Ultimately, 
# love is a fundamental aspect of human experience that enriches relationships 
# and contributes to personal growth and happiness.

 

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요!  :-)

 

728x90
반응형
Posted by Rfriend
,