2024. 3. 1. 23:53ㆍDL
최근들어서 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시킵니다.
시작은 간단하지만 고도화를 할 수록 구조를 변경하게 될것 같구요
담겨진 대화의길이가 점점 길어지다보면 한번에 소모하는 토큰의 개수가 꽉차서 더이상 대화를 진행할 수 없는데 이것을 방지하기 위한 방법도 필요해 보입니다.
'DL' 카테고리의 다른 글
[LLM] Data Splitters (with Langchain) (0) | 2024.06.22 |
---|---|
[LLM] RAG란 무엇인가? (0) | 2024.06.20 |
[GPT]GPT-3.5 Turbo Fine Tuning 시켜보기 (0) | 2024.03.09 |
DL - Konlpy의 Okt(Open Korean Text)를 이용한 형태소 분석과 기능 (0) | 2021.10.24 |
JDK1.8 윈도우(Windows 10/11 설치) 및 확인 (0) | 2021.10.23 |