Как подключить Pi к Tokenator API

У Pi нет мастера настройки провайдера: свои провайдеры описываются одним JSON-файлом. Файл перечитывается каждый раз, когда вы открываете /model, поэтому перезапускать агента после правки не нужно.

Что получится в итоге

После настройки Pi перестаёт обращаться к своему стандартному провайдеру и отправляет все запросы в Tokenator. Оплата идёт токенами вашего ключа, а список доступных моделей задаётся ключом, а не инструментом.

ИнструментPi
ПротоколOpenAI-совместимый
Base URLhttps://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 с npm и терминал. Файл со своими провайдерами создаётся вручную, редактор подойдёт любой.

Установка Pi

Установка через npm
npm install -g --ignore-scripts @earendil-works/pi-coding-agent

Флаг --ignore-scripts отключает lifecycle-скрипты зависимостей: для обычной установки Pi они не нужны. Запускается агент командой pi из каталога проекта.

Настройка Tokenator

  1. Зарегистрируйтесь в личном кабинете и купите пакет токенов.
  2. Ключ появится в кабинете сразу после подтверждения оплаты — копировать его нужно целиком, вместе с префиксом.
  3. В примерах ниже вместо настоящего ключа стоит плейсхолдер sk-your-tokenator-key. Не публикуйте настоящий ключ в репозиториях и скриншотах.

Конфигурация

  1. Создайте файл ~/.pi/agent/models.json; на Windows это %USERPROFILE%\.pi\agent\models.json.
  2. Опишите в нём провайдера: адрес, протокол, ключ и список моделей.
  3. Положите ключ в переменную окружения TOKENATOR_API_KEY — в файле остаётся только ссылка на неё.
  4. Запустите pi и откройте /model (или Ctrl+L): файл перечитывается при каждом открытии пикера.
~/.pi/agent/models.json
{
  "providers": {
    "tokenator": {
      "baseUrl": "https://api.tokenator.top/v1",
      "api": "openai-completions",
      "apiKey": "$TOKENATOR_API_KEY",
      "models": [
        { "id": "gpt-5.5" }
      ]
    }
  }
}
Поле apiKey понимает три формы: $ПЕРЕМЕННАЯ или ${ПЕРЕМЕННАЯ} подставляет значение из окружения, строка с ! в начале выполняется как команда и берёт её вывод, всё остальное используется буквально. Поэтому TOKENATOR_API_KEY без доллара уйдёт на сервер как сам ключ — доллар обязателен. Если переменной в окружении нет, значение остаётся неразрешённым.

Обязательный минимум у модели — только id. Остальные поля (name, contextWindow, maxTokens, input, cost) задают то, как модель выглядит и считается в интерфейсе, и заполняются по желанию.

Первый запрос

Перед запуском инструмента полезно убедиться, что ключ и модель рабочие. Один запрос curl отвечает на оба вопроса сразу.

Проверка OpenAI-эндпоинта
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"}]
  }'
Запуск агента
cd /path/to/project
pi

Откройте /model (или Ctrl+L) и выберите модель провайдера tokenator. Ctrl+S в пикере сохраняет подсвеченную модель как стартовую по умолчанию.

Успешный ответ означает, что ключ действителен, модель разрешена для этого ключа и апстрим доступен. Расход виден в кабинете сразу после запроса.

Переключение моделей

Каждая модель — элемент массива models в ~/.pi/agent/models.json. Файл перечитывается при открытии /model, поэтому добавленная модель появляется в пикере без перезапуска агента.

Примеры ID моделей, доступных сейчас:

  • claude-haiku-4-5
  • claude-opus-4-6
  • claude-opus-4-7
  • claude-sonnet-4-6
  • gpt-5.5
  • deepseek-v4-pro

Актуальные ID и характеристики — в каталоге AI-моделей; там же видно, какие модели сейчас доступны. Выбрать между близкими вариантами помогает сравнение моделей.

Настройка reasoning

Рассуждающая модель помечается в models.json признаком "reasoning": true. Если сервер не принимает поле reasoning_effort, в блоке compat провайдера ставится "supportsReasoningEffort": false, а если он не понимает роль developer"supportsDeveloperRole": false: тогда системный промпт уходит обычным system-сообщением. compat задаётся на уровне провайдера для всех моделей или на уровне конкретной модели.

Переключатель reasoning у ключа в личном кабинете работает независимо от инструмента, а размышление тарифицируется как output-токены.

Частые ошибки и способы исправления

СимптомПричинаЧто сделать
Модель загрузилась, но недоступна в /modelДля провайдера не настроена авторизация: без неё модели видны, но выбрать их нельзя.Задайте apiKey в файле, сохраните ключ через /login или передайте --api-key при выборе модели.
На сервер уходит строка TOKENATOR_API_KEYЗначение без $ считается литералом, а не именем переменной окружения.Напишите $TOKENATOR_API_KEY и убедитесь, что переменная задана в окружении.
Файл не подхватился целикомСинтаксическая ошибка в JSON.Проверьте файл валидатором JSON и снова откройте /model — он перечитывается при каждом открытии пикера.
401 или сообщение о недействительном ключеКлюч скопирован с лишними пробелами, отозван, истёк или подставлен не в ту переменную окружения.Проверьте ключ в личном кабинете и убедитесь, что переменная окружения действительно попала в тот процесс, где запускается инструмент.
403Модель не входит в список разрешённых для этого ключа.Посмотрите список моделей ключа в кабинете и выберите ID из каталога моделей.
429Превышен лимит запросов в минуту или час либо лимит одновременных стримов для ключа.Уменьшите параллелизм агента и повторите запрос с экспоненциальной задержкой. Лимиты ключа видны в кабинете.
Модель не найдена / не поддерживаетсяВ запросе указан ID, которого нет в каталоге, либо алиас, недоступный этому ключу.Скопируйте точный API ID со страницы модели — регистр и точки значимы.
Запрос завис или обрывается на длинном ответеКлиент закрыл соединение по своему таймауту раньше, чем модель закончила генерацию.Включите потоковый режим (stream: true) и увеличьте таймаут клиента: у длинных reasoning-ответов первый токен может прийти не сразу.
Ошибка вида «Request error» без деталейАпстрим-провайдер вернул ошибку. Её текст не передаётся клиенту.Повторите запрос: Tokenator сам переключается на следующего провайдера модели. Если ошибка стабильна — напишите в поддержку.

Частые вопросы

Нужна ли подписка Pi или отдельный аккаунт провайдера?

Нет. Инструмент обращается к Tokenator, а оплата идёт токенами вашего ключа Tokenator.

Где посмотреть расход после подключения?

В личном кабинете: там видны запросы, израсходованные токены и остаток лимита ключа.

Можно ли использовать один ключ в нескольких инструментах?

Да. Ограничение — лимиты самого ключа: запросы в минуту и час, а также количество одновременных стримов.

Что будет, если токены закончатся посреди сессии?

Запросы начнут возвращать ошибку. Лимит восстанавливается пополнением того же ключа — переустанавливать инструмент не нужно.

Как вернуться к прежнему провайдеру?

Уберите добавленные настройки — переменные окружения или блок провайдера в конфиге. Инструмент вернётся к своему поведению по умолчанию.

Где почитать про сам формат API?

В документации Tokenator API и на странице про OpenAI-compatible API.