Примечание автора: в 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 настраивается не в интерфейсе
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. Как отмечают разработчики, преимущество такого подхода в том, что не возникнет ситуации, когда половина запросов в одном развёртывании идёт на новый адрес, а половина — на старый.

Три изменения для подключения 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: создайте отдельный токен
- На странице токенов APIYI
api.apiyi.com/tokenсоздайте новый ключ, задайте лимит баланса и срок действия, а в назначении укажите «Локальная оценка OpenBot». - На локальной машине отправьте запрос через 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. После этого измените три строки:
OPENAI_API_KEY=sk-ваш-токен-APIYIOPENAI_BASE_URL=https://api.apiyi.com/v1BOT_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.
- Замените значение
default_modelнаclaude-opus-5-5. - Оставьте
providerсо значениемopenai. По официальной документации здесь допустимы толькоopenaiилиanthropic. Для OpenAI-совместимого эндпоинта APIYI выбирайтеopenai. - Не заменяйте
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 ошибка в названии модели не проявится при запуске — вы узнаете о ней только после отправки первого сообщения. Успешный запуск означает лишь, что сервис работает, а не то, что модель настроена правильно.

О версиях: чем 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 и другим. Для начала можно настроить её так:
- Добавьте в
.envстроку:AGENT_COMPUTER_POLICY={"mode":"enforce","deny":["tool.name == 'computer_run_command'"],"allow":["tool.name in ['computer_navigate','computer_snapshot','computer_read_file']"]} - В Admin предоставьте General Assistant доступ к этим трём инструментам и ни к каким другим.
- Перезапустите сервис. Если в JSON есть ошибка, сервер не запустится — так проблему будет проще заметить.
Стоит знать два правила оценки политики. Во-первых, deny проверяется раньше allow, поэтому shell останется заблокированным, даже если позже правило allow станет слишком широким. Во-вторых, движок работает по принципу fail closed: если политика отсутствует или пуста, ничего не разрешается; ошибка в deny считается запретом, а ошибка в allow не приводит к разрешению. Принцип простой: сначала ограничить доступ, затем открывать его по необходимости. После успешной проверки добавляйте по одному инструменты для кликов, ввода текста или записи файлов и каждый раз проверяйте журнал аудита.

Проверка и устранение неполадок при подключении OpenBot к APIYI
Проверка на практике: открыть страницу, прочитать файл, изучить аудит
Согласно официальной архитектуре, вызов инструмента проходит так: система определяет цель, проверяет действие по текущим политикам, записывает событие аудита и только затем выполняет действие на компьютере. Если переданное действие завершается с ошибкой, в аудит добавляется вторая запись. Сам компьютер не принимает решений о политиках — эта граница проходит через gateway сервера. Поэтому при проверке важно убедиться и в том, что действия выполняются, и в том, что они записываются:
- Создайте в
/workspaceфайлnotes.mdи напишите в нём пару строк. - Попросите General Assistant открыть любую общедоступную веб-страницу, сообщить её заголовок и прочитать содержимое
/workspace/notes.md. - Затем попросите выполнить
ls /. В этом запросе должно быть отказано, а в ответе должно быть указано, какое правило его заблокировало. - Откройте страницу 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/completionsAPIYI (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. Так, если что-то пойдёт не так, будет проще определить, на чьей стороне проблема.
📚 Справочные материалы
- Репозиторий CopilotKit/OpenBot: README, Requirements и Quick start
- Ссылка:
github.com/CopilotKit/OpenBot -
Описание: назначение шаблона, предварительные требования, информация о релизе v0.2.0
-
Документация по настройке OpenBot: переменные окружения модели,
model.yaml, проверка при запуске - Ссылка:
github.com/CopilotKit/OpenBot/blob/main/docs/configuration.md -
Описание: исходные определения
OPENAI_BASE_URL,BOT_MODELиBOT_RESPONSES_API -
Документация по архитектуре OpenBot: шлюз, политики и аудит
- Ссылка:
github.com/CopilotKit/OpenBot/blob/main/docs/architecture.md -
Описание: порядок вызова инструментов, интерфейс экспорта данных аудита
-
Центр документации APIYI: режим совместимости с OpenAI, вызов функций, список моделей
- Ссылка:
docs.apiyi.com - Описание: формат
base_url, формат tools, ценаclaude-opus-5-5
Автор: техническая команда APIYI
Технические вопросы: свяжитесь с нами на официальном сайте APIYI apiyi.com. Больше материалов по подключению доступно в центре документации docs.apiyi.com
