OpenAI互換カスタムプロバイダから/v1/modelsを取得してモデル選択 #20

Closed
opened 2026-09-27 11:25:27 +00:00 by joe · 1 comment
Owner

要望

llama.cpp等のカスタムプロバイダは接続先サーバの/v1/modelsから利用可能モデルを取得できる。モデル名の手入力ミスを避けるため、取得モデルを選んで登録できるようにする。

対応

  • カスタムプロバイダ入力行に「モデル取得」ボタンを追加。base_url/API keyからGET {base_url}/models(末尾/v1があれば/v1/models)を呼び、候補をselectへ反映
  • api_keyは任意、Authorization Bearerとして送る
  • 既存モデル名は手入力も可能(datalist/select併用または候補選択+自由入力)
  • API失敗/未対応時は理由を表示し、手入力可能
  • SSRフォーム送信ではなくJS fetchで実装。CSRFは現状無効
## 要望 llama.cpp等のカスタムプロバイダは接続先サーバの`/v1/models`から利用可能モデルを取得できる。モデル名の手入力ミスを避けるため、取得モデルを選んで登録できるようにする。 ## 対応 - カスタムプロバイダ入力行に「モデル取得」ボタンを追加。base_url/API keyから`GET {base_url}/models`(末尾`/v1`があれば`/v1/models`)を呼び、候補をselectへ反映 - api_keyは任意、Authorization Bearerとして送る - 既存モデル名は手入力も可能(datalist/select併用または候補選択+自由入力) - API失敗/未対応時は理由を表示し、手入力可能 - SSRフォーム送信ではなくJS fetchで実装。CSRFは現状無効
Author
Owner

実装しました。mainにマージ・push済み。

使い方

  1. 設定画面のカスタムプロバイダに名前とbase_urlを入力(modelは空でも可)
  2. いったん「保存」(モデル未選択行は下書きとして保存)
  3. 「モデル取得」を押すと保存済みendpointの/models(例: http://localhost:8080/v1/models)へアクセスし、返されたIDをモデル欄の候補に表示
  4. 候補を選択して再度保存

APIキーはサーバ側からBearer認証で送信。HTMLには表示せず、空欄で保存すると既存キーを維持(削除チェックあり)。モデル一覧は登録済みプロバイダindexで取得するため、任意URLをリクエストに直接渡すAPIにはしていません。

テスト97件パス。実際の候補取得には対象のllama.cpp/Ollama等が起動しており、/v1/modelsに応答する必要があります。

実装しました。`main`にマージ・push済み。 ## 使い方 1. 設定画面のカスタムプロバイダに名前とbase_urlを入力(modelは空でも可) 2. いったん「保存」(モデル未選択行は下書きとして保存) 3. 「モデル取得」を押すと保存済みendpointの`/models`(例: `http://localhost:8080/v1/models`)へアクセスし、返されたIDをモデル欄の候補に表示 4. 候補を選択して再度保存 APIキーはサーバ側からBearer認証で送信。HTMLには表示せず、空欄で保存すると既存キーを維持(削除チェックあり)。モデル一覧は登録済みプロバイダindexで取得するため、任意URLをリクエストに直接渡すAPIにはしていません。 テスト97件パス。実際の候補取得には対象のllama.cpp/Ollama等が起動しており、`/v1/models`に応答する必要があります。
joe closed this issue 2026-09-27 11:27:51 +00:00
Sign in to join this conversation.
No labels
bug
cleanup
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joe/sougi#20
No description provided.