Харвестеры

Харвестеры — это сборщики данных: сервисы, которыми агент массово ищет информацию в интернете, скачивает страницы и обрабатывает тексты моделями. Название взято из интерфейса продукта, а суть простая: вместо того чтобы ходить по сайтам по одному, агент запускает большой сбор, а Data Agent сам следит за скоростью, ограничениями сайтов и учётом расходов.

Зачем это нужно

Обычная выгрузка берёт данные из одного источника: адрес API, таблица в базе, файл на сайте. Массовый сбор — это когда страниц, запросов или текстов много: сотни позиций каталога, десятки поисковых запросов, тысячи коротких описаний. Здесь и нужны сборщики:

  • сравнить цены и ассортимент конкурентов по сотням страниц;
  • собрать отзывы и обсуждения из разных мест;
  • набрать материал для анализа: описания товаров, объявления, публикации;
  • разом обработать большой объём текста моделью — разметить, сократить, перевести.

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

Три вида сборщиков

Сборщики делятся на три группы: Поиск, Загрузка и Генерация. Каждая группа закрывает свой шаг — найти, скачать, обработать.

  • Serper — результаты поиска Google по ключу сервиса;
  • Brave — поиск через API Brave Search;
  • Tavily — веб-поиск для задач с ИИ, умеет сразу отдавать готовый ответ модели;
  • Keenable — веб-поиск, созданный для агентов;
  • SearXNG — метапоисковик на вашем собственном сервере;
  • DuckDuckGo — бесплатный поиск без ключа, но с обязательным ограничением частоты запросов;
  • JsonSeo — выдача Яндекса, Google и Bing, оплата за страницу выдачи.

Загрузка — забрать страницу

  • Direct HTTP — обычный запрос страницы: самый дешёвый и быстрый способ, пасует там, где содержимое рисуется скриптами или стоит защита от ботов;
  • Proxied HTTP — то же самое через прокси: помогает, когда сайт ограничивает доступ по стране или по частоте запросов;
  • Browser Emulation — локальный браузер (Playwright) на вашем сервере: прогружает страницы со скриптами, скачивается автоматически при первом использовании;
  • Nodriver — локальный недетектируемый браузер: лучший вариант для страниц с защитой от ботов, пакет и Chromium скачиваются сами;
  • Remote Browser — удалённый сервис управления браузером: для сайтов с защитой от ботов и обилием скриптов.

HTML-страницы сохраняются как чистый Markdown: преобразование делает Trafilatura, поэтому остаётся текст, а навигация и реклама уходят. Исходная страница сохраняется рядом — по ней всегда можно проверить, что было на сайте.

Генерация — обработать моделью

Сборщик генерации — это любая модель с API OpenAI Chat Completions: OpenAI, OpenRouter, DeepSeek и другие. Он нужен для массовой обработки текста: разметить данные, извлечь нужные поля, перевести, сократить. Каждое обращение уходит большим пакетом, а расходы считаются по токенам.

Как настроить сборщик

Сборщик настраивается в разделе «Харвестеры». Общие поля одинаковы для всех:

  • имя — как вы будете его узнавать;
  • тип — выбирается при создании и потом не меняется;
  • переключатель «включён» — выключенный сборщик в работе не участвует;
  • приоритет — чем меньше число, тем раньше сборщик пробуется;
  • максимальный параллелизм — сколько задач уходит одновременно;
  • лимит запросов — сколько запросов за период (пусто — без ограничений).

Ниже — настройки конкретного типа: ключ сервиса, базовый адрес, прокси, таймаут, имя модели, максимальное число выходных токенов, температура и другие. Интерфейс показывает ровно те поля, которые нужны выбранному типу.

Ключи и пароли хранятся под маской: в списке и в форме видно только ••••, а «показать» — отдельное действие. Вместо самого ключа можно указать ссылку на переменную окружения сервера (например, $MY_KEY): тогда секрет не лежит в базе приложения, а берётся из окружения в момент вызова. Если переменная не задана, сборщик честно сообщит, какого значения не хватает.

У каждого сборщика есть кнопка «Тест»: она делает настоящий пробный вызов — небольшой поисковый запрос, загрузку example.com или крошечную генерацию — и показывает ответ сервиса. Это самый быстрый способ проверить, что ключ рабочий, а настройки верные. Сборщик можно клонировать вместе с настройками или удалить, когда он больше не нужен.

Порядок и запасной вариант

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

Если сбор закреплён за конкретным сборщиком, запасной вариант не применяется: задание либо выполняется им, либо завершается ошибкой. Это нужно, когда важен именно один источник — например, чтобы сравнение данных месяц к месяцу шло по одинаковым правилам.

Сборы — что получилось

Сбор — это задание массового сбора: пакет запросов, страниц или текстов. Ставит его агент по вашей просьбе из чата, а раздел «Сборы» показывает, что с ним происходит. Рядом с каждым заданием видно категорию, состояние, сколько объектов уже обработано, объёмы и стоимость, а также ожидаемое время завершения.

Состояние меняется по ходу работы: ожидает, выполняется, завершено или ошибка. Внутри задания — результат по категориям:

  • по поиску — найденные ссылки по каждому запросу, лучшие наверху;
  • по загрузке — таблица файлов с просмотром текста и исходной страницы;
  • по генерации — попытки с вопросом и ответом, число токенов и стоимость.

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

Где лежат скачанные файлы

Скачанные страницы и документы складываются в папку /data/harvest (её можно перенести переменной DATA_AGENT_HARVEST_FOLDER). Внутри — папки по датам, а имя файла собирается из домена и названия страницы. У каждой страницы рядом лежат два файла: текст в Markdown и исходный HTML. Документы другого вида — например, PDF — сохраняются как есть, со своим расширением.

Скачанные файлы — временный материал, а не архив: уборщик удаляет их через двое суток (срок меняется переменной DATA_AGENT_HARVEST_RETENTION_HOURS). В базе остаются пути и размеры, а вот то, ради чего сбор затевался, стоит сохранять отдельно — в Lakehouse. Долго живущие данные — это уже задача скриптов, а не сборщиков.

Сколько это стоит

Массовый сбор расходует реальные деньги: запросы к платным поисковым сервисам и обращения к моделям не бесплатны. Чтобы расходы были под контролем, у каждого сборщика есть свои цены:

  • у поиска — цена за один запрос;
  • у загрузки — цена за одну страницу;
  • у генерации — цены за миллион токенов: ввод, вывод, чтение из временного хранилища и запись в него;
  • статистика показывает, сколько уже потрачено и на что.

Экономить помогает приоритет: дешёвые модели ставятся первыми, дорогие — в запас. Лёгкие задачи вроде разметки уходят на недорогую модель, а тяжёлый разбор достаётся мощной, только когда первая не справилась.

Статистика сборщика

У каждого сборщика есть подробная карточка. В ней видно:

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

У нового сборщика все числа нулевые — это нормально, пока через него не пойдут задачи. Как только сбор пошёл, статистика заполняется сама.

Читайте также: Источники данных, Скрипты, Интеграция с Pastukhov Agent.

← Оглавление документации