mirror of
https://github.com/yihong0618/bilingual_book_maker.git
synced 2025-06-02 09:30:24 +00:00
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
import time
|
|
|
|
import openai
|
|
|
|
from .base_translator import Base
|
|
|
|
|
|
class ChatGPTAPI(Base):
|
|
def __init__(self, key, language, api_base=None):
|
|
super().__init__(key, language, api_base=api_base)
|
|
self.key = key
|
|
self.language = language
|
|
if api_base:
|
|
openai.api_base = api_base
|
|
|
|
def translate(self, text):
|
|
print(text)
|
|
openai.api_key = self.get_key(self.key)
|
|
try:
|
|
completion = openai.ChatCompletion.create(
|
|
model="gpt-3.5-turbo",
|
|
messages=[
|
|
{
|
|
"role": "user",
|
|
# english prompt here to save tokens
|
|
"content": f"Please help me to translate,`{text}` to {self.language}, please return only translated content not include the origin text",
|
|
}
|
|
],
|
|
)
|
|
t_text = (
|
|
completion["choices"][0]
|
|
.get("message")
|
|
.get("content")
|
|
.encode("utf8")
|
|
.decode()
|
|
)
|
|
except Exception as e:
|
|
# TIME LIMIT for open api please pay
|
|
key_len = self.key.count(",") + 1
|
|
sleep_time = int(60 / key_len)
|
|
time.sleep(sleep_time)
|
|
print(e, f"will sleep {sleep_time} seconds")
|
|
openai.api_key = self.get_key(self.key)
|
|
completion = openai.ChatCompletion.create(
|
|
model="gpt-3.5-turbo",
|
|
messages=[
|
|
{
|
|
"role": "user",
|
|
"content": f"Please help me to translate,`{text}` to {self.language}, please return only translated content not include the origin text",
|
|
}
|
|
],
|
|
)
|
|
t_text = (
|
|
completion["choices"][0]
|
|
.get("message")
|
|
.get("content")
|
|
.encode("utf8")
|
|
.decode()
|
|
)
|
|
print(t_text)
|
|
return t_text
|