モデルを設定する
このガイドでは、ルート READMEから Web UI を起動したことを前提とします。モデルの変更は、サーバーを再起動しなくても次のリクエストで反映されます。
DeepSeek を設定する
Settings → Modelsを開きます。DeepSeek カードには API キーのフィールドが 1 つあります。キーを入力して保存してください。

キーは書き込み専用です。保存後、ページは実際のシークレットではなくマスクされた記述子を受け取ります。キーは $DSH_HOME/.credentials.yaml に保存され、設定にはその認証情報参照のみが保持されます。
カタログプロバイダーを追加する
Add providerを選択し、Anthropic や OpenAI などのプロバイダーを選び、API キーを入力して保存します。インストール済みカタログにより、エンドポイント、プロトコル、モデル一覧が提供されます。
ネイティブ認証を使用するプロバイダーには、代わりにネイティブ認証情報が必要です。Bedrock、Vertex、Azure、Codex では、それぞれ AWS 認証情報とリージョン、ADC プロジェクト、api-version、OAuth を使用します。API キーのフィールドだけを入力しても設定されません。
カスタムプロバイダーを追加する
会社のゲートウェイ、セルフホストサーバー、またはインストール済みカタログにないプロバイダーには、カスタムプロバイダーを追加 を選択します。小文字の Provider ID、ベース URL、API プロトコル、認証情報、および少なくとも 1 つのモデルを指定します。

Provider ID は、リクエスト、保存済みセッション、モデルのデフォルト、認証情報参照で使用されるため永続的です。プロバイダー名を変更するには、新しいプロバイダーを追加して古いものを削除します。表示名、ベース URL、プロトコル、認証情報、モデルは編集可能なままです。
Model catalogで、Fetch available models を選択すると、フォームに現在表示されているベース URL と認証情報を照会します。候補を選択すると下書きが更新されます。保存するまでプロバイダーは保存されません。カタログプロバイダーは、ネットワークリクエストなしでインストール済みカタログを使用します。
画像入力
手動で入力したモデルは、対応モダリティをエンドポイントに問い合わせる方法がないため、特に指定がない限りテキスト専用として扱われます。そのようなモデルに画像を添付すると、送信前にモデル名を示して拒否されます。
したがって、カスタムプロバイダー上のビジョンモデルには 1 行の設定が必要です。フォームにはそのフィールドがないため、$DSH_HOME/settings.yaml 内のモデルに input を追加します。
llm-pi-ai:
providers:
my-gateway:
apiKeyEnv: GATEWAY_API_KEY
api: openai-completions
baseURL: https://gateway.example/v1
models:
- id: legacy-chat
- id: vision-preview
input: [text, image]input は text と image を受け入れ、そのモデルだけに適用されます。そのため、1 つのルートで両方の種類を提供できます。省略した場合、または同じ意味である空のリストを指定した場合は、インストール済みカタログがそのモデルに記録している内容が維持されます。カタログに記述されていないモデルでは、ルートの defaultInput にフォールバックします。
手動で入力したすべてのモデルが画像を受け取る場合は、個別のモデルではなくルートにフォールバックを一度設定します。
llm-pi-ai:
providers:
vision-gateway:
apiKeyEnv: GATEWAY_API_KEY
api: openai-completions
baseURL: https://vision.example/v1
defaultInput: [text, image]
models:
- id: first-model
- id: second-modeldefaultInput は上書きではなくフォールバックであり、デフォルトは [text] です。カタログプロバイダーでは、カタログに記述されていないモデルに対してのみ応答するため、画像対応のカタログモデルから画像を削除することはありません。そのようなモデルを制限するには、そのモデル自身の input を使用します。カタログプロバイダーには設定先となる models リストがないため、モデル ID をキーとして modelOverrides の下に記述します。
llm-pi-ai:
providers:
anthropic:
modelOverrides:
claude-sonnet-4-5:
input: [text]各リストには少なくとも 1 つのモダリティを指定する必要があります。ただし、モデル自身のリストでは空のリストは省略と同じ意味です。不明なモダリティは、どこに記述しても拒否されます。
どちらのフィールドも、検証ではなくエンドポイントに関する宣言です。エンドポイントが実際には提供していない画像をモデルが宣言していても、ここでは検出されません。代わりにプロバイダーがリクエストを拒否します。
モデルを選択する
設定済みプロバイダーはモデルピッカーに表示されます。モデルを選択すると、新しいセッションのデフォルトにもなります。すでにリクエストを送信したセッションは、自身のログに記録されたモデルを保持します。
保存済みのデフォルトが削除済みプロバイダーを指定している場合、コンポーザーには Select model と表示され、別のモデルを選択するまで入力がブロックされます。
トラブルシューティング
MISSING_CREDENTIAL— Models ページからプロバイダーキーを保存するか、参照されている環境変数を指定します。UNKNOWN_MODEL— 設定済みのモデルを選択するか、不足しているモデルをカスタムプロバイダーに追加します。- 利用可能なモデルの取得で 401 が返る — キーを確認します。モデル検出は OpenAI 互換の
GET /modelsエンドポイントを呼び出します。これを提供しないエンドポイントでは、モデルを手動で入力してください。 - 画像が送信前に拒否される — モデルが画像モダリティを宣言していません。カスタムプロバイダーのモデルに
input: [text, image]を指定してください。DeepSeek 独自の chat-completions ルートはテキスト専用であり、別の設定にはできません。 - プロバイダーが画像を含むリクエストを拒否する — モデルが、エンドポイントが実際には提供していない画像を宣言しています。権限を付与したリスト、つまりモデルの
inputまたはルートのdefaultInputからimageを削除してから、新しいセッションを開始してください。添付画像はセッションログに残るため、セッションがその画像から移るまで同じリクエストが繰り返されます。
高度な設定
生成されたプラグイン設定カタログには、サポートされるすべてのフィールドとデフォルトが一覧表示されます。dsh-llm-pi-ai および dsh-llm-deepseek のリファレンスでは、直接の settings.yaml 設定、カタログ解決、推論コントロール、認証情報、アダプターエラーを扱います。