LiveKit: как собрать голосового ИИ-агента с камерой, поиском и управлением браузером. Пошагово
Содержание
- Что получится в итоге
- Что понадобится
- Шаг 1. Создаём проект в LiveKit Cloud
- Шаг 2. Создаём агента из шаблона
- Шаг 3. Первый запуск
- Шаг 4. Задаём характер
- Шаг 5. Подключаем Gemini
- Шаг 6. Включаем зрение
- Шаг 7. Даём инструмент поиска
- Шаг 8. Подключаем кодинг-агента OpenCode
- Шаг 9. Учим агента управлять браузером
- Шаг 10. Своё веб-приложение
- Шаг 11. Запуск на телефоне
- Если вы работаете из России
- Что важно знать до старта
- Что дальше
Большинство ИИ-помощников живут в чате. Но когда руки заняты, печатать неудобно: нужен помощник, с которым можно говорить. А если он ещё и видит, что у вас в кадре, и сам ищет информацию, это уже рабочий инструмент.
LiveKit это фреймворк с открытым кодом для голосовых ИИ-агентов. Он берёт на себя передачу звука и видео в реальном времени, а вам остаётся описать роль агента и его инструменты. Голосовые агенты сейчас быстро выходят за пределы справочных линий, поэтому разберём сборку по шагам.
Что получится в итоге
Голосовой дворецкий Джарвис. Он отвечает голосом, видит через камеру, ищет в интернете, открывает сайты и нажимает на ссылки. Работает в браузере, в собственном веб-приложении и на телефоне. Роль можно взять любую: консультант по товарам, помощник оператора, голосовой справочник для сотрудников.
Что понадобится
- Python 3.10 или новее и uv. Так требует документация LiveKit. uv это менеджер пакетов для Python.
- Node.js и VS Code. Node.js нужен для веб-интерфейса. Вместо VS Code подойдёт другой редактор, например Cursor.
- LiveKit CLI и аккаунт LiveKit Cloud. Облако бесплатно до 1000 минут в месяц, это около 16 часов.
- Ключ Gemini API. Он нужен для модели, которая говорит и видит.
Команды установки Python, uv, Node.js и CLI для вашей системы есть в документации и на сайтах программ.
Шаг 1. Создаём проект в LiveKit Cloud
Войдите на сайте LiveKit, например, через аккаунт Google. Анкету можно заполнить как угодно. Создайте проект и дайте ему имя. Наблюдение за агентом (observability) на старте отключите. Откроется панель с номером проекта, регионом и счётчиком агентов.

Шаг 2. Создаём агента из шаблона
В терминале VS Code войдите в аккаунт:
lk cloud auth
Программа попросит назвать устройство и откроет браузер: выберите проект и разрешите доступ. Согласитесь сделать его проектом по умолчанию. Теперь команда из документации создаёт агента из готового шаблона:
lk agent init my-agent --template agent-starter-python
Вместо my-agent в примере указано jarvis. Команда скачивает шаблон, создаёт файл .env.local с данными LiveKit и предлагает поставить зависимости. Соглашайтесь.

Шаг 3. Первый запуск
Перейдите в папку агента и запустите его:
cd jarvis
lk agent dev
Откройте ссылку из терминала, нажмите запуск сессии и скажите что-нибудь. Агент ответит голосом, а реплики появятся в консоли. Справа видны три части агента: языковая модель, распознавание речи и синтез речи. Каждую можно заменить.

Шаг 4. Задаём характер
В файле src/agent.py есть блок instructions: системный промт, то есть инструкция, как вести себя агенту. Менять её можно обычными словами. В примере смысл такой:
Ты Джарвис, полезный и саркастичный ИИ-дворецкий. Обращайся к пользователю «сэр». Пример. Пользователь: «Джарвис, сделай для меня такую-то задачу». Джарвис: «Конечно, сэр, как пожелаете. Сейчас сделаю такую-то задачу».
Новые правила и запреты добавляйте в тот же блок. Сохраните файл сочетанием Ctrl+S.
Шаг 5. Подключаем Gemini
Шаблон собирает голос из трёх частей. Заменим их одной моделью реального времени: у неё малая задержка, она понимает несколько языков и принимает видео. В примере взята gemini-3.1-flash-live-preview.
- Плагин. Поставьте пакет Gemini для LiveKit командой из документации и добавьте
googleв импортlivekit.plugins. - Код. Замените блок языковой модели на
google.beta.realtime.RealtimeModelс моделью, голосом и языком. В примере голос Enceladus, британский акцент, языкen-GB. - Ключ. Создайте ключ в документации Gemini API кнопкой создания ключа и запишите его в
.env.local. - Лишнее. Строки распознавания и синтеза речи (STT и TTS) удалите.

В примере модель бесплатна. Запросов в минуту и в сутки можно слать без ограничений, а токенов в минуту 65 000. Агент тратит около 15 000, так что лимит помешает, только если работают четыре агента и больше. Условия могут измениться, проверьте их у себя.
Шаг 6. Включаем зрение
В блоке room_options файла agent.py добавьте строку:
video_input=True
Добавьте зависимость livekit-agents-images командой uv add и перезапустите агента. Включите камеру и спросите, что он видит: в примере агент описал рубашку и микрофон. Просьба заговорить по-немецки тоже сработала сразу. Есть ограничение: текстовый чат с этой моделью не работает.

Шаг 7. Даём инструмент поиска
Инструмент это функция, которую агент вызывает сам. Добавьте зависимости langchain-community и ddgs командой uv add и создайте файл src/tools.py. В нём асинхронная функция search_web: принимает запрос, пишет его в журнал, ищет через бесплатный DuckDuckGo и возвращает результат. Короткое описание внутри функции подсказывает агенту, когда её вызывать. Над ней ставится декоратор @function_tool.

Передайте функцию агенту в параметре tools и добавьте в промт правило:
Используй инструмент search_web, если пользователь просит найти информацию.
Проверить можно прямо в терминале:
uv run src/agent.py console
На вопрос о погоде в примере агент ответил, а в журнале виден вызов поиска. Остановить разговор можно сочетанием Ctrl+C. Так добавляется любая способность: имя параметра говорит, что передавать, описание говорит, когда вызывать, а внутри можно написать любую логику.
Шаг 8. Подключаем кодинг-агента OpenCode
Писать код руками необязательно. В примере дальше работает OpenCode: кодинг-агент с открытым кодом и бесплатными моделями, похожий на Claude Code. Подойдут и Claude Code, и Codex. Установите его по документации (есть вариант через npm), запустите opencode и командой /models проверьте модель. В примере выбрана бесплатная Big Pickle.
Чтобы агент знал LiveKit, подключите MCP-сервер документации. Это удалённый сервер, через который агент получает внешние инструменты. Поручите настройку самому агенту:
Вот руководство по настройке MCP-сервера. Создай файл opencode.json и добавь в него MCP-сервер LiveKit.
Агент создал opencode.json с записью об удалённом сервере. Конфигурация подхватывается после перезапуска: закройте терминал, снова запустите opencode, вернитесь в сессию командой /session и проверьте /mcp. Сервер должен быть в списке подключённых.

Шаг 9. Учим агента управлять браузером
Для этого есть Playwright, набор инструментов для управления Chrome. Не просите писать код сразу. Командой /agents переключитесь в режим Plan: он ничего не меняет, а только составляет план. Режим Build, наоборот, делает всё немедленно.
Составь план: добавить весь функционал Playwright в голосового агента через дополнительные инструменты, чтобы он полностью управлял браузером.
В примере план оказался разумным: поставить зависимости, создать browser.py со всеми инструментами, подключить их в agent.py и дописать в промт, как ими пользоваться. Среди инструментов открытие и закрытие браузера, переход по адресу, возврат назад, клик, ввод текста, снимок экрана, чтение страницы и вкладки. Агент спросил, делать открытие и переключение вкладок одним инструментом или двумя, и рекомендовал два.

Вернитесь в режим Build и подтвердите: два отдельных инструмента. Перезапустите агента и проверьте голосом. В примере он по камере увидел белую футболку, по просьбе открыл DuckDuckGo, нашёл такие футболки и перешёл по первой ссылке с Amazon. Потом вернулся назад, открыл Google и показал на карте маршрут пешком и на транспорте.

Почему не поручить кодинг-агенту всё с самого начала? Аккаунты и пароли всё равно настраиваются руками, а понимание устройства помогает направлять агента и проверять его план.
Шаг 10. Своё веб-приложение
Консоль годится для проб, а для работы лучше свой интерфейс. У LiveKit есть стартовые приложения, среди них шаблон Next.js для голосового агента. Дайте ссылку на его репозиторий кодинг-агенту:
Скачай этот интерфейс в наш проект в папку frontend и установи всё необходимое.
Агент спросит разрешение прочитать .env.local с ключами: разрешайте один раз. Затем запустите агента, а в папке frontend интерфейс командой pnpm dev или npm run dev. Ошибку при запуске просто вставьте кодинг-агенту: в примере он исправил её сам.
Интерфейс локальный, поэтому его можно менять. Анимацию агента задают через Agents UI: пять стилей (aura, wave, radial, grid, bar) и цвет, который выбирается ползунком. В примере выбраны сетка и оранжевый цвет, а изменение сделал кодинг-агент. В интерфейсе есть и кнопка показа экрана: агент описал содержимое окна VS Code.

Шаг 11. Запуск на телефоне
У LiveKit есть шаблон на Flutter для Android и iOS. Кодинг-агенту достаточно сказать скачать проект в вашу папку. Дальше:
- Файл с адресом. В папке
assetsпереименуйте файл с окончанием.exampleв.env. - Идентификатор. В настройках LiveKit Cloud включите сервер токенов для разработки (development token server), сохраните изменения и скопируйте его идентификатор в поле sandbox ID файла
.env. - Flutter. Поставьте расширение Flutter в VS Code, а сам Flutter поручите установить кодинг-агенту. Проверка:
flutter --version. В примере это версия 3.47. - Телефон. На Android включите режим разработчика, нажав на номер сборки несколько раз, затем отладку по USB. Подключите телефон кабелем.
- Запуск. Выполните
flutter devices, затемflutter pub get, затемflutter run -dс именем устройства. Агент при этом тоже должен быть запущен.
На iPhone порядок тот же, только режим разработчика включается иначе. В примере на телефоне агент увидел монитор и по просьбе нашёл информацию в интернете. Управление браузером работает только на компьютере.
Если вы работаете из России
LiveKit открытый, его можно запустить на своём сервере. В примере взято облако, потому что проще, а доступность облака и документации из вашей сети проверьте заранее.
Больше вопросов к Gemini: сервисы Google из России могут не открываться. Но модель реального времени в шаблоне это замена, а исходная схема собрана из трёх частей, и каждую можно взять другой:
- Языковая модель. Открытая модель на своём сервере или российская модель, если она подходит по смыслу.
- Распознавание и синтез речи. Открытые модели у вас на сервере. Качество для русского языка проверьте заранее.
- Кодинг-агент. OpenCode открытый и работает с разными моделями.
- Поиск. DuckDuckGo заменит любой доступный поисковик: инструмент это обычная функция.
Платой за замену станет задержка: у модели реального времени она малая, у связки из трёх моделей обычно больше.
Что важно знать до старта
- Модель с пометкой preview. Это предварительная версия, лимиты и условия могут измениться.
- Нет текстового чата. С этой моделью работает только голос.
- Ключи в
.env.local. Не передавайте файл посторонним и не выкладывайте. Кодинг-агент просит разрешение его прочитать: давайте его по одному разу. - Камера и экран уходят во внешний сервис. Не включайте их там, где на виду конфиденциальные данные.
- Агент действует в браузере сам. Он кликает и вводит текст. Не давайте ему доступ к платежам и рабочим аккаунтам: страница может содержать текст, похожий на команду, и агент способен принять его за указание.
- Кодинг-агенту нужен надзор. Сначала план, потом сборка: так видно, что он собирается менять.
- Сложное лучше делать платными инструментами. Например, управление браузером с телефона на бесплатных получается хуже.
Что дальше
Главное в этой сборке не Джарвис, а порядок: роль в промте, одна функция на одну способность и описание, по которому агент понимает, когда её вызвать. Так добавляется что угодно: запрос в CRM, проверка остатков, создание заявки.
Мы в Агентехе учим сотрудников собирать голосовых и текстовых ИИ-агентов под задачи своего отдела: от формулировки роли и инструментов до безопасной работы с ключами и данными. Как устроено обучение.