From e71bf17e1359025b5f8c46e2ae3a0267fad7c227 Mon Sep 17 00:00:00 2001 From: misyaguziya <53165965+misyaguziya@users.noreply.github.com> Date: Sun, 19 Oct 2025 22:07:58 +0900 Subject: [PATCH] =?UTF-8?q?=E5=90=84=E7=BF=BB=E8=A8=B3=E3=82=AF=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=82=A2=E3=83=B3=E3=83=88=E3=81=A7=20supported=5Flan?= =?UTF-8?q?guages=20=E3=82=92=20YAML=20=E3=81=8B=E3=82=89=20translation=5F?= =?UTF-8?q?lang=20=E3=81=AB=E7=A7=BB=E8=A1=8C=E3=83=BB=E5=8F=82=E7=85=A7?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E4=BF=AE=E6=AD=A3=E3=80=81?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=B3=E3=83=97=E3=83=88YAML=E3=81=AE?= =?UTF-8?q?=E9=87=8D=E8=A4=87=E3=81=97=E3=81=9F=20supported=5Flanguages=20?= =?UTF-8?q?=E3=83=96=E3=83=AD=E3=83=83=E3=82=AF=E3=82=92=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=80=81LMStudio=20=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=AB=E3=83=88=20URL=20=E3=82=92=20/v1=20=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=80=81mainloop=20=E3=81=AB=20LMStudio/Ollama=20?= =?UTF-8?q?=E3=81=AE=E3=83=A2=E3=83=87=E3=83=AB=E9=96=A2=E9=80=A3=E3=82=A8?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=83=9D=E3=82=A4=E3=83=B3=E3=83=88=E3=81=A8?= =?UTF-8?q?=20run=5Fmapping=20=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=81Controll?= =?UTF-8?q?er=20=E5=86=85=E3=81=AE=20Ollama=20=E8=A1=A8=E8=A8=98=E3=81=AEt?= =?UTF-8?q?ypo=EF=BC=88Lollama=E2=86=92Ollama=EF=BC=89=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=81=97=E3=81=A6=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E5=90=8D=E3=83=BB=E3=83=AD=E3=82=B0=E6=96=87=E3=82=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E3=80=81=E5=90=84=E3=82=AF=E3=83=A9=E3=82=A4=E3=82=A2?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=A7=20translation=5Flanguages=20?= =?UTF-8?q?=E3=81=AE=E3=83=95=E3=82=A9=E3=83=BC=E3=83=AB=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=20import=20=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-python/config.py | 2 +- src-python/controller.py | 16 +++---- src-python/mainloop.py | 15 +++++++ .../translation/prompt/translation_gemini.yml | 45 +------------------ .../prompt/translation_lmstudio.yml | 45 +------------------ .../translation/prompt/translation_ollama.yml | 45 +------------------ .../translation/prompt/translation_openai.yml | 44 +----------------- .../translation/prompt/translation_plamo.yml | 36 +-------------- .../models/translation/translation_gemini.py | 4 +- .../translation/translation_lmstudio.py | 4 +- .../models/translation/translation_ollama.py | 4 +- .../models/translation/translation_openai.py | 4 +- .../models/translation/translation_plamo.py | 4 +- 13 files changed, 48 insertions(+), 220 deletions(-) diff --git a/src-python/config.py b/src-python/config.py index 165919b2..e1683534 100644 --- a/src-python/config.py +++ b/src-python/config.py @@ -1402,7 +1402,7 @@ class Config: self._SELECTED_PLAMO_MODEL = None self._SELECTED_GEMINI_MODEL = None self._SELECTED_OPENAI_MODEL = None - self._LMSTUDIO_URL = "http://127.0.0.1:1234" + self._LMSTUDIO_URL = "http://127.0.0.1:1234/v1" self._SELECTED_LMSTUDIO_MODEL = None self._SELECTED_OLLAMA_MODEL = None self._SELECTED_TRANSLATION_COMPUTE_TYPE = "auto" diff --git a/src-python/controller.py b/src-python/controller.py index 55968566..136f807c 100644 --- a/src-python/controller.py +++ b/src-python/controller.py @@ -1941,8 +1941,8 @@ class Controller: } return response - def checkTranslatorLOllamaConnection(self, *args, **kwargs) -> dict: - printLog("Check Translator Lollama Connection") + def checkTranslatorOllamaConnection(self, *args, **kwargs) -> dict: + printLog("Check Translator Ollama Connection") try: result = model.authenticationTranslatorOllama() if result is True: @@ -1951,7 +1951,7 @@ class Controller: response = { "status":400, "result":{ - "message":"Cannot connect to Lollama server", + "message":"Cannot connect to ollama server", "data": False } } @@ -1966,15 +1966,15 @@ class Controller: } return response - def getTranslatorLOllamaModelList(self, *args, **kwargs) -> dict: + def getTranslatorOllamaModelList(self, *args, **kwargs) -> dict: model_list = model.getTranslatorOllamaModelList() return {"status":200, "result": model_list} - def getTranslatorLOllamaModel(self, *args, **kwargs) -> dict: + def getTranslatorOllamaModel(self, *args, **kwargs) -> dict: return {"status":200, "result":config.SELECTED_OLLAMA_MODEL} - def setTranslatorLOllamaModel(self, data, *args, **kwargs) -> dict: - printLog("Set Translator Lollama Model", data) + def setTranslatorOllamaModel(self, data, *args, **kwargs) -> dict: + printLog("Set Translator Ollama Model", data) try: data = str(data) result = model.setTranslatorOllamaModel(model=data) @@ -1985,7 +1985,7 @@ class Controller: response = { "status":400, "result":{ - "message":"Lollama model is not valid", + "message":"ollama model is not valid", "data": config.SELECTED_OLLAMA_MODEL } } diff --git a/src-python/mainloop.py b/src-python/mainloop.py index e5dbc735..4e77104b 100644 --- a/src-python/mainloop.py +++ b/src-python/mainloop.py @@ -57,6 +57,10 @@ run_mapping = { "selected_gemini_model":"/run/selected_gemini_model", "selectable_openai_model_list":"/run/selectable_openai_model_list", "selected_openai_model":"/run/selected_openai_model", + "selectable_lmstudio_model_list":"/run/selectable_lmstudio_model_list", + "selected_lmstudio_model":"/run/selected_lmstudio_model", + "selectable_ollama_model_list":"/run/selectable_ollama_model_list", + "selected_ollama_model":"/run/selected_ollama_model", "mic_host_list":"/run/mic_host_list", "mic_device_list":"/run/mic_device_list", @@ -202,6 +206,17 @@ mapping = { "/set/data/openai_auth_key": {"status": True, "variable":controller.setOpenAIAuthKey}, "/delete/data/openai_auth_key": {"status": True, "variable":controller.delOpenAIAuthKey}, + "/get/data/lmstudio_model_list": {"status": True, "variable":controller.getTranslatorLStudioModelList}, + "/get/data/lmstudio_model": {"status": True, "variable":controller.getTranslatorLMStudioModel}, + "/set/data/lmstudio_model": {"status": True, "variable":controller.setTranslatorLMStudioModel}, + "/get/data/lmstudio_url": {"status": True, "variable":controller.getTranslatorLMStudioURL}, + "/set/data/lmstudio_url": {"status": True, "variable":controller.setTranslatorLMStudioURL}, + + "/get/data/ollama_connection": {"status": True, "variable":controller.checkTranslatorOllamaConnection}, + "/get/data/ollama_model_list": {"status": True, "variable":controller.getTranslatorOllamaModelList}, + "/get/data/ollama_model": {"status": True, "variable":controller.getTranslatorOllamaModel}, + "/set/data/ollama_model": {"status": True, "variable":controller.setTranslatorOllamaModel}, + "/get/data/convert_message_to_romaji": {"status": True, "variable":controller.getConvertMessageToRomaji}, "/set/enable/convert_message_to_romaji": {"status": True, "variable":controller.setEnableConvertMessageToRomaji}, "/set/disable/convert_message_to_romaji": {"status": True, "variable":controller.setDisableConvertMessageToRomaji}, diff --git a/src-python/models/translation/prompt/translation_gemini.yml b/src-python/models/translation/prompt/translation_gemini.yml index 8c7b56fc..8dbe4927 100644 --- a/src-python/models/translation/prompt/translation_gemini.yml +++ b/src-python/models/translation/prompt/translation_gemini.yml @@ -2,47 +2,6 @@ system_prompt: | You are a helpful translation assistant. Supported languages: {supported_languages} - - Translate the user provided text from {input_lang} to {output_lang}. - Return ONLY the translated text. Do not add quotes or extra commentary. -supported_languages: | - Arabic - 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 + Translate the user provided text from {input_lang} to {output_lang}. + Return ONLY the translated text. Do not add quotes or extra commentary. \ No newline at end of file diff --git a/src-python/models/translation/prompt/translation_lmstudio.yml b/src-python/models/translation/prompt/translation_lmstudio.yml index 8c7b56fc..8dbe4927 100644 --- a/src-python/models/translation/prompt/translation_lmstudio.yml +++ b/src-python/models/translation/prompt/translation_lmstudio.yml @@ -2,47 +2,6 @@ system_prompt: | You are a helpful translation assistant. Supported languages: {supported_languages} - - Translate the user provided text from {input_lang} to {output_lang}. - Return ONLY the translated text. Do not add quotes or extra commentary. -supported_languages: | - Arabic - 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 + Translate the user provided text from {input_lang} to {output_lang}. + Return ONLY the translated text. Do not add quotes or extra commentary. \ No newline at end of file diff --git a/src-python/models/translation/prompt/translation_ollama.yml b/src-python/models/translation/prompt/translation_ollama.yml index 8c7b56fc..8dbe4927 100644 --- a/src-python/models/translation/prompt/translation_ollama.yml +++ b/src-python/models/translation/prompt/translation_ollama.yml @@ -2,47 +2,6 @@ system_prompt: | You are a helpful translation assistant. Supported languages: {supported_languages} - - Translate the user provided text from {input_lang} to {output_lang}. - Return ONLY the translated text. Do not add quotes or extra commentary. -supported_languages: | - Arabic - 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 + Translate the user provided text from {input_lang} to {output_lang}. + Return ONLY the translated text. Do not add quotes or extra commentary. \ No newline at end of file diff --git a/src-python/models/translation/prompt/translation_openai.yml b/src-python/models/translation/prompt/translation_openai.yml index 802d0b1d..8dbe4927 100644 --- a/src-python/models/translation/prompt/translation_openai.yml +++ b/src-python/models/translation/prompt/translation_openai.yml @@ -4,46 +4,4 @@ system_prompt: | {supported_languages} Translate the user provided text from {input_lang} to {output_lang}. - Return ONLY the translated text. Do not add quotes or extra commentary. - -supported_languages: | - Arabic - Bengali - Bulgarian - Catalan - Chinese Simplified - Chinese Traditional - 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 + Return ONLY the translated text. Do not add quotes or extra commentary. \ No newline at end of file diff --git a/src-python/models/translation/prompt/translation_plamo.yml b/src-python/models/translation/prompt/translation_plamo.yml index cdb0b478..c0afe533 100644 --- a/src-python/models/translation/prompt/translation_plamo.yml +++ b/src-python/models/translation/prompt/translation_plamo.yml @@ -2,38 +2,6 @@ system_prompt: | You are a translation assistant that uses the `plamo-translate` tool. Translate the following text.Supported languages include: {supported_languages} - - Translate the following text from {input_lang} to {output_lang}. - output only the translated text without any additional commentary. -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 - Simplified Chinese - Traditional Chinese + Translate the following text from {input_lang} to {output_lang}. + output only the translated text without any additional commentary. \ No newline at end of file diff --git a/src-python/models/translation/translation_gemini.py b/src-python/models/translation/translation_gemini.py index fd20c941..1c8a0161 100644 --- a/src-python/models/translation/translation_gemini.py +++ b/src-python/models/translation/translation_gemini.py @@ -3,12 +3,14 @@ from google import genai from langchain_google_genai import ChatGoogleGenerativeAI try: + from .translation_languages import translation_lang from .translation_utils import loadPromptConfig except Exception: import sys from os import path as os_path print(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__))))) sys.path.append(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__))))) + from translation_languages import translation_lang from translation_utils import loadPromptConfig logger = logging.getLogger("langchain_google_genai") @@ -56,7 +58,7 @@ class GeminiClient: # プロンプト設定をYAMLファイルから読み込む prompt_config = loadPromptConfig(root_path, "translation_gemini.yml") - self.supported_languages = prompt_config["supported_languages"] + self.supported_languages = list(translation_lang["Gemini_API"]["source"].keys()) self.prompt_template = prompt_config["system_prompt"] self.gemini_llm = None diff --git a/src-python/models/translation/translation_lmstudio.py b/src-python/models/translation/translation_lmstudio.py index 1827d887..34319075 100644 --- a/src-python/models/translation/translation_lmstudio.py +++ b/src-python/models/translation/translation_lmstudio.py @@ -3,11 +3,13 @@ from langchain_openai import ChatOpenAI from pydantic import SecretStr try: + from .translation_languages import translation_lang from .translation_utils import loadPromptConfig except Exception: import sys from os import path as os_path sys.path.append(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__))))) + from translation_languages import translation_lang from translation_utils import loadPromptConfig def _authentication_check(api_key: str, base_url: str | None = None) -> bool: @@ -43,7 +45,7 @@ class LMStudioClient: self.base_url = base_url # None の場合は公式エンドポイント prompt_config = loadPromptConfig(root_path, "translation_lmstudio.yml") - self.supported_languages = prompt_config["supported_languages"] + self.supported_languages = list(translation_lang["LMStudio"]["source"].keys()) self.prompt_template = prompt_config["system_prompt"] self.openai_llm = None diff --git a/src-python/models/translation/translation_ollama.py b/src-python/models/translation/translation_ollama.py index 7e5b5468..2d56aaee 100644 --- a/src-python/models/translation/translation_ollama.py +++ b/src-python/models/translation/translation_ollama.py @@ -2,11 +2,13 @@ import requests from langchain_ollama import ChatOllama try: + from .translation_languages import translation_lang from .translation_utils import loadPromptConfig except Exception: import sys from os import path as os_path sys.path.append(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__))))) + from translation_languages import translation_lang from translation_utils import loadPromptConfig def _authentication_check(base_url: str | None = None) -> bool: @@ -43,7 +45,7 @@ class OllamaClient: self.base_url = "http://localhost:11434" prompt_config = loadPromptConfig(root_path, "translation_ollama.yml") - self.supported_languages = prompt_config["supported_languages"] + self.supported_languages = list(translation_lang["Ollama"]["source"].keys()) self.prompt_template = prompt_config["system_prompt"] self.openai_llm = None diff --git a/src-python/models/translation/translation_openai.py b/src-python/models/translation/translation_openai.py index 2741702e..b7115e51 100644 --- a/src-python/models/translation/translation_openai.py +++ b/src-python/models/translation/translation_openai.py @@ -3,11 +3,13 @@ from langchain_openai import ChatOpenAI from pydantic import SecretStr try: + from .translation_languages import translation_lang from .translation_utils import loadPromptConfig except Exception: import sys from os import path as os_path sys.path.append(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__))))) + from translation_languages import translation_lang from translation_utils import loadPromptConfig def _authentication_check(api_key: str, base_url: str | None = None) -> bool: @@ -67,7 +69,7 @@ class OpenAIClient: self.base_url = base_url # None の場合は公式エンドポイント prompt_config = loadPromptConfig(root_path, "translation_openai.yml") - self.supported_languages = prompt_config["supported_languages"] + self.supported_languages = list(translation_lang["OpenAI_API"]["source"].keys()) self.prompt_template = prompt_config["system_prompt"] self.openai_llm = None diff --git a/src-python/models/translation/translation_plamo.py b/src-python/models/translation/translation_plamo.py index 112a962b..ea54fd61 100644 --- a/src-python/models/translation/translation_plamo.py +++ b/src-python/models/translation/translation_plamo.py @@ -3,11 +3,13 @@ from langchain_openai import ChatOpenAI from pydantic import SecretStr try: + from .translation_languages import translation_lang from .translation_utils import loadPromptConfig except Exception: import sys from os import path as os_path sys.path.append(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__))))) + from translation_languages import translation_lang from translation_utils import loadPromptConfig BASE_URL = "https://api.platform.preferredai.jp/v1" @@ -42,7 +44,7 @@ class PlamoClient: self.model = None prompt_config = loadPromptConfig(root_path, "translation_plamo.yml") - self.supported_languages = prompt_config["supported_languages"] + self.supported_languages = list(translation_lang["Plamo_API"]["source"].keys()) self.prompt_template = prompt_config["system_prompt"] self.plamo_llm = None