[GPT]GPT API를 사용하여 간단한 쳇 시스템 만들어보기

2024. 3. 1. 23:53DL

최근들어서 GPT를 활용하여 할 수 있는 일들이 늘어나고 있습니다. 

가령 내가 코드를 작성하더라도, 디버깅에 어려움을 겪고 있는경우에도, 작성한 쿼리가 정말 최적화가 돼 있는지 등 다양한 방면에서 개발에 도움을 주고 있다보니 

 

문득 궁금해져서 API를 사용하여 어떻게 동작하는지 알아보고자 합니다.

 

API에 대한 자세한 내용은 Open AI에서 제공하는 페이지를 확인하시기 바랍니다. 가령 API키 발급같은 것이요.

https://platform.openai.com/signup

 

먼저 저는 Python 3.11버전을 사용했습니다.

 

1. Python Library install

pip install --upgrade openai

 

2. 간단한 코드 작성

from openai import OpenAI
import requests as req
import json

client = OpenAI(
  organization='YOUR ORG KEY',
  api_key='YOUR API KEY'
  )

chat_gpt_url = "https://api.openai.com/v1/chat/completions"

count = 0
requst_list = [
    {
        "role": "system",
        "content": "You are a helpful assistant."
    }]

while count != 5:
    user_chat = input()

    if len(user_chat) != 0:
        requst_list.append({
        "role": "user",
        "content": str(user_chat)
      })
        
    data = {
    "model": "gpt-3.5-turbo",
    "messages": requst_list}

    resp = req.post(chat_gpt_url, json=data, headers=client.auth_headers)
    resp_data = json.loads(resp.text)
    print(resp_data["choices"][0]["message"]["content"])
    
    requst_list.append(resp_data["choices"][0]["message"])

    count += 1

 

너무 간단하죠?

 

이런 구조가 된데에는 이유가 있는데요 request_list내부에 들어있는 Dict값에 role을 통해서 이것이 GPT가 답변을 한것인지, 유저가 질문하는것인지 구분이 됩니다.

그리고 대화를 이어감에 있어서 저 request_list에 지금까지 했던 질문과 답변이 담겨있어야 같은 맥락으로 대화를 이어나갈 수 있기 때문에

 

질문을 할때 질문을 받아서 role이 user인 상태로 List에 append시키구요, 답변이 돌아오면 돌아온 답변을 구조화하여 List에 append시킵니다. 

 

시작은 간단하지만 고도화를 할 수록 구조를 변경하게 될것 같구요

담겨진 대화의길이가 점점 길어지다보면 한번에 소모하는 토큰의 개수가 꽉차서 더이상 대화를 진행할 수 없는데 이것을 방지하기 위한 방법도 필요해 보입니다.