|

OpenBot не подключается к APIYI? 3 переменные окружения — и ИИ-коллега сам включит компьютер

OpenBot не подключается к APIYI? 3 переменные окружения — и ИИ-коллега сам включит компьютер

Примечание автора: в OpenBot нет интерфейса для выбора модели — она задаётся в .env и model.yaml пакета арендатора. В этой статье разберём, как подключить APIYI, изменив три переменные окружения и одну строку YAML. Затем разрешим только три компьютерных инструмента и проверим работу: откроем веб-страницу, прочитаем файл и посмотрим журнал аудита.

Вы клонировали OpenBot от CopilotKit, открыли .env.example и обыскали весь интерфейс, но так и не нашли выпадающий список для выбора поставщика модели. Официальной карты OpenAI у вас нет, а запустить claude-opus-5-5 хочется через APIYI с оплатой по факту использования. Вот только где настроить модель — непонятно.

Сразу к делу: в OpenBot нет переключателя для выбора модели. Она задаётся в .env и model.yaml пакета арендатора. Чтобы подключить APIYI, менять код не нужно: достаточно изменить три переменные окружения и одну строку YAML. После этого сначала разрешим только три компьютерных инструмента, а остальные будем подключать по мере необходимости, когда убедимся, что всё работает.

Это не руководство по запуску в один клик. OpenBot — это шаблон. Для его запуска нужны Docker, Bun 1.4+, проект CopilotKit Intelligence и API-ключ для модели. Все предварительные требования мы разберём в статье. И ещё: на GitHub есть два проекта с названием OpenBot — здесь речь о проекте от CopilotKit.

Что вы получите: после прочтения вы сможете самостоятельно внести изменения в трёх местах конфигурации, начать с трёх инструментов и проверить работу по сценарию «открыть веб-страницу + прочитать файл + посмотреть журнал аудита». А если столкнётесь с ошибкой 400 или 401, отсутствующей моделью, проблемой с вызовом инструментов или отказом в запуске, вам поможет таблица устранения неполадок.

openbot-apiyi-env-config-guide-ru-image-0


Модель OpenBot настраивается не в интерфейсе

OpenBot — шаблон, а не готовый продукт

CopilotKit/OpenBot — репозиторий с открытым исходным кодом под лицензией MIT, созданный 17 августа 2026 года. На 2 ноября 2026 года у репозитория было 9 561 звезда, а последний официальный релиз — v0.2.0 от 12 октября 2026 года. Вверху README по-прежнему стояла пометка Beta. Идея проекта — дать каждому ИИ-коллеге (в репозитории их называют Bot) собственный компьютер: с настоящим браузером, собственной авторизованной сессией, файлами и инструментами, к которым ему предоставили доступ.

В README сказано прямо: это «шаблон, а не продукт». У него нет облачной версии, в которой можно зарегистрироваться, и он не распространяется как пакет для установки в зависимости. Предполагается, что вы клонируете репозиторий, заменяете пример пакета арендатора в examples/ своими коллегами, каналами и навыками, а затем запускаете всё самостоятельно. Так что ответ на вопрос «где выбрать модель?» находится в конфигурационном файле, а не в интерфейсе.

Четыре условия для запуска OpenBot

В таблице ниже перечислено всё, что нужно подготовить до подключения модели. Если чего-то не хватает, проверить дальнейшую настройку не получится.

Что нужно Требования Пояснение
Docker Для запуска PostgreSQL (с pgvector) и встроенного бота scripts/start.sh запускает сервисы Docker и выполняет миграции
Bun Версия 1.4 или выше Для установки зависимостей используйте bun install
CopilotKit Intelligence Проект и лицензия; есть бесплатный тариф Локальное тестирование проводилось на macOS с Docker Desktop. Локальная лицензия действует 30 дней, её можно продлить командой npx copilotkit@latest local renew
API-ключ модели Ключ для OpenAI-совместимого эндпоинта В статье используется токен APIYI, base_url — https://api.apiyi.com/v1

Важность Intelligence легко недооценить. В комментариях к .env.example указано, что без URL Intelligence, URL шлюза или ключа сервер просто откажется запускаться: «There is no degraded mode» — ограниченный режим работы не предусмотрен. Дело в том, что постоянные ветки диалога и память хранятся именно там: без Intelligence контекст будет теряться после каждого разговора. Поэтому OpenBot нельзя назвать полностью автономным офлайн-решением.

OPENAI_BASE_URL меняет настройки всего развёртывания

В README сказано: «no model ships in the box» — модель не входит в пакет. Учётные данные предоставляет администратор; они сохраняются в базе в зашифрованном виде и не попадают в логи. Выбор модели определяется переменными окружения на уровне развёртывания. Самая важная из них — OPENAI_BASE_URL. Согласно официальной документации, она может указывать на любой эндпоинт с совместимым API: шлюз к нескольким провайдерам, прокси или модель на собственном оборудовании. В комментарии к .env.example сказано ещё конкретнее: подойдёт любой эндпоинт с поддержкой /v1/chat/completions.

Эта переменная действует на всё развёртывание, а не на отдельного бота. Её считывают в трёх местах: клиент API server для встроенного агента, agent-bot, который создаёт собственный клиент, и agent-langgraph с настройкой BOT_PROVIDER=openai. Как отмечают разработчики, преимущество такого подхода в том, что не возникнет ситуации, когда половина запросов в одном развёртывании идёт на новый адрес, а половина — на старый.

openbot-apiyi-env-config-guide-ru-image-1


Три изменения для подключения APIYI: настройка переменных окружения OpenBot

Как OpenBot подключается к APIYI

APIYI предоставляет OpenAI-совместимый интерфейс: укажите https://api.apiyi.com/v1 в качестве base_url, и запросы будут отправляться на /v1/chat/completions. Это как раз соответствует требованиям OpenBot к OPENAI_BASE_URL. Есть ещё один нюанс: OpenBot передаёт имя модели без изменений (verbatim), а /v1/models в APIYI возвращает имя без префикса — claude-opus-5-5. Поэтому не добавляйте префикс openai/, как в примере для официального шлюза. Указанное в нём имя openai/gpt-5.6-terra подходит только для эндпоинтов, которые используют пространство имён в названиях моделей.

Сначала посмотрим на общую таблицу, а затем перейдём к настройке.

Что изменить Какое значение указать Зачем
OPENAI_API_KEY в .env Токен sk-..., созданный в консоли APIYI Встроенный агент и два комплектных бота по умолчанию используют этот ключ
OPENAI_BASE_URL в .env https://api.apiyi.com/v1 Направляет все запросы к моделям в развёрнутом приложении на совместимый эндпоинт APIYI
BOT_MODEL в .env claude-opus-5-5 Указывает модель для запускаемого бота; если не заполнить, используется значение из файла спецификации провайдера
default_model в examples/<ваш_пакет>/model.yaml claude-opus-5-5 В примере пакета сейчас указана gpt-5.6-terra; если не изменить значение, появится ошибка, что модель не существует
BOT_RESPONSES_API в .env Оставить false Claude возвращает ошибку 400 при обращении к эндпоинту Responses в APIYI

Шаг 1: создайте отдельный токен

  1. На странице токенов APIYI api.apiyi.com/token создайте новый ключ, задайте лимит баланса и срок действия, а в назначении укажите «Локальная оценка OpenBot».
  2. На локальной машине отправьте запрос через curl: GET https://api.apiyi.com/v1/models с заголовком Authorization: Bearer sk-....

Критерий проверки: сервер возвращает HTTP 200, а в списке есть claude-opus-5-5. Мы проверили это 2026-11-02: получили 259 моделей, включая claude-opus-5-5 и claude-opus-5-5-thinking.

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

Шаг 2: измените три строки в .env

Следуя официальной инструкции по быстрому старту, сначала выполните cp .env.example .env и bun install. Затем по очереди запустите npx --yes copilotkit@latest login, npx --yes copilotkit@latest project select и bun scripts/setup-learning.ts, чтобы записать ключ runtime и контейнер Learning в .env. После этого измените три строки:

  1. OPENAI_API_KEY=sk-ваш-токен-APIYI
  2. OPENAI_BASE_URL=https://api.apiyi.com/v1
  3. BOT_MODEL=claude-opus-5-5

Также проверьте четыре параметра: оставьте для BOT_PROVIDER значение по умолчанию openai, а для BOT_RESPONSES_API — false; сгенерируйте KEY_ENCRYPTION_KEY командой openssl rand -base64 32; учтите, что AGENT_BOT_MODEL используется только для agent-bot, предназначенного для проверки концепции. По умолчанию это gpt-5.5, и этот параметр не влияет на BOT_MODEL. Если вы тоже собираетесь запускать agent-bot, убедитесь, что это имя есть в /v1/models, или замените его на модель, которую хотите использовать.

Критерий проверки: команда grep OPENAI_ .env выводит правильные ключ и адрес. Адрес должен заканчиваться на /v1, без лишних слэшей и пробелов. Если для доступа к той же конечной точке из контейнера нужен другой маршрут, задайте его через OPENAI_CONTAINER_BASE_URL. Но APIYI доступен через публичный адрес, поэтому обычно эта переменная не нужна.

Шаг 3. Измените одну строку в model.yaml пакета тенанта

Откройте examples/fintech/model.yaml или скопированный пакет тенанта. Сейчас в файле указаны model.provider: openai, model.credential_secret_ref: openai-api-key и model.default_model: gpt-5.6-terra.

  1. Замените значение default_model на claude-opus-5-5.
  2. Оставьте provider со значением openai. По официальной документации здесь допустимы только openai или anthropic. Для OpenAI-совместимого эндпоинта APIYI выбирайте openai.
  3. Не заменяйте credential_secret_ref ключом в открытом виде: это ссылка на сохранённые учётные данные.

Критерий проверки: после запуска bash scripts/start.sh все проверки работоспособности проходят успешно, а по адресу http://localhost:3010 видны два коллеги по умолчанию: General Assistant и Knowledge.

Есть один важный нюанс. При запуске сервер обычно проверяет у OpenAI или Anthropic, можно ли с этим ключом вызвать модель из default_model. Если нет, он выводит model-unavailable или model-credential-rejected. Но если задан OPENAI_BASE_URL, эта проверка пропускается. Поэтому при подключении через APIYI ошибка в названии модели не проявится при запуске — вы узнаете о ней только после отправки первого сообщения. Успешный запуск означает лишь, что сервис работает, а не то, что модель настроена правильно.

openbot-apiyi-env-config-guide-ru-image-2

О версиях: чем v0.2.0 отличается от ветки main

Это важно прояснить. В разделе Unreleased файла CHANGELOG ветки main указано изменение: если встроенный бот использует модель openai/... через OPENAI_BASE_URL, который указывает не на OpenAI и не на Azure, запросы будут направляться на /chat/completions этого эндпоинта, а не в Responses API. Официальное объяснение: большинство OpenAI-совместимых эндпоинтов поддерживают только Chat Completions. В рамках того же изменения добавлена настройка COPILOTKIT_OPENAI_API=responses|chat, которая позволяет принудительно выбрать один из двух API.

Это изменение ещё не вошло в официальный тег v0.2.0. Если вы работаете с v0.2.0, встроенный бот при использовании стороннего base URL всё ещё может обращаться к Responses API. Судя по нашим тестам ниже, это вполне может быть причиной ошибки 400. Есть два варианта: оценить работу на базе ветки main, помня, что она ещё меняется, либо дождаться официального релиза с этим изменением и подключить OpenBot после этого.

🚀 Быстрый старт: прежде чем настраивать OpenBot, рекомендуем отдельно проверить запрос к /v1/chat/completions с токеном APIYI apiyi.com. Добавьте в запрос определение функции и убедитесь, что finish_reason возвращает tool_calls. Если на стороне API всё работает, при дальнейшей диагностике останется проверить только конфигурацию OpenBot.


Для начала разрешите только 3 инструмента: ограничиваем права OpenBot

Почему не стоит сразу открывать OpenBot доступ ко всем инструментам

В официальной документации число инструментов оценивается так: «A model picks the right tool reliably out of about ten, and unreliably out of thirty». Иными словами, примерно из десяти инструментов модель стабильно выбирает нужный, а из тридцати — уже нет. В исходном коде OpenBot зарегистрировано тринадцать инструментов для работы с компьютером. Если добавить к ним инструменты из каталога MCP, эту границу легко превысить уже в первый день.

Если у бота больше двенадцати инструментов, при каждом запуске ему доступны только те, которые нужны для навыка, соответствующего текущему сообщению. Но в документации особо подчёркивается: это лишь сужает набор видимых инструментов и не заменяет настоящую границу безопасности. Таких границ три: разрешения (grant), выданные конкретному боту в Admin, политика действий AGENT_COMPUTER_POLICY и записи аудита. Также учтите, что заводские настройки — deny: [] и allow: ["true"] — фактически разрешают всё.

Список инструментов для старта

Инструмент Назначение На старте
computer_navigate Открыть сайт в браузере ✅ Разрешить
computer_snapshot Получить снимок страницы ✅ Разрешить
computer_read_file Прочитать файл в рабочей области ✅ Разрешить
computer_click / computer_type / computer_key Клик, ввод текста, нажатие клавиш ⏸ Разрешить по необходимости после проверки
computer_write_file Записать файл ⏸ Разрешить по необходимости после проверки
computer_run_command Выполнить команду shell ⛔ Явно запретить

computer_run_command нужно заблокировать отдельно. Если включить COMPUTER_SEPARATE_WORKSPACES в Compose, каждый бот будет запускать shell в собственной папке, но разработчики признают: «Команды по-прежнему могут читать другие папки». Для настоящей изоляции нужен computers.mode: sandbox. На старте брать на себя такой риск ни к чему.

Настраиваем AGENT_COMPUTER_POLICY

Политика задаётся в формате JSON, а правила — в виде выражений CEL, которые могут обращаться к полям tool.name, page.host, file.path и другим. Для начала можно настроить её так:

  1. Добавьте в .env строку: AGENT_COMPUTER_POLICY={"mode":"enforce","deny":["tool.name == 'computer_run_command'"],"allow":["tool.name in ['computer_navigate','computer_snapshot','computer_read_file']"]}
  2. В Admin предоставьте General Assistant доступ к этим трём инструментам и ни к каким другим.
  3. Перезапустите сервис. Если в JSON есть ошибка, сервер не запустится — так проблему будет проще заметить.

Стоит знать два правила оценки политики. Во-первых, deny проверяется раньше allow, поэтому shell останется заблокированным, даже если позже правило allow станет слишком широким. Во-вторых, движок работает по принципу fail closed: если политика отсутствует или пуста, ничего не разрешается; ошибка в deny считается запретом, а ошибка в allow не приводит к разрешению. Принцип простой: сначала ограничить доступ, затем открывать его по необходимости. После успешной проверки добавляйте по одному инструменты для кликов, ввода текста или записи файлов и каждый раз проверяйте журнал аудита.

openbot-apiyi-env-config-guide-ru-image-3


Проверка и устранение неполадок при подключении OpenBot к APIYI

Проверка на практике: открыть страницу, прочитать файл, изучить аудит

Согласно официальной архитектуре, вызов инструмента проходит так: система определяет цель, проверяет действие по текущим политикам, записывает событие аудита и только затем выполняет действие на компьютере. Если переданное действие завершается с ошибкой, в аудит добавляется вторая запись. Сам компьютер не принимает решений о политиках — эта граница проходит через gateway сервера. Поэтому при проверке важно убедиться и в том, что действия выполняются, и в том, что они записываются:

  1. Создайте в /workspace файл notes.md и напишите в нём пару строк.
  2. Попросите General Assistant открыть любую общедоступную веб-страницу, сообщить её заголовок и прочитать содержимое /workspace/notes.md.
  3. Затем попросите выполнить ls /. В этом запросе должно быть отказано, а в ответе должно быть указано, какое правило его заблокировало.
  4. Откройте страницу Audit: на ней должны быть записи о разрешённых вызовах navigate, snapshot и read_file, а также об отказе в вызове run_command. Если нужен экспорт, вызовите GET /api/admin/audit-events?format=csv — за один раз можно получить не более 5 000 строк.

Работу со стороны модели мы проверяли только через APIYI. 2 ноября 2026 года мы вызвали /v1/chat/completions с моделью claude-opus-5-5 и определением функции read_file. Запрос вернул HTTP 200 за 4,06 секунды, значение finish_reason было равно tool_calls, а параметры — {"path":"/workspace/notes.md"}. Расход составил 393 токена промпта и 55 токенов ответа. После добавления stream: true запрос также вернул 200: в SSE-фрагментах были видны имя функции и параметры, поступающие по частям, а завершился поток строкой data: [DONE]. Это показывает, что чат-эндпоинт APIYI возвращает вызовы инструментов Claude в формате OpenAI — именно то, что нужно агенту, в котором модель только выбирает функцию, но не выполняет её.

Таблица устранения неполадок: пять частых ошибок

Симптом Наиболее вероятная причина Что делать
400 field messages is required Запрос попал на эндпоинт Responses. По нашим тестам, при обращении claude-opus-5-5 к /v1/responses в APIYI возвращается эта ошибка Убедитесь, что BOT_RESPONSES_API=false. Если вы используете v0.2.0, встроенный Bot всё равно может обращаться к Responses. В этом случае можно перейти на ветку main и задать COPILOTKIT_OPENAI_API=chat (пока это неопубликованная версия)
401 API-ключ указан неверно, истёк срок его действия или исчерпан лимит баланса токена Проверьте срок действия и баланс на странице токена APIYI, затем повторите запрос к /v1/models через curl
Модель не найдена В default_model по-прежнему указано gpt-5.6-terra или перед именем добавлен префикс openai/ В обоих местах укажите имя без префикса: claude-opus-5-5. Поскольку проверка при запуске пропущена, для проверки нужно отправить сообщение
Инструмент не вызывается Модель не поддерживает вызов инструментов, разрешение grant не выдано или политика блокирует инструмент В официальной документации сказано, что Bot без вызова инструментов не может управлять компьютером. Сначала проверьте журнал аудита на наличие отказов
Запуск отклонён Не хватает настроек Intelligence, в JSON политики допущена ошибка или в provider spec добавлен поставщик без обновления PROVIDER_IDS Заполните все три параметра Intelligence; проверьте JSON. Для подключения APIYI не нужно добавлять поставщика — оставьте openai

💡 Совет по устранению неполадок: при ошибке сначала отправьте тот же запрос напрямую на /v1/chat/completions APIYI (apiyi.com). Если напрямую всё работает, а в OpenBot — нет, проблема в настройках или версии OpenBot. Если и прямой запрос не проходит, проверьте токен и модель. Так вы сразу сузите круг поиска.

Ориентировочная стоимость Claude в OpenBot

APIYI использует оплату по факту потребления, без фиксированной ежемесячной платы. На 2026-11-02 цены на claude-opus-5-5 были следующими; для claude-opus-5-5-thinking они такие же:

Статья расходов Цена за миллион токенов
Входные токены $4
Выходные токены $20
Чтение из кэша $0.2

Актуальные модели и цены смотрите в списке моделей на платформе. В нашем тестовом запросе с инструментами было 393 входных и 55 выходных токенов — стоимость такого вызова невелика. Но когда бот начинает выполнять многошаговый поиск в интернете и читать файлы, контекст быстро растёт. Поэтому рекомендуем также установить лимит баланса для API-ключа.


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

Q1: Нужно ли менять исходный код OpenBot для подключения к APIYI?

Нет. Достаточно изменить три строки в `.env`: `OPENAI_API_KEY`, `OPENAI_BASE_URL` и `BOT_MODEL`, а затем поменять `default_model` в файле `model.yaml` пакета арендатора. Спецификацию провайдера и `PROVIDER_IDS` нужно менять только при добавлении совершенно нового типа провайдера. APIYI использует OpenAI-совместимый интерфейс, поэтому это не требуется.

Q2: Почему не использовать имя с префиксом, например openai/claude-opus-5-5?

OpenBot передаёт имя модели без изменений, поэтому нужно использовать то, которое опубликовано на самом эндпоинте. В списке `/v1/models` на APIYI apiyi.com указано имя без префикса — `claude-opus-5-5`. Если добавить префикс, модель не будет найдена.

Q3: Можно ли включить BOT_RESPONSES_API для работы с Responses API?

При подключении Claude включать его не стоит. В наших тестах запрос `claude-opus-5-5` к `/v1/responses` на APIYI вернул ошибку 400 `field messages is required`, а запрос с `gpt-5.4-mini` — ответ 200. Официальная документация также требует включать этот параметр только тогда, когда эндпоинт действительно поддерживает Responses API.

Q4: Вы проверили работу OpenBot целиком?

Нет. Мы проверили только сторону APIYI: список моделей, чат-запрос с инструментами, потоковый вывод и ошибку эндпоинта Responses. Весь стек OpenBot — Docker и проект Intelligence — на компьютере, где готовилась статья, не запускался. Описание внутренней работы OpenBot основано на официальном репозитории и документации.

Q5: Как не дать боту превысить расходы по API-ключу с оплатой по факту потребления?

На странице токенов APIYI apiyi.com установите для этого ключа лимит баланса и срок действия. Управляйте им отдельно от ключей, которые используются в продакшене. А если дополнительно применять описанную в статье стратегию трёх инструментов, можно ограничить и действия бота, и его расходы.


Итоги

Главное о подключении OpenBot к APIYI

  • Настройки модели нет в интерфейсе: она задаётся в трёх строках .env и одной строке model.yaml в пакете тенанта.
  • base_url действует на всё развёртывание: при изменении OPENAI_BASE_URL переключаются все три типа ботов.
  • Успешный запуск не гарантирует правильную модель: после подключения шлюза проверка пропускается, поэтому убедиться в работе можно, только отправив первое сообщение.
  • Проверяйте версию: переход на /chat/completions пока находится в разделе Unreleased ветки main и ещё не вошёл в v0.2.0.
  • Для начала разрешите только 3 инструмента: deny имеет приоритет над allow, доступ к shell нужно запретить отдельно. Начните с жёстких ограничений и постепенно ослабляйте их.
  • Начните с APIYI и оплаты по факту использования: создайте отдельный токен, установите лимит баланса и указывайте claude-opus-5-5 без префикса.

Настройку модели в OpenBot сложно найти, потому что в интерфейсе её просто нет. Достаточно правильно задать три строки в .env, одну строку в model.yaml и оставить Responses выключенным. Начните с политики, разрешающей только 3 инструмента, — и вся схема станет понятнее. При проверке достаточно убедиться в трёх вещах: веб-страница открывается, файлы читаются, а отклонённые действия записываются в журнал аудита.

Рекомендуем сначала отдельно проверить чат и вызов инструментов с помощью выделенного токена APIYI на apiyi.com, а уже потом подключать OpenBot. Так, если что-то пойдёт не так, будет проще определить, на чьей стороне проблема.


📚 Справочные материалы

  1. Репозиторий CopilotKit/OpenBot: README, Requirements и Quick start
  2. Ссылка: github.com/CopilotKit/OpenBot
  3. Описание: назначение шаблона, предварительные требования, информация о релизе v0.2.0

  4. Документация по настройке OpenBot: переменные окружения модели, model.yaml, проверка при запуске

  5. Ссылка: github.com/CopilotKit/OpenBot/blob/main/docs/configuration.md
  6. Описание: исходные определения OPENAI_BASE_URL, BOT_MODEL и BOT_RESPONSES_API

  7. Документация по архитектуре OpenBot: шлюз, политики и аудит

  8. Ссылка: github.com/CopilotKit/OpenBot/blob/main/docs/architecture.md
  9. Описание: порядок вызова инструментов, интерфейс экспорта данных аудита

  10. Центр документации APIYI: режим совместимости с OpenAI, вызов функций, список моделей

  11. Ссылка: docs.apiyi.com
  12. Описание: формат base_url, формат tools, цена claude-opus-5-5

Автор: техническая команда APIYI
Технические вопросы: свяжитесь с нами на официальном сайте APIYI apiyi.com. Больше материалов по подключению доступно в центре документации docs.apiyi.com

Читайте также

Похожие записи