4.0 KiB
4.0 KiB
translation_lmstudio.py - LMStudio ローカル LLM 翻訳クライアント
概要
LMStudio 互換 OpenAI API を利用したローカル LLM 翻訳クライアントラッパー。モデル一覧取得・モデル選択・翻訳処理を統一インターフェースで提供する。
最近の更新 (2025-12-30)
- 接続失敗時のエラーハンドリング改善
- URL への疎通確認失敗時にモデルリストをクリア (
SELECTABLE_LMSTUDIO_MODEL_LIST = []) - 選択モデルをクリア (
SELECTED_LMSTUDIO_MODEL = None) SELECTABLE_TRANSLATION_ENGINE_STATUS["LMStudio"]を False に設定- フロントエンドに通知して UI を同期
- URL への疎通確認失敗時にモデルリストをクリア (
最近の更新 (2025-10-20)
- 新規追加: ローカル LLM (LMStudio) を翻訳エンジン群へ統合
getModelList()により現在起動中インスタンスから利用可能モデルを取得setModel()成功時にupdateClient()を呼ぶことで LangChainChatOpenAIを再構築- YAML (
prompt/translation_lmstudio.yml) からシステムプロンプト (system_prompt) と対応言語をロード
影響
| 項目 | 内容 |
|---|---|
| 拡張性 | ネットワーク不要のローカル推論を利用可能 |
| 一貫性 | 他 API クライアント (OpenAI/Plamo/Gemini/Ollama) と同一メソッド構成 |
| 保守性 | 翻訳ロジックを共通フォーマットへ集約 |
責務
- LMStudio エンドポイントへの疎通確認 (認証代替)
- 利用可能モデル一覧の収集とソート
- 選択モデルの検証と内部保持
- LangChain ラッパーインスタンス生成
- システムプロンプトによる指示付き翻訳実行
公開API (メソッド)
class LMStudioClient:
def __init__(base_url: str | None = None, root_path: str = None)
def getBaseURL() -> str | None
def setBaseURL(base_url: str | None) -> 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
メソッド詳細
setBaseURL: 疎通確認 (_authentication_check) に成功した場合のみ内部更新getModelList:OpenAIクライアントで/modelsを列挙し id を抽出setModel:getModelList内のモデル名のみ受理updateClient:ChatOpenAIインスタンスを最新モデルで再生成translate: システム / ユーザメッセージで LLM へ問い合わせし文字列レスポンスを正規化
使用例
client = LMStudioClient(base_url="http://localhost:1234/v1")
models = client.getModelList()
if models:
client.setModel(models[0])
client.updateClient()
translated = client.translate("こんにちは世界", "Japanese", "English")
print(translated)
依存関係
openai.OpenAI: LMStudio OpenAI 互換 API 呼び出しlangchain_openai.ChatOpenAI: LangChain 抽象化translation_languages.translation_lang: 対応言語集合translation_utils.loadPromptConfig: プロンプト YAML ロード
注意事項
api_keyは固定文字列 "lmstudio" (LMStudio 側で不要のため) を利用- モデル一覧取得はエンドポイントの互換性に依存 (古いバージョン非対応の可能性)
updateClient()呼び出し前はtranslate()を利用できない- 接続失敗時の自動処理:
- URL への疎通確認(接続テスト)が失敗すると、自動的にモデルリストと選択モデルがクリアされる
SELECTABLE_TRANSLATION_ENGINE_STATUS["LMStudio"]が False に設定され、エンジンが使用不可状態になる- Controller が自動的にフロントエンドに状態変化を通知
制限事項
- ストリーミング未対応 (streaming=False)
- エラーハンドリングは包括的ではなく詳細原因は上位層で処理必要
関連ドキュメント
details/translation_translator.mddetails/translation_languages.md