Skip to main content

Провайдеры и модели

Велес может работать с разными провайдерами моделей. Модель задаётся в agents.defaults.model, а провайдер выбирается явно через agents.defaults.provider или автоматически по имени модели и настройкам. Это значение используется как общий дефолт. У отдельной личности может быть собственная модель в personality.json, а переключение модели в интерфейсе остаётся переопределением для текущей сессии.

Поддерживаемые типы

Автовыбор провайдера

По умолчанию:
Велес смотрит на префикс модели, ключевые слова и заполненные provider-блоки. Явный префикс выигрывает: например openrouter/... выбирает OpenRouter, а openai-codex/... выбирает Codex. Когда в переключателе моделей есть записи с разными префиксами, Велес выбирает поставщика для каждого запроса отдельно. Префикс нужен только для маршрутизации и не отправляется внутрь выбранного поставщика: custom/minimax-m2.7 уйдет в собственный совместимый адрес как minimax-m2.7, а openrouter/minimax/minimax-m3 уйдет в OpenRouter как minimax/minimax-m3. Если хотите убрать неоднозначность, задайте провайдера явно:

API-провайдер

Некоторые провайдеры требуют apiBase, если вы используете региональный адрес API или совместимый шлюз.

OpenRouter

OpenRouter удобен как универсальный шлюз:

Собственный OpenAI-совместимый адрес API

Используйте custom, если у вас свой OpenAI-совместимый адрес API.
Для локального адреса API без ключа задайте любое непустое значение apiKey, например no-key.

Ollama

vLLM

OpenAI Codex OAuth

Codex использует OAuth. Обычный providers.openaiCodex.apiKey не нужен.
Этот пустой блок только представляет поставщика в конфигурации. Действительное состояние подключения определяется зашифрованной записью OAuth; токены в config.json не сохраняются.
Если настроен VELES_SECRETS_MASTER_KEY, OAuth-токены сохраняются в зашифрованном хранилище профилей.

Показатели расхода поставщиков

Велес может получать баланс, расход или ограничения подписки через необязательный обработчик поставщика. OpenRouter сообщает денежный остаток и расход по периодам, а OpenAI Codex — оставшуюся долю пятичасового и недельного ограничений и время их сброса. Nerve получает единый список через providers.usage и не содержит отдельных правил для OpenRouter или Codex. Поэтому новый поставщик с таким обработчиком появляется в подробной панели и списке показателей значка без изменений интерфейса. Поставщики без обработчика или без подключённых учётных данных в список не входят. При временной ошибке сохраняется последнее успешно полученное значение.

GitHub Copilot OAuth

Список моделей в интерфейсе Велеса

Интерфейс Велеса показывает каталог моделей из agents.defaults.models и модель по умолчанию.
Можно использовать строки, объекты { "id": "...", "label": "..." } или словарь, где ключ — идентификатор модели, а значение — подпись. Для объектов можно указать modalities: запись без этого поля считается текстовой. Если пользователь прикрепит изображение, Велес передаст данные изображения только модели с image или vision в modalities; для текстовой или неописанной модели в запросе останется только текстовое описание вложения. Поле reasoningEfforts ограничивает переключатель рассуждения конкретной модели. Nerve автоматически читает reasoning.supported_efforts и признак обязательного рассуждения из открытого каталога OpenRouter. Записи openrouter/openai/<модель> и openai-codex/<модель> используют в каталоге одну модель openai/<модель>, поэтому для них не нужны отдельные встроенные списки. Явный список имеет приоритет над автоматическим определением; используйте его, если поставщик ещё не публикует возможности модели или нужен более узкий набор. Отсутствующее поле supported_efforts не означает поддержку всех уровней. В этом случае ручная настройка недоступна, а Nerve использует режим auto. Явное значение null, напротив, означает поддержку всех уровней шлюза. При переключении модели несовместимый уровень заменяется значением модели по умолчанию или режимом auto в одном обновлении с самой моделью. Если default_effort отсутствует или содержит неизвестное значение, Nerve не задаёт уровень по умолчанию.

Практические советы

  • Для интерфейса Велеса заранее задавайте models, чтобы пользователь не вводил идентификатор вручную.
  • Для моделей, которые должны видеть изображения, явно добавляйте modalities: ["text", "image"].
  • Если автоматическое определение уровней рассуждения не подходит, задавайте для модели точный список reasoningEfforts.
  • Для локальных моделей задавайте provider явно.
  • Для провайдеров-шлюзов используйте префикс в model, чтобы не было неоднозначности.
  • Не храните новые ключи plaintext в config.json; используйте секреты.