- controller: model.authenticationTranslatorLMStudio 呼び出しに base_url=config.LMSTUDIO_URL を明示的に渡すよう修正(LMStudio 接続判定で設定 URL を利用) - docs: 新規ドキュメントを追加・更新 - 追加: translation_gemini.md, translation_lmstudio.md, translation_ollama.md, translation_openai.md, translation_plamo.md - 更新: config.md, controller.md, mainloop.md, model.md, overlay.md, translation_languages.md, translation_translator.md, 仕様書.md(翻訳/モデル管理・エンドポイント・YAML 言語定義・フォント探索・VRAM フォールバック等の記載追加) - ドキュメントに記載した主な変更点 - LMStudio / Ollama のローカルLLM統合(モデルリスト/選択用プロパティ追加、接続確認エンドポイント) - CTranslate2 の言語定義を weight_type ネスト構造へ変更対応 - 外部 YAML による言語マッピング導入(loadTranslationLanguages) - フォント探索を PyInstaller バンドル(_internal/fonts/) を考慮して強化 - 認証後のモデルリスト自動更新・SELECTED_* プロパティ名統一、VRAM エラー検知時の自動フォールバック等の動作説明追加 (コードの振る舞いは既存処理に合わせた引数指定の修正とドキュメント反映が主体)
88 lines
2.9 KiB
Markdown
88 lines
2.9 KiB
Markdown
# translation_gemini.py - Gemini 翻訳クライアント
|
|
|
|
## 概要
|
|
|
|
Google Gemini / Gemma 系モデルを翻訳用途で利用するためのクライアントラッパー。モデル一覧取得・認証・モデル選択・翻訳実行を統一インターフェースで提供する。
|
|
|
|
## 最近の更新 (2025-10-20)
|
|
|
|
- 新規追加: Gemini クライアント統合
|
|
- 除外キーワード (`audio`, `image`, `veo`, `tts`, `robotics`, `computer-use`) により非テキスト指向モデルをフィルタ
|
|
- `generateContent` をサポートするモデルのみ採用
|
|
- YAML (`prompt/translation_gemini.yml`) からシステムプロンプト (`system_prompt`) をロード
|
|
|
|
### 影響
|
|
|
|
| 項目 | 内容 |
|
|
|------|------|
|
|
| 正確性 | 非テキスト特化モデル除外で翻訳品質安定 |
|
|
| 保守性 | 明示的フィルタリングロジックで再利用容易 |
|
|
| 一貫性 | 他 LLM クライアントとの API 形状統一 |
|
|
|
|
## 責務
|
|
|
|
- API Key 認証確認
|
|
- Gemini/Gemma 系モデル列挙とフィルタリング
|
|
- モデル選択検証と内部保持
|
|
- LangChain `ChatGoogleGenerativeAI` インスタンス生成
|
|
- システムプロンプトによる翻訳実行
|
|
|
|
## 公開API (メソッド)
|
|
|
|
```python
|
|
class GeminiClient:
|
|
def __init__(root_path: str = None)
|
|
def getModelList() -> list[str]
|
|
def getAuthKey() -> str | None
|
|
def setAuthKey(api_key: str) -> bool
|
|
def getModel() -> str | None
|
|
def setModel(model: str) -> bool
|
|
def updateClient() -> None
|
|
def translate(text: str, input_lang: str, output_lang: str) -> str
|
|
```
|
|
|
|
### メソッド詳細
|
|
|
|
- `setAuthKey`: `_authentication_check` 成功時のみ内部保存
|
|
- `getModelList`: フィルタリング適用後ソート
|
|
- `setModel`: 取得済みモデル一覧内のみ受理
|
|
- `updateClient`: `ChatGoogleGenerativeAI` を再構築
|
|
- `translate`: システム + ユーザメッセージ構築→呼び出し→レスポンス正規化
|
|
|
|
## 使用例
|
|
|
|
```python
|
|
client = GeminiClient()
|
|
if client.setAuthKey("GEMINI_API_KEY"):
|
|
models = client.getModelList()
|
|
if models:
|
|
client.setModel(models[0])
|
|
client.updateClient()
|
|
result = client.translate("こんにちは世界", "Japanese", "English")
|
|
print(result)
|
|
```
|
|
|
|
## 依存関係
|
|
|
|
- `google.genai`: モデル列挙 / 認証
|
|
- `langchain_google_genai.ChatGoogleGenerativeAI`: LangChain ラッパー
|
|
- `translation_languages.translation_lang`: 対応言語集合
|
|
- `translation_utils.loadPromptConfig`: プロンプト YAML ロード
|
|
|
|
## 注意事項
|
|
|
|
- 非テキスト向けモデル (画像/音声/ロボティクス等) は除外
|
|
- ストリーミング無効 (streaming=False)
|
|
- API Key 必須 (未設定時 getModelList 不可)
|
|
|
|
## 制限事項
|
|
|
|
- 詳細エラーを包括的に扱わない (上位層でロギング/フォールバック)
|
|
- 複雑レスポンス構造は単純文字列へ normalize のみ
|
|
|
|
## 関連ドキュメント
|
|
|
|
- `details/translation_translator.md`
|
|
- `details/translation_languages.md`
|
|
|