MapleStory Finger Point

Development/ChatGPT

Python으로 ChatGPT 프로그램 만들어보기

吳鍾振 2023. 1. 31. 21:03

요새 핫하디 핫한 ChatGPT를 사용한 네이버 파파고로 번역하는 간단한 프로그램을 만들어 보았다.

먼저 ChatGPT를 사용하기 위해서는 OpenAI api key를 발급 받아야 한다.
그리고 파파고를 사용하기 위해 네이버 개발자에서 api key를 발급 받는다.

import json
import urllib.request
import openai


papago_client_id = 'PAPAGO_CLIENT_ID'   # 파파고 API ID
papago_client_secret = 'PAPAGO_CLIENT_SECRET'     # 파파고 API secret 키
openai.api_key = 'OPENAI_API_KEY'  # openai API 키


def papago(text: str, current_lang_type: str, convert_lang_type: str):
    encText = urllib.parse.quote(text)
    data = f'source={current_lang_type}&target={convert_lang_type}&text=' + encText
    url = 'https://openapi.naver.com/v1/papago/n2mt'
    request = urllib.request.Request(url)
    request.add_header("X-Naver-Client-Id", papago_client_id)
    request.add_header("X-Naver-Client-Secret", papago_client_secret)
    response = urllib.request.urlopen(request, data=data.encode("utf-8"))
    rescode = response.getcode()

    if rescode == 200:
        response_body = response.read()
        result = response_body.decode('utf-8')
        d = json.loads(result)
        return d['message']['result']['translatedText']
    else:
        print(f'Error Code: {rescode}')


def generate_reponse(prompt):
    model_engine = 'text-davinci-003'   # OpenAI의 모델 종류 중 하나 / https://platform.openai.com/docs/models/overview
    prompt = f'{prompt}'

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

    message = completions.choices[0].text
    return message.strip()


while True:
    current_lang = None
    convert_lang = None
    user_input = input('User: ')    # 사용자 대화 입력 대기

    if user_input.upper() != user_input.lower():
        # 영어인지 한글인지 판별하는 간단한 조건문
        # 영어에는 대소문자 구별이 있기 때문에, 대문자와 소문자가 같지 않는 점을 이용하였다.
        current_lang = 'en'
        convert_lang = 'ko'
    else:
        current_lang = 'ko'
        convert_lang = 'en'

    if user_input == 'exit':    # 사용자가 exit를 입력하면 종료
        break

    response = generate_reponse(papago(user_input, current_lang, convert_lang))
    print(f'ChatGPT: {papago(response, convert_lang, current_lang)}')   # 영어로 물어보면 한글로 대답, 한글로 물어보면 영어로 대답
    print(f'ChatGPT: {papago(response, "en", "ko")}')   # 무조건 한글로 대답. 위 두 개중 쓰고싶은거 아무거나

ChatGPT를 사용하면서 파파고로 자동 번역해준다.

처음에 사용자의 메시지를 입력받아 영어로 번역한 글을 ChatGPT에 전송한다.
잠시 뒤에 ChatGPT에서 받은 영어 메시지를 다시 한글로 번역하여 출력한다.

그렇구나

 

하지만 간단한 프로그래밍 코드를 알려달라고 메시지를 보내면, 코드도 한글로 번역해버린다..
이는 받은 메시지를 인덱싱하여 예외 처리를 진행해야 할 것이다.

print를 인쇄라고 번역해버린다

 

API로 사용해서 그런지 직접 웹에서 사용하는 것보다는 느리다.
웹을 통해서 하면 코드 생성, 코드 리뷰까지 가능하다.
한번은 잘못 입력하여 코드만 달랑 보내버렸는데, 내 코드를 파악하여 설명해주었다.

앞으로 함수의 docstring을 작성할 때에도 도움이 될 것 같다.
요긴하게 써먹을 듯

반응형