Refactor translation settings and prompts
- Updated paths for translation settings in backend.spec and backend_cuda.spec to reflect new directory structure. - Renamed loadPromptConfig to loadTranslatePromptConfig in translation utility files for consistency. - Created new YAML files for translation prompts (gemini, groq, lmstudio, ollama, openai, openrouter, plamo) with standardized system prompts. - Added languages.yml file to define language mappings for various translation backends.
This commit is contained in:
@@ -7,8 +7,8 @@ a = Analysis(
|
|||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[
|
datas=[
|
||||||
('./../src-python/models/overlay/fonts', 'fonts/'),
|
('./../src-python/models/overlay/fonts', 'fonts/'),
|
||||||
('./../src-python/models/translation/prompt', 'prompt/'),
|
('./../src-python/models/translation/translation_settings/prompt', 'translation_settings/prompt/'),
|
||||||
('./../src-python/models/translation/languages', 'languages/'),
|
('./../src-python/models/translation/translation_settings/languages', 'translation_settings/languages/'),
|
||||||
('./../.venv/Lib/site-packages/zeroconf', 'zeroconf/'),
|
('./../.venv/Lib/site-packages/zeroconf', 'zeroconf/'),
|
||||||
('./../.venv/Lib/site-packages/openvr', 'openvr/'),
|
('./../.venv/Lib/site-packages/openvr', 'openvr/'),
|
||||||
('./../.venv/Lib/site-packages/faster_whisper', 'faster_whisper/'),
|
('./../.venv/Lib/site-packages/faster_whisper', 'faster_whisper/'),
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ a = Analysis(
|
|||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[
|
datas=[
|
||||||
('./../src-python/models/overlay/fonts', 'fonts/'),
|
('./../src-python/models/overlay/fonts', 'fonts/'),
|
||||||
('./../src-python/models/translation/prompt', 'prompt/'),
|
('./../src-python/models/translation/translation_settings/prompt', 'prompt/'),
|
||||||
('./../src-python/models/translation/languages', 'languages/'),
|
('./../src-python/models/translation/translation_settings/languages', 'languages/'),
|
||||||
('./../.venv_cuda/Lib/site-packages/zeroconf', 'zeroconf/'),
|
('./../.venv_cuda/Lib/site-packages/zeroconf', 'zeroconf/'),
|
||||||
('./../.venv_cuda/Lib/site-packages/openvr', 'openvr/'),
|
('./../.venv_cuda/Lib/site-packages/openvr', 'openvr/'),
|
||||||
('./../.venv_cuda/Lib/site-packages/faster_whisper', 'faster_whisper/'),
|
('./../.venv_cuda/Lib/site-packages/faster_whisper', 'faster_whisper/'),
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ from langchain_google_genai import ChatGoogleGenerativeAI
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
print(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__)))))
|
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__)))))
|
sys.path.append(os_path.dirname(os_path.dirname(os_path.dirname(os_path.abspath(__file__)))))
|
||||||
from translation_languages import translation_lang
|
from translation_languages import translation_lang
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
|
|
||||||
logger = logging.getLogger("langchain_google_genai")
|
logger = logging.getLogger("langchain_google_genai")
|
||||||
logger.setLevel(logging.ERROR)
|
logger.setLevel(logging.ERROR)
|
||||||
@@ -57,7 +57,7 @@ class GeminiClient:
|
|||||||
self.model = None
|
self.model = None
|
||||||
|
|
||||||
# プロンプト設定をYAMLファイルから読み込む
|
# プロンプト設定をYAMLファイルから読み込む
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_gemini.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_gemini.yml")
|
||||||
self.supported_languages = list(translation_lang["Gemini_API"]["source"].keys())
|
self.supported_languages = list(translation_lang["Gemini_API"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
sys.path.append(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, loadTranslationLanguages
|
from translation_languages import translation_lang, loadTranslationLanguages
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||||
|
|
||||||
def _authentication_check(api_key: str) -> bool:
|
def _authentication_check(api_key: str) -> bool:
|
||||||
@@ -73,7 +73,7 @@ class GroqClient:
|
|||||||
self.model = None
|
self.model = None
|
||||||
self.base_url = "https://api.groq.com/openai/v1"
|
self.base_url = "https://api.groq.com/openai/v1"
|
||||||
|
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_groq.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_groq.yml")
|
||||||
self.supported_languages = list(translation_lang["Groq_API"]["source"].keys())
|
self.supported_languages = list(translation_lang["Groq_API"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -41,14 +41,14 @@ def _load_languages(path: str, filename: str) -> str:
|
|||||||
Returns:
|
Returns:
|
||||||
Absolute path to the resource file
|
Absolute path to the resource file
|
||||||
"""
|
"""
|
||||||
if os.path.exists(os.path.join(path, "_internal", "languages", "languages.yml")):
|
if os.path.exists(os.path.join(path, "_internal", "translation_settings", "languages", filename)):
|
||||||
languages_path = os.path.join(path, "_internal", "languages", "languages.yml")
|
languages_path = os.path.join(path, "_internal", "translation_settings", "languages", filename)
|
||||||
elif os.path.exists(os.path.join(os.path.dirname(os.path.abspath(__file__)), "models", "translation", "languages", "languages.yml")):
|
elif os.path.exists(os.path.join(os.path.dirname(os.path.abspath(__file__)), "models", "translation", "translation_settings", "languages", filename)):
|
||||||
languages_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "models", "translation", "languages", "languages.yml")
|
languages_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "models", "translation", "translation_settings", "languages", filename)
|
||||||
elif os.path.exists(os.path.join(os.path.dirname(os.path.abspath(__file__)), "languages", "languages.yml")):
|
elif os.path.exists(os.path.join(os.path.dirname(os.path.abspath(__file__)), "translation_settings", "languages", filename)):
|
||||||
languages_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "languages", "languages.yml")
|
languages_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "translation_settings", "languages", filename)
|
||||||
else:
|
else:
|
||||||
raise FileNotFoundError(f"Prompt file not found: {filename}")
|
raise FileNotFoundError(f"Languages file not found: {filename}")
|
||||||
with open(languages_path, "r", encoding="utf-8") as f:
|
with open(languages_path, "r", encoding="utf-8") as f:
|
||||||
return yaml.safe_load(f)
|
return yaml.safe_load(f)
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ def loadTranslationLanguages(path: str, force: bool = False) -> Dict[str, Any]:
|
|||||||
if _loaded and not force:
|
if _loaded and not force:
|
||||||
return translation_lang
|
return translation_lang
|
||||||
|
|
||||||
data = _load_languages(path, "languages/languages.yml")
|
data = _load_languages(path, "languages.yml")
|
||||||
|
|
||||||
if not isinstance(data, dict):
|
if not isinstance(data, dict):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ import requests
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
sys.path.append(os_path.dirname(os_path.abspath(__file__)))
|
sys.path.append(os_path.dirname(os_path.abspath(__file__)))
|
||||||
from translation_languages import translation_lang, loadTranslationLanguages
|
from translation_languages import translation_lang, loadTranslationLanguages
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||||
|
|
||||||
def _authentication_check(base_url: str | None = None) -> bool:
|
def _authentication_check(base_url: str | None = None) -> bool:
|
||||||
@@ -50,7 +50,7 @@ class LMStudioClient:
|
|||||||
self.model = None
|
self.model = None
|
||||||
self.base_url = base_url # None の場合は公式エンドポイント
|
self.base_url = base_url # None の場合は公式エンドポイント
|
||||||
|
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_lmstudio.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_lmstudio.yml")
|
||||||
self.supported_languages = list(translation_lang["LMStudio"]["source"].keys())
|
self.supported_languages = list(translation_lang["LMStudio"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ from langchain_ollama import ChatOllama
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
sys.path.append(os_path.dirname(os_path.abspath(__file__)))
|
sys.path.append(os_path.dirname(os_path.abspath(__file__)))
|
||||||
from translation_languages import translation_lang, loadTranslationLanguages
|
from translation_languages import translation_lang, loadTranslationLanguages
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||||
|
|
||||||
def _authentication_check(base_url: str | None = None) -> bool:
|
def _authentication_check(base_url: str | None = None) -> bool:
|
||||||
@@ -48,7 +48,7 @@ class OllamaClient:
|
|||||||
self.model = None
|
self.model = None
|
||||||
self.base_url = "http://localhost:11434"
|
self.base_url = "http://localhost:11434"
|
||||||
|
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_ollama.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_ollama.yml")
|
||||||
self.supported_languages = list(translation_lang["Ollama"]["source"].keys())
|
self.supported_languages = list(translation_lang["Ollama"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
sys.path.append(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, loadTranslationLanguages
|
from translation_languages import translation_lang, loadTranslationLanguages
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||||
|
|
||||||
def _authentication_check(api_key: str, base_url: str | None = None) -> bool:
|
def _authentication_check(api_key: str, base_url: str | None = None) -> bool:
|
||||||
@@ -69,7 +69,7 @@ class OpenAIClient:
|
|||||||
self.model = None
|
self.model = None
|
||||||
self.base_url = base_url # None の場合は公式エンドポイント
|
self.base_url = base_url # None の場合は公式エンドポイント
|
||||||
|
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_openai.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_openai.yml")
|
||||||
self.supported_languages = list(translation_lang["OpenAI_API"]["source"].keys())
|
self.supported_languages = list(translation_lang["OpenAI_API"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
sys.path.append(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, loadTranslationLanguages
|
from translation_languages import translation_lang, loadTranslationLanguages
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||||
|
|
||||||
def _authentication_check(api_key: str) -> bool:
|
def _authentication_check(api_key: str) -> bool:
|
||||||
@@ -73,7 +73,7 @@ class OpenRouterClient:
|
|||||||
self.model = None
|
self.model = None
|
||||||
self.base_url = "https://openrouter.ai/api/v1"
|
self.base_url = "https://openrouter.ai/api/v1"
|
||||||
|
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_openrouter.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_openrouter.yml")
|
||||||
self.supported_languages = list(translation_lang["OpenRouter_API"]["source"].keys())
|
self.supported_languages = list(translation_lang["OpenRouter_API"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from .translation_languages import translation_lang
|
from .translation_languages import translation_lang
|
||||||
from .translation_utils import loadPromptConfig
|
from .translation_utils import loadTranslatePromptConfig
|
||||||
except Exception:
|
except Exception:
|
||||||
import sys
|
import sys
|
||||||
from os import path as os_path
|
from os import path as os_path
|
||||||
sys.path.append(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, loadTranslationLanguages
|
from translation_languages import translation_lang, loadTranslationLanguages
|
||||||
from translation_utils import loadPromptConfig
|
from translation_utils import loadTranslatePromptConfig
|
||||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||||
|
|
||||||
BASE_URL = "https://api.platform.preferredai.jp/v1"
|
BASE_URL = "https://api.platform.preferredai.jp/v1"
|
||||||
@@ -44,7 +44,7 @@ class PlamoClient:
|
|||||||
self.base_url = BASE_URL
|
self.base_url = BASE_URL
|
||||||
self.model = None
|
self.model = None
|
||||||
|
|
||||||
prompt_config = loadPromptConfig(root_path, "translation_plamo.yml")
|
prompt_config = loadTranslatePromptConfig(root_path, "translation_plamo.yml")
|
||||||
self.supported_languages = list(translation_lang["Plamo_API"]["source"].keys())
|
self.supported_languages = list(translation_lang["Plamo_API"]["source"].keys())
|
||||||
self.prompt_template = prompt_config["system_prompt"]
|
self.prompt_template = prompt_config["system_prompt"]
|
||||||
|
|
||||||
|
|||||||
@@ -101,16 +101,16 @@ def downloadCTranslate2Tokenizer(path: str, weight_type: str = "m2m100_418M-ct2-
|
|||||||
tokenizer_path = os_path.join("./weights", "ctranslate2", directory_name, "tokenizer")
|
tokenizer_path = os_path.join("./weights", "ctranslate2", directory_name, "tokenizer")
|
||||||
transformers.AutoTokenizer.from_pretrained(tokenizer, cache_dir=tokenizer_path)
|
transformers.AutoTokenizer.from_pretrained(tokenizer, cache_dir=tokenizer_path)
|
||||||
|
|
||||||
def loadPromptConfig(root_path: str | None = None, prompt_filename: str | None = None) -> dict:
|
def loadTranslatePromptConfig(root_path: str | None = None, prompt_filename: str | None = None) -> dict:
|
||||||
# PyInstaller 展開後
|
# PyInstaller 展開後
|
||||||
if root_path and prompt_filename and os_path.exists(os_path.join(root_path, "_internal", "prompt", prompt_filename)):
|
if root_path and prompt_filename and os_path.exists(os_path.join(root_path, "_internal", "translation_settings", "prompt", prompt_filename)):
|
||||||
prompt_path = os_path.join(root_path, "_internal", "prompt", prompt_filename)
|
prompt_path = os_path.join(root_path, "_internal", "translation_settings", "prompt", prompt_filename)
|
||||||
# src-python 直下実行
|
# src-python 直下実行
|
||||||
elif prompt_filename and os_path.exists(os_path.join(os_path.dirname(__file__), "models", "translation", "prompt", prompt_filename)):
|
elif prompt_filename and os_path.exists(os_path.join(os_path.dirname(__file__), "models", "translation", "translation_settings", "prompt", prompt_filename)):
|
||||||
prompt_path = os_path.join(os_path.dirname(__file__), "models", "translation", "prompt", prompt_filename)
|
prompt_path = os_path.join(os_path.dirname(__file__), "models", "translation", "translation_settings", "prompt", prompt_filename)
|
||||||
# translation フォルダ直下実行
|
# translation フォルダ直下実行
|
||||||
elif prompt_filename and os_path.exists(os_path.join(os_path.dirname(__file__), "prompt", prompt_filename)):
|
elif prompt_filename and os_path.exists(os_path.join(os_path.dirname(__file__), "translation_settings", "prompt", prompt_filename)):
|
||||||
prompt_path = os_path.join(os_path.dirname(__file__), "prompt", prompt_filename)
|
prompt_path = os_path.join(os_path.dirname(__file__), "translation_settings", "prompt", prompt_filename)
|
||||||
else:
|
else:
|
||||||
raise FileNotFoundError(f"Prompt file not found: {prompt_filename}")
|
raise FileNotFoundError(f"Prompt file not found: {prompt_filename}")
|
||||||
with open(prompt_path, "r", encoding="utf-8") as f:
|
with open(prompt_path, "r", encoding="utf-8") as f:
|
||||||
|
|||||||
Reference in New Issue
Block a user