Files
VRCT/src-python/docs/details/translation_ollama.md

3.7 KiB

translation_ollama.py - Ollama ローカル LLM 翻訳クライアント

概要

Ollama サーバー上で稼働するローカル LLM を翻訳エンジンとして扱うためのクライアントラッパー。モデル一覧取得・モデル選択・翻訳実行を統一パターンで提供する。

最近の更新 (2025-12-30)

  • 接続失敗時のエラーハンドリング改善
    • /api/ping への疎通確認失敗時にモデルリストをクリア (SELECTABLE_OLLAMA_MODEL_LIST = [])
    • 選択モデルをクリア (SELECTED_OLLAMA_MODEL = None)
    • SELECTABLE_TRANSLATION_ENGINE_STATUS["Ollama"] を False に設定
    • フロントエンドに通知して UI を同期

最近の更新 (2025-10-20)

  • 新規追加: Ollama を翻訳エンジン群へ統合
  • /api/ping を用いた疎通確認による簡易認証
  • /api/tags から利用可能モデル一覧抽出・ソート
  • YAML (prompt/translation_ollama.yml) からシステムプロンプト (system_prompt) と対応言語をロード

影響

項目 内容
拡張性 LAN 内ローカル推論を利用可能
可搬性 GPU/CPU 任意構成の Ollama 環境に適応
一貫性 他翻訳クライアント (OpenAI/Gemini/Plamo/LMStudio) と統一 API

責務

  • Ollama インスタンスへの接続確認
  • モデル一覧取得 (タグ列挙) とソート
  • 選択モデルの検証と内部保持
  • LangChain ChatOllama インスタンス生成
  • システムプロンプトとユーザ入力を組み立てて翻訳実行

公開API (メソッド)

class OllamaClient:
    def __init__(root_path: str = None)
    def authenticationCheck() -> bool
    def getModelList() -> list[str]
    def getModel() -> str | None
    def setModel(model: str) -> bool
    def updateClient() -> None
    def translate(text: str, input_lang: str, output_lang: str) -> str

メソッド詳細

  • authenticationCheck: /api/ping が 200 を返すかで利用可否判定
  • getModelList: 認証成功時のみ /api/tags 結果から name 抽出
  • setModel: 取得済みモデル一覧内に存在する場合のみ設定
  • updateClient: ChatOllama を最新モデルで再生成
  • translate: system / user メッセージを LLM へ送信し結合結果を正規化

使用例

client = OllamaClient()
if client.authenticationCheck():
    models = client.getModelList()
    if models:
        client.setModel(models[0])
        client.updateClient()
        translated = client.translate("こんにちは世界", "Japanese", "English")
        print(translated)

依存関係

  • requests: Ping/タグ API 呼び出し
  • langchain_ollama.ChatOllama: LangChain LLM ラッパー
  • translation_languages.translation_lang: 対応言語集合
  • translation_utils.loadPromptConfig: プロンプト YAML ロード

注意事項

  • サーバー既定 URL: http://localhost:11434
  • モデル一覧取得は起動しているローカルサーバー状態に依存
  • updateClient() 呼び出し前は translate() を利用不可
  • 接続失敗時の自動処理:
    • /api/ping への疎通確認が失敗すると、自動的にモデルリストと選択モデルがクリアされる
    • SELECTABLE_TRANSLATION_ENGINE_STATUS["Ollama"] が False に設定され、エンジンが使用不可状態になる
    • Controller が自動的にフロントエンドに状態変化を通知

制限事項

  • ストリーミング未対応 (streaming=False)
  • エラー詳細は包括的に扱わない (上位層でフォールバック)

関連ドキュメント

  • details/translation_translator.md
  • details/translation_languages.md