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=[],
|
||||
datas=[
|
||||
('./../src-python/models/overlay/fonts', 'fonts/'),
|
||||
('./../src-python/models/translation/prompt', 'prompt/'),
|
||||
('./../src-python/models/translation/languages', 'languages/'),
|
||||
('./../src-python/models/translation/translation_settings/prompt', 'translation_settings/prompt/'),
|
||||
('./../src-python/models/translation/translation_settings/languages', 'translation_settings/languages/'),
|
||||
('./../.venv/Lib/site-packages/zeroconf', 'zeroconf/'),
|
||||
('./../.venv/Lib/site-packages/openvr', 'openvr/'),
|
||||
('./../.venv/Lib/site-packages/faster_whisper', 'faster_whisper/'),
|
||||
|
||||
@@ -7,8 +7,8 @@ a = Analysis(
|
||||
binaries=[],
|
||||
datas=[
|
||||
('./../src-python/models/overlay/fonts', 'fonts/'),
|
||||
('./../src-python/models/translation/prompt', 'prompt/'),
|
||||
('./../src-python/models/translation/languages', 'languages/'),
|
||||
('./../src-python/models/translation/translation_settings/prompt', 'prompt/'),
|
||||
('./../src-python/models/translation/translation_settings/languages', 'languages/'),
|
||||
('./../.venv_cuda/Lib/site-packages/zeroconf', 'zeroconf/'),
|
||||
('./../.venv_cuda/Lib/site-packages/openvr', 'openvr/'),
|
||||
('./../.venv_cuda/Lib/site-packages/faster_whisper', 'faster_whisper/'),
|
||||
|
||||
@@ -4,14 +4,14 @@ from langchain_google_genai import ChatGoogleGenerativeAI
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
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
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
|
||||
logger = logging.getLogger("langchain_google_genai")
|
||||
logger.setLevel(logging.ERROR)
|
||||
@@ -57,7 +57,7 @@ class GeminiClient:
|
||||
self.model = None
|
||||
|
||||
# プロンプト設定を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.prompt_template = prompt_config["system_prompt"]
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
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, loadTranslationLanguages
|
||||
from translation_utils import loadPromptConfig
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||
|
||||
def _authentication_check(api_key: str) -> bool:
|
||||
@@ -73,7 +73,7 @@ class GroqClient:
|
||||
self.model = None
|
||||
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.prompt_template = prompt_config["system_prompt"]
|
||||
|
||||
|
||||
@@ -41,14 +41,14 @@ def _load_languages(path: str, filename: str) -> str:
|
||||
Returns:
|
||||
Absolute path to the resource file
|
||||
"""
|
||||
if os.path.exists(os.path.join(path, "_internal", "languages", "languages.yml")):
|
||||
languages_path = os.path.join(path, "_internal", "languages", "languages.yml")
|
||||
elif os.path.exists(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", "languages", "languages.yml")
|
||||
elif os.path.exists(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__)), "languages", "languages.yml")
|
||||
if os.path.exists(os.path.join(path, "_internal", "translation_settings", "languages", filename)):
|
||||
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", "translation_settings", "languages", filename)):
|
||||
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__)), "translation_settings", "languages", filename)):
|
||||
languages_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "translation_settings", "languages", filename)
|
||||
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:
|
||||
return yaml.safe_load(f)
|
||||
|
||||
@@ -99,7 +99,7 @@ def loadTranslationLanguages(path: str, force: bool = False) -> Dict[str, Any]:
|
||||
if _loaded and not force:
|
||||
return translation_lang
|
||||
|
||||
data = _load_languages(path, "languages/languages.yml")
|
||||
data = _load_languages(path, "languages.yml")
|
||||
|
||||
if not isinstance(data, dict):
|
||||
raise ValueError(
|
||||
|
||||
@@ -4,13 +4,13 @@ import requests
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
except Exception:
|
||||
import sys
|
||||
from os import path as os_path
|
||||
sys.path.append(os_path.dirname(os_path.abspath(__file__)))
|
||||
from translation_languages import translation_lang, loadTranslationLanguages
|
||||
from translation_utils import loadPromptConfig
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||
|
||||
def _authentication_check(base_url: str | None = None) -> bool:
|
||||
@@ -50,7 +50,7 @@ class LMStudioClient:
|
||||
self.model = 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.prompt_template = prompt_config["system_prompt"]
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@ from langchain_ollama import ChatOllama
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
except Exception:
|
||||
import sys
|
||||
from os import path as os_path
|
||||
sys.path.append(os_path.dirname(os_path.abspath(__file__)))
|
||||
from translation_languages import translation_lang, loadTranslationLanguages
|
||||
from translation_utils import loadPromptConfig
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||
|
||||
def _authentication_check(base_url: str | None = None) -> bool:
|
||||
@@ -48,7 +48,7 @@ class OllamaClient:
|
||||
self.model = None
|
||||
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.prompt_template = prompt_config["system_prompt"]
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
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, loadTranslationLanguages
|
||||
from translation_utils import loadPromptConfig
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||
|
||||
def _authentication_check(api_key: str, base_url: str | None = None) -> bool:
|
||||
@@ -69,7 +69,7 @@ class OpenAIClient:
|
||||
self.model = 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.prompt_template = prompt_config["system_prompt"]
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
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, loadTranslationLanguages
|
||||
from translation_utils import loadPromptConfig
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||
|
||||
def _authentication_check(api_key: str) -> bool:
|
||||
@@ -73,7 +73,7 @@ class OpenRouterClient:
|
||||
self.model = None
|
||||
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.prompt_template = prompt_config["system_prompt"]
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@ from pydantic import SecretStr
|
||||
|
||||
try:
|
||||
from .translation_languages import translation_lang
|
||||
from .translation_utils import loadPromptConfig
|
||||
from .translation_utils import loadTranslatePromptConfig
|
||||
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, loadTranslationLanguages
|
||||
from translation_utils import loadPromptConfig
|
||||
from translation_utils import loadTranslatePromptConfig
|
||||
translation_lang = loadTranslationLanguages(path=".", force=True)
|
||||
|
||||
BASE_URL = "https://api.platform.preferredai.jp/v1"
|
||||
@@ -44,7 +44,7 @@ class PlamoClient:
|
||||
self.base_url = BASE_URL
|
||||
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.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")
|
||||
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 展開後
|
||||
if root_path and prompt_filename and os_path.exists(os_path.join(root_path, "_internal", "prompt", prompt_filename)):
|
||||
prompt_path = 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", "translation_settings", "prompt", prompt_filename)
|
||||
# src-python 直下実行
|
||||
elif prompt_filename and os_path.exists(os_path.join(os_path.dirname(__file__), "models", "translation", "prompt", prompt_filename)):
|
||||
prompt_path = 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", "translation_settings", "prompt", prompt_filename)
|
||||
# translation フォルダ直下実行
|
||||
elif prompt_filename and os_path.exists(os_path.join(os_path.dirname(__file__), "prompt", prompt_filename)):
|
||||
prompt_path = 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__), "translation_settings", "prompt", prompt_filename)
|
||||
else:
|
||||
raise FileNotFoundError(f"Prompt file not found: {prompt_filename}")
|
||||
with open(prompt_path, "r", encoding="utf-8") as f:
|
||||
|
||||
Reference in New Issue
Block a user