DeepSeek Harness サードパーティキー設定 — APIMaster.ai カスタムプロバイダー
DeepSeek Harness(dsh)に APIMaster.ai の OpenAI 互換 API キーを追加する方法。Settings → Models → Add a custom provider で Base URL・キー・モデル ID を入力し、チャットでモデルを選びます。
DeepSeek Harness(dsh)は DeepSeek のオープンソースなローカルエージェントフレームワークです。Web UI の既定は http://127.0.0.1:3080。組み込みの DeepSeek カードは公式キー専用です。APIMaster 経由で GPT / Claude / DeepSeek など マーケットプレイス のモデルを使うには Add a custom provider が必要です。
先に API キーを取得 してください。キーは
$DSH_HOME/.credentials.yaml(既定~/.dsh/)にだけ保存されます。チャットやスクリーンショットで共有しないでください。
前提条件
- Node.js
22.19+または24+。 - Web UI を起動:
npx @deepseek-ai/dsh web
ターミナルに表示された URL(通常 http://127.0.0.1:3080)を開きます。
3. APIMaster の コンソール から API Key をコピー。
4. マーケットプレイス の model id(例: gpt-5.6-sol、claude-sonnet-4-6、deepseek-v4-pro)。
ステップ 1 — Models を開く
- Settings を開く。
- Models を選ぶ。
- DeepSeek カードの Edit は公式キーです。押さないでください。

| ボタン | 用途 |
|---|---|
| + Add provider | カタログ(Anthropic、OpenAI など) |
| + Add a custom provider | APIMaster(こちら) |
ステップ 2 — カスタムプロバイダーを入力
| フィールド | 値 |
|---|---|
| Provider ID | apimaster(小文字。保存後は改名不可) |
| Display name | apimaster または APIMaster.ai |
| Base URL | https://apimaster.ai/v1(/v1 必須) |
| API protocol | openai-completions |
| API key | APIMaster のキー |
モデルを少なくとも 1 つ追加(左 = model id、右 = 表示名、例 gpt-5.6-sol)。または Fetch available models。Create provider をクリック。

リストにない id はローカルで UNKNOWN_MODEL になります。/v1 を抜くと fetch とチャットが失敗します。
- ビジョンモデルの場合は、以下の画像入力設定も確認してください。UI でモデルを追加するだけでは画像が有効にならない場合があります。
カスタムプロバイダーを使用したビジョン / マルチモーダルモデル
手動で追加したモデルが画像に対応している場合、その機能を .dsh/settings.yaml で宣言する必要がある場合があります。現在、カスタムプロバイダーフォームにはモデルの入力タイプを指定するフィールドがありません。そのため、モデルのビジョン機能がモデルカタログに含まれていない場合、UI だけでモデルを設定するだけでは不十分です。
$DSH_HOME/settings.yaml(デフォルトは ~/.dsh/settings.yaml)を開き、既存のプロバイダーとモデルのエントリを編集します。設定済みの Provider ID、認証情報、Base URL、その他の設定はそのまま維持し、ファイルを置き換えるのではなく、以下のフィールドをそのエントリにマージしてください。
特定のモデルで画像を有効にする
画像対応モデルに input: [text, image] を追加します:
llm-pi-ai:
providers:
my-gateway:
apiKeyEnv: GATEWAY_API_KEY
api: openai-completions
baseURL: https://your-api-endpoint/v1
models:
- id: legacy-chat
- id: vision-model
input: [text, image]
上記のプロバイダーIDとモデルIDはプレースホルダーです。APIMaster のセットアップでは、保存済みの Provider ID(例: apimaster)と https://apimaster.ai/v1、および実際のモデルIDを使用してください。apiKeyEnv は、キーを保持する環境変数を指定します。UI からキーを保存した場合は、既存の認証情報設定を維持してください。
input: [text, image]は、そのモデルに限りテキストと画像の両方の入力に対応することを宣言します。この例ではvision-modelに適用され、legacy-chatは変更されません。inputが省略されているか[]に設定されている場合、Harness はモデルカタログの機能情報を使用します。カタログに対応する情報がない場合は、プロバイダー / ルートのdefaultInputにフォールバックします。- 明示的なモデルレベルの宣言は、カタログがビジョン機能を認識しない手動追加モデルで特に役立ちます。
プロバイダーのモデルにデフォルトを設定する
カスタムプロバイダー配下の手動追加モデルがすべて画像に対応している場合、プロバイダーに defaultInput: [text, image] を設定する方が簡潔です:
llm-pi-ai:
providers:
vision-gateway:
apiKeyEnv: GATEWAY_API_KEY
api: openai-completions
baseURL: https://your-api-endpoint/v1
defaultInput: [text, image]
models:
- id: first-model
- id: second-model
| Field | Scope | When to use |
|---|---|---|
input |
1つのモデルの入力機能 | 画像に対応しているモデルが一部のみの場合はこちらを推奨 |
defaultInput |
そのプロバイダー / ルート上のモデルに対するデフォルトの入力機能 | 手動追加モデルがすべて画像に対応している場合に便利 |
解決順序: 空でないモデル input → モデルカタログの機能情報 → プロバイダー / ルートの defaultInput(デフォルトは [text])。defaultInput はフォールバックであり、明示的なモデル宣言や既知のカタログ機能を上書きしません。カタログがビジョンモデルをテキストのみとしている場合は、そのモデルに明示的に input: [text, image] を設定してください。
これらの設定は機能を宣言するものであり、テキストのみのモデルにビジョン対応を追加するものではありません。モデルとカスタムプロバイダーの API の両方が、送信される画像入力形式に対応している必要があります。
ファイルを保存し、画像を含む新しいリクエストを送信します。Harness は次のリクエストで設定を再読み込みするため、通常は再起動は不要です。変更が反映されない場合は、UI をリロードするか、DeepSeek Harness を再起動して、設定したモデルをもう一度選択してください。
ステップ 3 — 保存を確認
DeepSeek と、灰色の Custom バッジ付き apimaster が見えるはずです。

ステップ 4 — チャットでモデルを選ぶ
セレクターでは apimaster グループのモデルを選びます。DeepSeek グループではありません。

ステップ 5 — テストメッセージ
hi を送信してください。正常な返信とフッターのメトリクス(LLM / TTFT / tok)が表示されれば、テキストリクエストに対してキーと Base URL が機能しています。ビジョンを確認するには、画像入力 を設定した後、画像も送信してください。

トラブルシューティング
| 現象 | 対処 |
|---|---|
| フォームがない | Settings → Models → + Add a custom provider |
401 / MISSING_CREDENTIAL |
Edit でキーを貼り直す |
| 接続できない | https://apimaster.ai/v1 |
UNKNOWN_MODEL |
Models リストに id を追加 |
| 公式 DeepSeek のまま | apimaster グループの行を選ぶ |
| Provider ID を間違えた | 新規作成して古い方を Delete |
| 画像が拒否される | モデルのビジョン機能と ~/.dsh/settings.yaml 内の input / defaultInput を確認してください。以下の画像トラブルシューティングチェックリストを参照してください |
手動追加モデルで画像が機能しない場合
テキストリクエストは成功するが、画像を含むリクエストが失敗する場合は、以下を確認してください:
- モデルの対応: 選択したモデルが実際にビジョン / 画像入力に対応している。
- モデル設定: カタログがそのビジョン機能を識別しない場合、
.dsh/settings.yaml内のそのモデルのエントリにinput: [text, image]が宣言されている。 - プロバイダーのデフォルト: あるいは、プロバイダーに
defaultInput: [text, image]が設定されており、フォールバックが適用される。モデル宣言やカタログエントリがテキストのみとしている場合は、モデルレベルのinputを使用して、対応しているモデルで画像を明示的に有効にする。 - 設定の読み込み: 実行中のインスタンスが使用する設定ファイルを保存して再試行する。変更が反映されない場合は、UI をリロードするか、DeepSeek Harness を再起動する。
- API 互換性: カスタムプロバイダーの API プロトコルとエンドポイントが、Harness が送信する画像入力形式を受け入れる。テキストリクエストが成功しただけでは、画像互換性は確認できない。
両方の YAML 例については、カスタムプロバイダーを使用したビジョン / マルチモーダルモデル を参照してください。
チェックリスト
-
npx @deepseek-ai/dsh webが起動している - + Add a custom provider を使った
- API protocol =
openai-completions - Base URL =
https://apimaster.ai/v1 - apimaster グループのモデルが返信する
- ビジョンモデルの場合、画像入力が宣言されているかカタログから解決され、画像を含むリクエストが成功する
