[Fix] Error Handling: Update setter methods to allow None values for type checks and enhance sensitive data handling in authentication failures.
This commit is contained in:
@@ -279,11 +279,21 @@ def SELECTED_TAB_NO(self, value):
|
||||
```
|
||||
|
||||
各setterは以下のパターンを実装:
|
||||
1. 型チェック (`isinstance`)
|
||||
1. 型チェック (`isinstance`):**`None` 値は常に許可される** (値をクリアしたい場合への対応)
|
||||
2. 値の範囲・有効性チェック
|
||||
3. 内部変数への代入
|
||||
4. `saveConfig` 呼び出し(永続化対象の場合)
|
||||
|
||||
#### 型チェックの詳細(v3.3.0+)
|
||||
|
||||
```python
|
||||
# 型チェック実装:Noneは常に許可
|
||||
if self.type_ is not None and value is not None and not isinstance(value, self.type_):
|
||||
return # 無視する
|
||||
```
|
||||
|
||||
この変更により、設定値をクリア(None に設定)する用途に対応。例えば認証失敗時に API キーを `None` に設定する場合に有効。
|
||||
|
||||
### メッセージフォーマット構造
|
||||
|
||||
```python
|
||||
|
||||
@@ -722,12 +722,14 @@ OSC Query 機能が無効になったことを通知。無効化された機能
|
||||
- 未選択の場合は先頭モデルを自動選択
|
||||
- `model.updateTranslatorGroqClient()` でクライアント更新
|
||||
- `updateTranslationEngineAndEngineList()` を呼び出し
|
||||
4. 認証失敗時: status 400 を返却
|
||||
4. 認証失敗時 (status 400):
|
||||
- レスポンス `data` フィールドを **None に設定** (sensitive data を隠す)
|
||||
- `delGroqAuthKey()` を呼び出してクリーンアップ
|
||||
|
||||
**API キー検証失敗時の処理:**
|
||||
- モデルリストをクリア (`config.SELECTABLE_GROQ_MODEL_LIST = []`)
|
||||
- 選択モデルをクリア (`config.SELECTED_GROQ_MODEL = None`)
|
||||
- フロントエンドに通知
|
||||
- フロントエンドに通知(レスポンス `data` は None)
|
||||
|
||||
#### `delGroqAuthKey(*args, **kwargs) -> dict`
|
||||
|
||||
@@ -776,12 +778,14 @@ OSC Query 機能が無効になったことを通知。無効化された機能
|
||||
- 未選択の場合は先頭モデルを自動選択
|
||||
- `model.updateTranslatorOpenRouterClient()` でクライアント更新
|
||||
- `updateTranslationEngineAndEngineList()` を呼び出し
|
||||
4. 認証失敗時: status 400 を返却
|
||||
4. 認証失敗時 (status 400):
|
||||
- レスポンス `data` フィールドを **None に設定** (sensitive data を隠す)
|
||||
- `delOpenRouterAuthKey()` を呼び出してクリーンアップ
|
||||
|
||||
**API キー検証失敗時の処理:**
|
||||
- モデルリストをクリア (`config.SELECTABLE_OPENROUTER_MODEL_LIST = []`)
|
||||
- 選択モデルをクリア (`config.SELECTED_OPENROUTER_MODEL = None`)
|
||||
- フロントエンドに通知
|
||||
- フロントエンドに通知(レスポンス `data` は None)
|
||||
|
||||
#### `delOpenRouterAuthKey(*args, **kwargs) -> dict`
|
||||
|
||||
|
||||
@@ -4,6 +4,14 @@
|
||||
|
||||
LMStudio 互換 OpenAI API を利用したローカル LLM 翻訳クライアントラッパー。モデル一覧取得・モデル選択・翻訳処理を統一インターフェースで提供する。
|
||||
|
||||
## 最近の更新 (2025-12-30)
|
||||
|
||||
- 接続失敗時のエラーハンドリング改善
|
||||
- URL への疎通確認失敗時にモデルリストをクリア (`SELECTABLE_LMSTUDIO_MODEL_LIST = []`)
|
||||
- 選択モデルをクリア (`SELECTED_LMSTUDIO_MODEL = None`)
|
||||
- `SELECTABLE_TRANSLATION_ENGINE_STATUS["LMStudio"]` を False に設定
|
||||
- フロントエンドに通知して UI を同期
|
||||
|
||||
## 最近の更新 (2025-10-20)
|
||||
|
||||
- 新規追加: ローカル LLM (LMStudio) を翻訳エンジン群へ統合
|
||||
@@ -73,6 +81,10 @@ if models:
|
||||
- `api_key` は固定文字列 "lmstudio" (LMStudio 側で不要のため) を利用
|
||||
- モデル一覧取得はエンドポイントの互換性に依存 (古いバージョン非対応の可能性)
|
||||
- `updateClient()` 呼び出し前は `translate()` を利用できない
|
||||
- **接続失敗時の自動処理:**
|
||||
- URL への疎通確認(接続テスト)が失敗すると、自動的にモデルリストと選択モデルがクリアされる
|
||||
- `SELECTABLE_TRANSLATION_ENGINE_STATUS["LMStudio"]` が False に設定され、エンジンが使用不可状態になる
|
||||
- Controller が自動的にフロントエンドに状態変化を通知
|
||||
|
||||
## 制限事項
|
||||
|
||||
|
||||
@@ -4,6 +4,14 @@
|
||||
|
||||
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 を翻訳エンジン群へ統合
|
||||
@@ -73,6 +81,10 @@ if client.authenticationCheck():
|
||||
- サーバー既定 URL: `http://localhost:11434`
|
||||
- モデル一覧取得は起動しているローカルサーバー状態に依存
|
||||
- `updateClient()` 呼び出し前は `translate()` を利用不可
|
||||
- **接続失敗時の自動処理:**
|
||||
- `/api/ping` への疎通確認が失敗すると、自動的にモデルリストと選択モデルがクリアされる
|
||||
- `SELECTABLE_TRANSLATION_ENGINE_STATUS["Ollama"]` が False に設定され、エンジンが使用不可状態になる
|
||||
- Controller が自動的にフロントエンドに状態変化を通知
|
||||
|
||||
## 制限事項
|
||||
|
||||
|
||||
@@ -4,12 +4,15 @@
|
||||
|
||||
OpenRouter API を用いた統合 LLM 翻訳クライアントラッパー。OpenAI 互換エンドポイント (`https://openrouter.ai/api/v1`) を利用し、複数の LLM プロバイダーへの統一アクセスを提供する。
|
||||
|
||||
## 最近の更新 (2025-12-10)
|
||||
## 最近の更新 (2025-12-29)
|
||||
|
||||
- OpenRouter API サポートを新規追加
|
||||
- 単一 API キーで複数 LLM プロバイダーへアクセス可能
|
||||
- 除外キーワード (`whisper`, `embedding`, `image`, `tts`, `audio`, `search`, `transcribe`, `diarize`, `vision`) によるテキスト処理モデルのフィルタリング
|
||||
- YAML (`prompt/translation_openrouter.yml`) からシステムプロンプトをロード
|
||||
- OpenRouter API 認証チェック方法を変更
|
||||
- **以前:** `client.models.list()` を呼び出して認証確認
|
||||
- **現在:** `https://openrouter.ai/api/v1/auth/key` エンドポイントに GET リクエスト送信して確認
|
||||
- **理由:** より信頼性の高い専用認証エンドポイントを使用し、高速かつ確実に API キー有効性を検証
|
||||
- 認証失敗時の sensitive data 処理
|
||||
- API キー検証失敗時はレスポンス `data` フィールドに `None` を設定(API キーを露出させない)
|
||||
- エラーメッセージのみを返却し、具体的なキー情報は隠蔽
|
||||
|
||||
### 影響
|
||||
|
||||
@@ -22,6 +25,8 @@ OpenRouter API を用いた統合 LLM 翻訳クライアントラッパー。Ope
|
||||
## 責務
|
||||
|
||||
- OpenRouter API Key (20文字以上) を用いた認証確認
|
||||
- `https://openrouter.ai/api/v1/auth/key` エンドポイントへの HTTP GET リクエストで検証(タイムアウト10秒)
|
||||
- ステータスコード 200 で有効と判定
|
||||
- 利用可能モデルのフィルタリングとソート
|
||||
- 選択モデルの検証と内部保持
|
||||
- LangChain `ChatOpenAI` インスタンス生成(base_url に OpenRouter エンドポイント指定)
|
||||
|
||||
Reference in New Issue
Block a user