Браузерный агент
Отправьте цель и стартовый URL — ИИ-агент выполнит задачу в настоящем браузере Chromium и вернёт ответ и структурированный JSON.
Браузерный агент выполняет веб-задачи, которые ваш код не может решить обычным HTTP-запросом: ищет на сайте, переходит по страницам, заполняет и отправляет формы, входит в аккаунты и читает то, что показывает страница. Вы описываете задачу простыми словами. Агент работает в настоящем браузере Chromium, по одному действию за раз, и возвращает текстовый ответ answer, а если вы попросите, ещё и JSON в data.
Он использует тот же API-ключ и предоплаченный баланс, что и остальной Lovely Router. Вы платите за шаг, от $0.006, и модели уже включены. Платы за запуск нет.
Быстро или точно, своя модель, сколько стоит запуск.
Получайте поток шагов и экрана браузера во время работы.
Получайте в data JSON по вашей схеме.
Вопросы, подтверждения, CAPTCHA и перехват управления.
Вход в аккаунт без того, чтобы модель видела пароль.
Пусть агент прикрепит к форме нужный файл.
Получайте уведомления, когда запуск ждёт вас или завершается.
Запуск первой задачи#
Получите API-ключ
Запустите задачу
Отправьте
goalиstart_urlнаPOST /v1/browser/runs. Ответ приходит сразу со статусом202иidзапуска. Агент продолжает работать в фоне.Shellcurl https://lovelyrouter.com/v1/browser/runs \ -H "Authorization: Bearer $LOVELY_API_KEY" \ -H "content-type: application/json" \ -d '{ "goal": "Find the price of the book \"A Light in the Attic\" and whether it is in stock.", "start_url": "https://books.toscrape.com/" }'Дождитесь результата
Запросите запуск с
?wait=30. Запрос удерживается до 30 секунд (максимум 50) и возвращается, как только меняется статус, поэтому цикл из таких вызовов следит за запуском без активного опроса.Чтобы вместо этого наблюдать за запуском — видеть каждый шаг и экран браузера в момент, когда они происходят, — добавьте
"stream": trueпри старте. См. События и экран в реальном времени.Shellcurl "https://lovelyrouter.com/v1/browser/runs/brun_3f9a1c7e0b2d4e6f8a9b0c1d?wait=30" \ -H "Authorization: Bearer $LOVELY_API_KEY"Прочитайте результат
У завершённого запуска есть
status, ответ агентаanswerи его стоимость вcharge_usd(в сокращении):JSON{ "id": "brun_3f9a1c7e0b2d4e6f8a9b0c1d", "object": "browser_run", "status": "succeeded", "mode": "fast", "steps": 2, "max_steps": 50, "current_url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "answer": "\"A Light in the Attic\" costs £51.77 and is in stock (22 available).", "data": null, "error": null, "charge_usd": 0.012, "reserved_usd": 0 }Полный список полей — в разделе Объект запуска. Добавьте к запросу
&trace=1, чтобы получить все шаги, которые сделал агент.
Запускать задачи можно и из консоли: выберите пример или напишите задачу, наблюдайте за экраном браузера и каждым шагом в реальном времени, отвечайте агенту, когда он спрашивает, и копируйте соответствующий код на cURL, Python или JavaScript.
Как работает запуск#
Запуск начинается в статусе running и заканчивается одним из четырёх финальных статусов. В промежутке он может приостановиться в статусе waiting_for_human и продолжиться после вашего ответа.
| Статус | Значение |
|---|---|
running | Агент работает. |
waiting_for_human | Агенту нужны вы: ответ, подтверждение или человек в браузере. Что именно, указано в needs. См. Человек в контуре. |
succeeded | Агент закончил и записал свой answer. |
failed | Запуск завершился, не выполнив задачу. Причина указана в error, например reached the step limit (50) или blocked by the website. |
timed_out | Никто не ответил в течение human_timeout_minutes. |
stopped | Вы остановили его через POST /v1/browser/runs/{id}/stop. |
На каждом шаге агент читает текущую страницу, выбирает одно действие и выполняет его. Он останавливается, когда цель достигнута, когда нужен человек или когда исчерпан max_steps. Прежде чем нажать кнопку, отправляющую форму, он сверяет каждое поле с вашей целью и исправляет значения, которые ей не соответствуют.
succeeded означает, что агент закончил работу, а не что сайт принял сделанное. Для задач, которые что-то отправляют, читайте answer: если страница показала ошибку валидации или не показала подтверждения, ответ об этом скажет.
Когда запуск завершается, неиспользованная часть суммы, зарезервированной в начале, возвращается на баланс, а charge_usd показывает итоговое списание. До этого момента charge_usd равен null.
Что считается шагом#
Шаг — это одно действие в браузере:
- клик по ссылке, кнопке, флажку или пункту списка
- ввод текста в поле или ввод с нажатием Enter
- выбор варианта в выпадающем списке
- подстановка сохранённого секрета или загрузка файла
- возврат на предыдущую страницу
- ожидание страницы, которая ещё не загрузилась, или её повторная загрузка
- выполнение кода только для чтения, чтобы извлечь данные со страницы (только в точном режиме)
- запись итогового ответа
Паузы ради человека (вопрос, подтверждение, передача управления) видны в трассировке, но не оплачиваются. Неудачный шаг, например из-за того, что элемент сместился, всё равно считается. Поле steps запуска учитывает каждый записанный шаг, включая паузы.
Простой поиск занимает от 1 до 3 шагов. Вход в аккаунт — от 4 до 8. Длинная многостраничная форма — от 15 до 25. Примеры стоимости приведены в разделе Режимы, модели и цены.
Как писать работающие цели#
Цель — единственная инструкция для агента. Пишите её так, как ставили бы задачу внимательному ассистенту, который ни разу не видел этот сайт.
- Указывайте все значения, нужные для задачи. Имена, email, даты, количества, точный товар. Не заставляйте агента угадывать: если значения не хватает, он остановится и спросит вас (если вы не отключили вопросы).
- Говорите, что нужно сообщить. «Скажи цену и есть ли книга в наличии» даёт лучший ответ, чем «проверь книгу».
- Для действий указывайте, что подтверждает успех. «Отправь форму и сообщи номер подтверждения».
- Начинайте поближе к задаче. Если знаете, используйте как
start_urlстраницу поиска или саму форму, а не главную. - Называйте, где искать, если на сайте таких мест несколько: «во вкладке Reviews», «через собственный поиск сайта».
- Одна задача на запуск. Разносите несвязанные задачи по отдельным запускам.
- Не пишите секреты в цели. Передавайте пароли как секреты из хранилища, никогда в тексте цели.
| Вместо | Пишите |
|---|---|
| Найди дешёвые рейсы в Нью-Йорк. | Найди рейсы в одну сторону из SFO в JFK на 3 ноября 2026 года для 1 взрослого. Сообщи самый дешёвый тариф, авиакомпанию и время вылета. |
| Подпиши меня на рассылку. | Подпиши ada@example.com на еженедельную рассылку в подвале страницы и сообщи текст подтверждения. |
| Получи истории. | Получи 5 главных историй на первой странице с заголовком, ссылкой и количеством очков. (Добавьте output_schema, чтобы получить JSON.) |
| Войди как ada / hunter22 и скачай мой счёт. | Войди в аккаунт и сообщи сумму последнего счёта. Передайте "secrets": ["shop_user", "shop_password"]. |
Ограничения#
| Ограничение | Значение |
|---|---|
Длина goal | 4000 символов |
start_url | URL http или https |
max_steps | От 1 до 100, по умолчанию 50 |
human_timeout_minutes | От 1 до 1440, по умолчанию 30 |
?wait= в запросе статуса | До 50 секунд |
| Кадры экрана в потоке | Не больше примерно 4 в секунду |
Размер output_schema | 20 КБ |
| Одновременные запуски | 10 на аккаунт, общий лимит с инструментами данных |
| Ссылка Live View для передачи управления | Действует 1 час |
| Файлы | 10 МБ каждый, 100 на аккаунт |
| Значение секрета | 4 КБ |
Если достигнут лимит одновременных запусков, POST /v1/browser/runs возвращает 429. Если баланс меньше суммы, которую резервирует запуск, возвращается 402. Все ошибки перечислены в разделе Ошибки.
Использование из ИИ-агента#
MCP-сервер по адресу https://lovelyrouter.com/mcp предоставляет браузерного агента в виде четырёх инструментов: browser_run, browser_status, browser_reply и browser_takeover. Они используют тот же ключ, лимиты и цены, что и REST API. MCP-инструменты принимают имена секретов из хранилища, а не их значения: сначала сохраните секреты в хранилище.