Настройка стороннего ключа DeepSeek Harness — пользовательский провайдер APIMaster.ai
Как добавить OpenAI-совместимый API-ключ APIMaster.ai в DeepSeek Harness (dsh). Откройте Settings → Models → Add a custom provider, укажите Base URL, ключ и ID моделей, затем выберите модель в чате.
DeepSeek Harness (dsh) — локальный агентный фреймворк DeepSeek. Web UI по умолчанию: http://127.0.0.1:3080. Встроенная карточка DeepSeek принимает только официальный ключ. Чтобы вызывать GPT / Claude / DeepSeek и другие модели маркетплейса через APIMaster, добавьте custom provider.
Сначала получите API-ключ. Ключ хранится локально в
$DSH_HOME/.credentials.yaml(по умолчанию~/.dsh/). Не публикуйте его в чатах и скриншотах.
Предварительные требования
- Node.js
22.19+или24+. - Запущен Web UI. Быстрый старт:
npx @deepseek-ai/dsh web
Откройте адрес из терминала (обычно http://127.0.0.1:3080).
3. Ключ скопирован из консоли APIMaster.
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 |
Добавьте хотя бы одну модель: слева — model id, справа — отображаемое имя (например gpt-5.6-sol). Либо Fetch available models. Нажмите Create provider.

ID вне списка даёт UNKNOWN_MODEL локально. Без /v1 запросы не проходят.
- Для моделей со зрением также проверьте конфигурацию входных изображений ниже. Только добавление модели в UI может не включить изображения.
Зрение / Мультимодальные модели с собственными провайдерами
Если модель, добавленная вручную, поддерживает изображения, возможно, потребуется указать эту возможность в .dsh/settings.yaml. В форме собственного провайдера сейчас нет поля для типов входных данных модели, поэтому настройки только в UI недостаточно, если в каталоге моделей отсутствует информация о поддержке изображений.
Откройте $DSH_HOME/settings.yaml (по умолчанию ~/.dsh/settings.yaml) и отредактируйте существующую запись провайдера и модели. Сохраните 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 провайдера и модели — это заполнители. Для вашей настройки APIMaster используйте сохранённый 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
| Поле | Область действия | Когда использовать |
|---|---|---|
input |
Возможности одной модели по вводу | Предпочтительно, когда изображения поддерживают лишь некоторые модели |
defaultInput |
Возможности по умолчанию для моделей этого провайдера / маршрута | Удобно, когда все добавленные вручную модели поддерживают изображения |
Порядок разрешения: непустой input модели → информация о возможностях из каталога моделей → defaultInput провайдера / маршрута (по умолчанию [text]). defaultInput — резервное значение; оно не переопределяет явное объявление модели или известные возможности каталога. Если каталог описывает модель как текстовую, задайте для неё input: [text, image] явно.
Эти настройки декларируют возможности; они не добавляют поддержку зрения текстовой модели. И модель, и API собственного провайдера должны поддерживать отправляемый формат изображений.
Сохраните файл и отправьте новый запрос с изображением. Harness перечитывает настройки при следующем запросе, поэтому обычно перезапуск не требуется. Если изменение не вступило в силу, перезагрузите UI или перезапустите DeepSeek Harness и снова выберите настроенную модель.
Шаг 3 — Проверьте список
Должны быть DeepSeek и apimaster с серым бейджем Custom.

Шаг 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 |
Добавьте id в список Models |
| Идёт официальный DeepSeek | Выберите строку в группе apimaster |
| Неверный Provider ID | Создайте новый и Delete старый |
| Изображения отклонены | Проверьте поддержку зрения у модели и input / defaultInput в ~/.dsh/settings.yaml; см. чек-лист диагностики изображений ниже |
Изображения не работают с моделью, добавленной вручную
Если текстовые запросы работают, а запросы с изображениями завершаются ошибкой, проверьте:
- Поддержка модели: выбранная модель действительно поддерживает зрение / ввод изображений.
- Конфигурация модели: её запись в
.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 отвечает
- Для моделей со зрением входные изображения объявлены или определены из каталога, и запрос с изображением выполняется успешно.
