Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (8)

반응형

OpenAI 응답 메시지를 한글로 번역하기

이번에는 OpenAI API 응답에 번역기를 붙여서 한글로 대답하게 해보자.

googletrans 파이썬 패키지 사용하여 번역하기

googletrans 는 개인이 배포하는 오픈소스이며 무료이다. Google 번역 Ajax API를 사용하여 언어감지 및 번역과 같은 메서드를 호출한다고 한다. 하지만 정식 구글 서비스를 사용한 것이 아니기 때문에 언제든지 막힐 수 있다.

아래 명령으로 googletrans 파이썬 패키지를 설치한다.

pip install --upgrade googletrans==4.0.0-rc1

main.py 파일을 열고 구글 번역 코드를 추가한다.

import googletrans # 코드 추가

translator = googletrans.Translator() # 코드 추가

# ⋯ (코드 생략) ⋯

@app.event("message")
def handle_message_events(event, message, say):  
    user = message['user']
    response = openai.Completion.create(  
        model="text-davinci-003",  
        prompt=f"The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\n{user}: Hello, who are you?\n행운이: I am an AI created by OpenAI. How can I help you today?\n{user}: {message}",  
        temperature=0.9,
        max_tokens=150,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0.6,
        stop=[f" {user}:", " 행운이:"]  
    )  
    
    # 아래 코드 수정됨
    choices_text = response.choices[0].text.replace("행운이: ", "")  
    trans_results = translator.translate(choices_text, dest='ko')  
    say(trans_results.text)

이제부터 행운이에게 말을 걸면 한글로 대답한다.

네이버 파파고 번역 API 사용하기

파파고 번역 API에서 한 번에 번역할 수 있는 분량은 최대 5,000자이며, 최대 번역 글자수는 하루에 10,000자이다.

파파고 번역 API를 사용하려면 네이버 개발자 센터에 앱을 등록하고 API Key를 발급받아야 한다.

API Key를 발급받기 위해 다음 단계를 따른다. 네이버 개발자 센터에서 애플리케이션 등록으로 이동한다. 애플리케이션 이름을 입력한다. 사용 API에서 Papago 번역을 선택한다. 환경 추가에서 WEB을 추가하고, 웹 서비스 URL에 file://로컬URI를 입력한다.

생성된 Client ID과 Client Secret을 확인한다. Client Secret는 [보기] 버튼을 누르면 확인할 수 있다.

환경변수에 파파고 Client ID와 Client Secret를 추가한다.

PAPAGO_CLIENT_ID=여러분의 Client ID 값
PAPAGO_CLIENT_SECRET=여러분의 Client Secret 값

파파고 번역 함수 papago_translate 를 작성하여 main.py에 추가한다.

import requests

papago_client_id = os.getenv("PAPAGO_CLIENT_ID")
papago_client_secret = os.getenv("PAPAGO_CLIENT_SECRET")

""" 파파고 번역 """
def papago_translate(text):  
    try:  
        url = "https://openapi.naver.com/v1/papago/n2mt"  
        headers = {  
            "X-Naver-Client-Id": papago_client_id,  
            "X-Naver-Client-Secret": papago_client_secret  
        }  
        data = {  
            "source": "en",  
            "target": "ko",  
            "text": text  
        }  
        response = requests.post(url, headers=headers, data=data)  
        if response.ok:  
            return response.json()['message']['result']['translatedText']  
    except Exception as e:  
        print(e)  
    return text

파파고 번역기를 사용하기 위해 다음과 같이 코드를 수정한다.

trans_results = papago_translate(choices_text)
say(trans_results)

파파고 번역이 구글 번역보다 조금 더 자연스럽다.

하지만 파파고 번역 API는 무료로 사용 가능한 글자 수가 10,000자이므로, 파파고와 googletrans를 같이 사용하자.

번역기를 사용하면 단점도 있다. 코드 작성을 요청하면 코드를 번역해서 알려준다.

번역하기 전 응답 메시지는 다음과 같다.

Sure, no problem! Here is a Python sample code for web crawling: 

```
import requests 
from bs4 import BeautifulSoup 

URL = "url_to_be_crawled"
r = requests.get(URL) 

soup = BeautifulSoup(r.content, 'html5lib') 
links = soup.findAll('a') 
for link in links: 
  print("<a href='%s'>%s</a>" %(link.get('href'), link.text))"
```

또 다른 방법은 openai API의 prompt를 한글로 작성하고, 한국어로 답변해달라는 프롬프트를 추가하는 것이다. 하지만 이 방법을 사용하면 openai API의 응답 속도가 느려진다.




or
[카카오페이로 후원하기] [토스페이로 후원하기]

반응형