增加火山翻译, 翻译词条小于16的情况

This commit is contained in:
mnjnhuang 2026-01-16 17:49:23 +08:00
parent b39ce08b32
commit 95e03554ba
2 changed files with 54 additions and 6 deletions

View File

@ -6,14 +6,58 @@ from model.TranslateBaseModel import TranslateBaseModel
from concurrent.futures import ThreadPoolExecutor, as_completed
class VolcEngine(TranslateParent):
def translate_text_with_ai(self, tag_list: list, target_language: str = "zh") -> dict | None:
pass
class VolcEngine(TranslateBaseModel):
def __init__(self, ):
from main import server
self.access_id, self.access_key = server.tell_volc_api()
def translate_text_with_ai(self, goto_translate_map: dict, source_language: str = "en",
target_language: str = "zh") -> dict:
pass
def _start_translate_with_machine_thread(self, goto_translate_map: dict, api_instance, rebuild_list,
source_language: str = "en", target_language: str = "zh"):
thread_status_code = {"code": 10500, "status": False}
translate_text_request = volcenginesdktranslate20250301.TranslateTextRequest(
source_language=source_language,
target_language=target_language,
text_list=rebuild_list,
)
try:
response = api_instance.translate_text(translate_text_request)
except ApiException as e:
print(e)
thread_status_code.update({"code": 10501}) # API接口错误
return thread_status_code
else:
translate_list = response.translation_list
if not self.check_translate_match_source(translate_list, goto_translate_map):
thread_status_code.update({"code": 10502}) # 翻译结果不匹配
return thread_status_code
for item in range(len(rebuild_list)):
goto_translate_map[rebuild_list[item]].update({"translate_model": "VolcEngine机器翻译",
"translate": translate_list[item].translation})
thread_status_code.update({"status": True})
return thread_status_code
def translate_text_with_machine(self, goto_translate_map: dict, source_language: str = "en",
target_language: str = "zh") -> dict:
if len(goto_translate_map) == 0:
return {"status": True, "translate_map": {}}
list_limit = 15
_, rebuild_list, return_false_code = self.rebuild_text_and_list_to_translate(goto_translate_map)
self._set_configure()
api_instance = volcenginesdktranslate20250301.TRANSLATE20250301Api()
if len(rebuild_list) <= list_limit:
err_code, thread_status = self._start_translate_with_machine_thread(goto_translate_map, api_instance,
rebuild_list, source_language,
target_language).values()
if not thread_status:
return_false_code.update({"code": err_code})
return return_false_code
return {"status": True, "translate_map": goto_translate_map}
return return_false_code
def _set_configure(self):
configuration = volcenginesdkcore.Configuration()
configuration.ak = self.access_id

View File

@ -9,6 +9,7 @@ from dataclasses import dataclass
from model.TencentCloud import TencentCloud
from model.BaiduCloud import BaiduCloud
from model.NiuTrans import NiuTrans
from model.VolcEngine import VolcEngine
@dataclass
@ -120,9 +121,12 @@ class OverwriteServerHandler(ServerHandler):
niu_trans: NiuTrans = NiuTrans()
response_dict: dict = niu_trans.translate_text_with_machine(goto_ai_translate_map)
translate_network_map: dict = response_dict.get("translate_map")
case "VolcEngineModelMachine": # 火山引擎机器翻译
volc_engine: VolcEngine = VolcEngine()
response_dict: dict = volc_engine.translate_text_with_machine(goto_ai_translate_map)
translate_network_map: dict = response_dict.get("translate_map")
case _:
self.set_response_code(ResponseCode.RESPONSE_103_MODEL_ERROR)
return
return self.set_response_code(ResponseCode.RESPONSE_103_MODEL_ERROR)
if not response_dict["status"]:
match response_dict["code"]:
case 10500: