Как подключить DeepSeek Harness к Tokenator API
DeepSeek Harness запускается одной командой и открывает веб-интерфейс. Сторонний шлюз заводится в нём как свой провайдер: идентификатор, адрес, протокол и хотя бы одна модель. Ключ хранится отдельно от настроек и обратно на страницу не возвращается.
Что получится в итоге
После настройки DeepSeek Harness перестаёт обращаться к своему стандартному провайдеру и отправляет все запросы в Tokenator. Оплата идёт токенами вашего ключа, а список доступных моделей задаётся ключом, а не инструментом.
| Инструмент | DeepSeek Harness |
| Протокол | OpenAI-совместимый |
| Base URL | https://api.tokenator.top/v1 |
| Ключ | sk-your-tokenator-key |
Требования и поддерживаемые ОС
- Windows 10/11, macOS 12+ или современный Linux с 64-битной архитектурой.
- Доступ в интернет к домену Tokenator по HTTPS.
- API-ключ Tokenator вида
sk-your-tokenator-key.
Нужен Node.js: запуск идёт через npx. Для сборки из исходников понадобится pnpm. Настройка выполняется в браузере, аккаунт DeepSeek для стороннего провайдера не нужен.
Установка DeepSeek Harness
npx @deepseek-ai/dsh web
Команда поднимает веб-интерфейс на http://127.0.0.1:3080 и открывает его в браузере. Флаг --no-open оставляет сервер без открытия вкладки.
git clone https://github.com/deepseek-ai/deepseek-harness.git cd deepseek-harness pnpm install pnpm run build pnpm dsh web
Настройка Tokenator
- Зарегистрируйтесь в личном кабинете и купите пакет токенов.
- Ключ появится в кабинете сразу после подтверждения оплаты — копировать его нужно целиком, вместе с префиксом.
- В примерах ниже вместо настоящего ключа стоит плейсхолдер
sk-your-tokenator-key. Не публикуйте настоящий ключ в репозиториях и скриншотах.
Конфигурация
- Откройте Settings → Models в веб-интерфейсе.
- Нажмите Add a custom provider.
- Provider ID — строчными буквами, например
tokenator. Идентификатор постоянный: переименовать провайдера нельзя, можно только завести нового и удалить старого. Отображаемое имя, адрес, протокол, ключ и модели остаются редактируемыми. - Base URL:
https://api.tokenator.top/v1 - API protocol:
openai-completions— это OpenAI Chat Completions. Провайдер говорит ровно на одном протоколе. - API key:
sk-your-tokenator-key - В блоке Model catalog нажмите Fetch available models: запрос уходит на
GET https://api.tokenator.top/v1/modelsс текущим ключом. Отметьте нужные модели и нажмите Add selected. ID можно и вписать руками, напримерgpt-5.5. - Сохраните провайдера и выберите модель в пикере — выбранная модель становится значением по умолчанию для новых сессий.
$DSH_HOME/.credentials.yaml, в настройках остаётся лишь ссылка на него. Изменения моделей применяются со следующего запроса, перезапускать сервер не нужно.llm-pi-ai:
providers:
tokenator:
apiKeyEnv: TOKENATOR_API_KEY
api: openai-completions
baseURL: https://api.tokenator.top/v1
models:
- id: gpt-5.5То же самое можно записать прямо в $DSH_HOME/settings.yaml — это тот же документ, который пишет страница настроек. В нём же задаются поля, которых нет в форме: заголовки, таймауты, уровни reasoning и переключатели совместимости. Открыть файл можно кнопкой Open configuration file в шапке настроек, когда браузер работает на той же машине, что и сервер.
Первый запрос
Перед запуском инструмента полезно убедиться, что ключ и модель рабочие. Один запрос curl отвечает на оба вопроса сразу.
curl https://api.tokenator.top/v1/chat/completions \ -H "Authorization: Bearer sk-your-tokenator-key" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [{"role": "user", "content": "ping"}] }'
Откройте http://127.0.0.1:3080, выберите модель в пикере и отправьте сообщение. Сессия, которая уже отправила запрос, остаётся на модели, записанной в её собственном логе: новую модель подхватят новые сессии.
Успешный ответ означает, что ключ действителен, модель разрешена для этого ключа и апстрим доступен. Расход виден в кабинете сразу после запроса.
Переключение моделей
Модели правятся в карточке провайдера: Fetch available models спрашивает список у эндпоинта, а вписанный руками ID работает точно так же. Выбор модели в пикере делает её значением по умолчанию для новых сессий.
Примеры ID моделей, доступных сейчас:
claude-haiku-4-5claude-opus-4-6claude-opus-4-7claude-sonnet-4-6gpt-5.5deepseek-v4-pro
Актуальные ID и характеристики — в каталоге AI-моделей; там же видно, какие модели сейчас доступны. Выбрать между близкими вариантами помогает сравнение моделей.
Настройка reasoning
Модель, вписанная вручную, не объявляет уровней reasoning, поэтому пункт Effort для неё в меню не появляется и думать ли модели решает сам эндпоинт. Уровни объявляются полем reasoningEfforts в $DSH_HOME/settings.yaml: ключ — это пункт меню, а значение — то, что уходит на провод в reasoning_effort. Пустым можно оставить только off: для большинства эндпоинтов «не думать» — это отсутствие параметра.
llm-pi-ai:
providers:
tokenator:
models:
- id: gpt-5.5
reasoningEfforts:
off:
high: high
max: maxДополнительно у самого ключа есть переключатель reasoning в личном кабинете — он действует независимо от инструмента. Размышление тарифицируется как output-токены.
Частые ошибки и способы исправления
| Симптом | Причина | Что сделать |
|---|---|---|
MISSING_CREDENTIAL | У провайдера не сохранён ключ либо не задана переменная окружения, названная в apiKeyEnv. | Сохраните ключ на странице Settings → Models или задайте эту переменную окружения. |
UNKNOWN_MODEL | Запрошенной модели нет среди настроенных у провайдера. | Добавьте её ID в провайдера или выберите настроенную модель в пикере. |
| Fetch available models отвечает 401 | Поиск моделей обращается к GET /models с ключом из формы, и ключ не подошёл. | Проверьте ключ; список моделей в любом случае можно заполнить вручную — вписанные ID работают так же. |
401 или сообщение о недействительном ключе | Ключ скопирован с лишними пробелами, отозван, истёк или подставлен не в ту переменную окружения. | Проверьте ключ в личном кабинете и убедитесь, что переменная окружения действительно попала в тот процесс, где запускается инструмент. |
403 | Модель не входит в список разрешённых для этого ключа. | Посмотрите список моделей ключа в кабинете и выберите ID из каталога моделей. |
429 | Превышен лимит запросов в минуту или час либо лимит одновременных стримов для ключа. | Уменьшите параллелизм агента и повторите запрос с экспоненциальной задержкой. Лимиты ключа видны в кабинете. |
| Модель не найдена / не поддерживается | В запросе указан ID, которого нет в каталоге, либо алиас, недоступный этому ключу. | Скопируйте точный API ID со страницы модели — регистр и точки значимы. |
| Запрос завис или обрывается на длинном ответе | Клиент закрыл соединение по своему таймауту раньше, чем модель закончила генерацию. | Включите потоковый режим (stream: true) и увеличьте таймаут клиента: у длинных reasoning-ответов первый токен может прийти не сразу. |
| Ошибка вида «Request error» без деталей | Апстрим-провайдер вернул ошибку. Её текст не передаётся клиенту. | Повторите запрос: Tokenator сам переключается на следующего провайдера модели. Если ошибка стабильна — напишите в поддержку. |
Частые вопросы
Нужна ли подписка DeepSeek Harness или отдельный аккаунт провайдера?
Нет. Инструмент обращается к Tokenator, а оплата идёт токенами вашего ключа Tokenator.
Где посмотреть расход после подключения?
В личном кабинете: там видны запросы, израсходованные токены и остаток лимита ключа.
Можно ли использовать один ключ в нескольких инструментах?
Да. Ограничение — лимиты самого ключа: запросы в минуту и час, а также количество одновременных стримов.
Что будет, если токены закончатся посреди сессии?
Запросы начнут возвращать ошибку. Лимит восстанавливается пополнением того же ключа — переустанавливать инструмент не нужно.
Как вернуться к прежнему провайдеру?
Уберите добавленные настройки — переменные окружения или блок провайдера в конфиге. Инструмент вернётся к своему поведению по умолчанию.
Где почитать про сам формат API?
В документации Tokenator API и на странице про OpenAI-compatible API.