[Add] translation_gemini: Integrate Gemini translation model and authentication; [Update] controller: Implement methods for managing Gemini models and auth keys; [Update] mainloop: Add routes for Gemini model and auth key management; [Update] translation: Enhance Translator class for Gemini API support; [Update] translation_languages: Add Gemini language mappings
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
import logging
|
||||
from langchain_google_genai import ChatGoogleGenerativeAI
|
||||
from langchain_core.messages import HumanMessage
|
||||
|
||||
logger = logging.getLogger("langchain_google_genai")
|
||||
logger.setLevel(logging.ERROR)
|
||||
|
||||
_MODELS = [
|
||||
"gemini-2.5-pro",
|
||||
"gemini-2.5-flash",
|
||||
"gemini-2.5-flash-lite",
|
||||
"gemini-2.5-flash-lite", # default
|
||||
"gemini-2.0-flash",
|
||||
"gemini-2.0-flash-lite",
|
||||
"gemini-1.5-pro",
|
||||
@@ -13,7 +17,7 @@ _MODELS = [
|
||||
]
|
||||
|
||||
class GeminiClient:
|
||||
def __init__(self, api_key: str = "", model: str = "gemini-2.5-flash"):
|
||||
def __init__(self, api_key: str = "", model: str = "gemini-2.5-flash-lite"):
|
||||
self.api_key = api_key
|
||||
self.model = model
|
||||
self.prompt_template = """
|
||||
@@ -93,7 +97,7 @@ if __name__ == "__main__":
|
||||
input_lang = "Japanese"
|
||||
output_lang = "English"
|
||||
|
||||
gemini_client = GeminiClient(api_key=AUTH_KEY, model="gemini-1.5-flash")
|
||||
gemini_client = GeminiClient(api_key=AUTH_KEY, model="gemini-2.5-flash-lite")
|
||||
|
||||
print("model list:", gemini_client.getListModels())
|
||||
print("AuthKey:", gemini_client.getAuthKey())
|
||||
@@ -110,41 +114,55 @@ if __name__ == "__main__":
|
||||
|
||||
|
||||
supported_languages = """
|
||||
English
|
||||
Japanese
|
||||
Korean
|
||||
French
|
||||
German
|
||||
Spanish
|
||||
Portuguese
|
||||
Russian
|
||||
Italian
|
||||
Dutch
|
||||
Polish
|
||||
Turkish
|
||||
Arabic
|
||||
Hindi
|
||||
Thai
|
||||
Vietnamese
|
||||
Indonesian
|
||||
Malay
|
||||
Filipino
|
||||
Swedish
|
||||
Finnish
|
||||
Danish
|
||||
Norwegian
|
||||
Romanian
|
||||
Czech
|
||||
Hungarian
|
||||
Greek
|
||||
Hebrew
|
||||
Bengali
|
||||
Bulgarian
|
||||
Simplified Chinese
|
||||
Traditional Chinese
|
||||
Croatian
|
||||
Czech
|
||||
Danish
|
||||
Dutch
|
||||
English
|
||||
Estonian
|
||||
Finnish
|
||||
French
|
||||
German
|
||||
Greek
|
||||
Hebrew
|
||||
Hindi
|
||||
Hungarian
|
||||
Indonesian
|
||||
Italian
|
||||
Japanese
|
||||
Korean
|
||||
Latvian
|
||||
Lithuanian
|
||||
Norwegian
|
||||
Polish
|
||||
Portuguese
|
||||
Romanian
|
||||
Russian
|
||||
Serbian
|
||||
Slovak
|
||||
Slovenian
|
||||
Spanish
|
||||
Swahili
|
||||
Swedish
|
||||
Thai
|
||||
Turkish
|
||||
Ukrainian
|
||||
Vietnamese
|
||||
"""
|
||||
|
||||
for lang in supported_languages.split("\n"):
|
||||
if lang == "":
|
||||
continue
|
||||
print (f"Translating to {lang}:")
|
||||
translated_text = gemini_client.translate(text, input_lang, lang)
|
||||
print(f"Translated text: {translated_text}")
|
||||
try:
|
||||
translated_text = gemini_client.translate(text, input_lang, lang)
|
||||
print(f"Translated text: {translated_text}")
|
||||
except Exception as e:
|
||||
print(f"Error translating to {lang} api limit")
|
||||
print(f"Error reason: {e}")
|
||||
break
|
||||
@@ -641,4 +641,51 @@ dict_plamo_languages = {
|
||||
translation_lang["Plamo_API"] = {
|
||||
"source":dict_plamo_languages,
|
||||
"target":dict_plamo_languages,
|
||||
}
|
||||
|
||||
dict_gemini_languages = {
|
||||
"Arabic": "Arabic",
|
||||
"Bengali": "Bengali",
|
||||
"Bulgarian": "Bulgarian",
|
||||
"Simplified Chinese": "Simplified Chinese",
|
||||
"Traditional Chinese": "Traditional Chinese",
|
||||
"Croatian": "Croatian",
|
||||
"Czech": "Czech",
|
||||
"Danish": "Danish",
|
||||
"Dutch": "Dutch",
|
||||
"English": "English",
|
||||
"Estonian": "Estonian",
|
||||
"Finnish": "Finnish",
|
||||
"French": "French",
|
||||
"German": "German",
|
||||
"Greek": "Greek",
|
||||
"Hebrew": "Hebrew",
|
||||
"Hindi": "Hindi",
|
||||
"Hungarian": "Hungarian",
|
||||
"Indonesian": "Indonesian",
|
||||
"Italian": "Italian",
|
||||
"Japanese": "Japanese",
|
||||
"Korean": "Korean",
|
||||
"Latvian": "Latvian",
|
||||
"Lithuanian": "Lithuanian",
|
||||
"Norwegian": "Norwegian",
|
||||
"Polish": "Polish",
|
||||
"Portuguese": "Portuguese",
|
||||
"Romanian": "Romanian",
|
||||
"Russian": "Russian",
|
||||
"Serbian": "Serbian",
|
||||
"Slovak": "Slovak",
|
||||
"Slovenian": "Slovenian",
|
||||
"Spanish": "Spanish",
|
||||
"Swahili": "Swahili",
|
||||
"Swedish": "Swedish",
|
||||
"Thai": "Thai",
|
||||
"Turkish": "Turkish",
|
||||
"Ukrainian": "Ukrainian",
|
||||
"Vietnamese": "Vietnamese",
|
||||
}
|
||||
|
||||
translation_lang["Gemini_API"] = {
|
||||
"source":dict_gemini_languages,
|
||||
"target":dict_gemini_languages,
|
||||
}
|
||||
@@ -10,6 +10,7 @@ try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import ctranslate2_weights
|
||||
from .translation_plamo import PlamoClient
|
||||
from .translation_gemini import GeminiClient
|
||||
except Exception:
|
||||
import sys
|
||||
print(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__)))))
|
||||
@@ -17,6 +18,7 @@ except Exception:
|
||||
from translation_languages import translation_lang
|
||||
from translation_utils import ctranslate2_weights
|
||||
from translation_plamo import PlamoClient
|
||||
from translation_gemini import GeminiClient
|
||||
|
||||
import ctranslate2
|
||||
import transformers
|
||||
@@ -30,6 +32,7 @@ class Translator():
|
||||
def __init__(self):
|
||||
self.deepl_client = None
|
||||
self.plamo_client = None
|
||||
self.gemini_client = None
|
||||
self.ctranslate2_translator = None
|
||||
self.ctranslate2_tokenizer = None
|
||||
self.is_loaded_ctranslate2_model = False
|
||||
@@ -57,6 +60,17 @@ class Translator():
|
||||
result = False
|
||||
return result
|
||||
|
||||
def authenticationGeminiAuthKey(self, auth_key: str, model: str) -> bool:
|
||||
result = True
|
||||
try:
|
||||
self.gemini_client = GeminiClient(auth_key, model=model)
|
||||
self.gemini_client.checkAuthKey()
|
||||
except Exception:
|
||||
errorLogging()
|
||||
self.gemini_client = None
|
||||
result = False
|
||||
return result
|
||||
|
||||
def changeCTranslate2Model(self, path, model_type, device="cpu", device_index=0):
|
||||
self.is_loaded_ctranslate2_model = False
|
||||
directory_name = ctranslate2_weights[model_type]["directory_name"]
|
||||
@@ -158,6 +172,15 @@ class Translator():
|
||||
input_lang=source_language,
|
||||
output_lang=target_language,
|
||||
)
|
||||
case "Gemini_API":
|
||||
if self.gemini_client is None:
|
||||
result = False
|
||||
else:
|
||||
result = self.gemini_client.translate(
|
||||
message,
|
||||
input_lang=source_language,
|
||||
output_lang=target_language,
|
||||
)
|
||||
case "Google":
|
||||
if self.is_enable_translators is True:
|
||||
result = other_web_Translator(
|
||||
|
||||
Reference in New Issue
Block a user