mirror of
https://github.com/yihong0618/bilingual_book_maker.git
synced 2025-06-07 12:05:50 +00:00

* Minor improvements for loader and translator * use rotate key * fix: typo --------- Co-authored-by: yihong0618 <zouzou0208@gmail.com>
63 lines
2.0 KiB
Python
63 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)
|
|
self.key_len = len(key.split(","))
|
|
if api_base:
|
|
openai.api_base = api_base
|
|
|
|
def rotate_key(self):
|
|
openai.api_key = next(self.keys)
|
|
|
|
def translate(self, text):
|
|
print(text)
|
|
self.rotate_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
|
|
sleep_time = int(60 / self.key_len)
|
|
time.sleep(sleep_time)
|
|
print(e, f"will sleep {sleep_time} seconds")
|
|
self.rotate_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
|