Сервисы и модели

Раздел Service — единая точка настройки всех внешних сервисов Research Agent. Поисковые провайдеры, методы скачивания и LLM-модели подключаются здесь, в интерфейсе, а не через переменные окружения.

Категории сервисов

  • Поисковые провайдеры — Serper, Keenable, Brave, Tavily и JSON SEO (API-ключи; у JSON SEO дополнительно выбирается поисковая система — Яндекс, Google или Bing — и, по желанию, регион) и SearXNG (base URL собственного экземпляра); по одному экземпляру-сервису на провайдера;
  • Методы скачивания — пять способов получить страницу: Direct HTTP (обычный запрос), Proxied HTTP (через прокси), Browser Emulation (локальный браузер), Nodriver (локальный недетектируемый браузер для защищённых страниц) и Remote Browser (внешний сервис управления браузером). От вас нужны только прокси для Proxied и адрес сервиса для Remote Browser — браузеры для локальных методов скачиваются сами при первом использовании;
  • LLM — любые OpenAI-совместимые провайдеры для извлечения данных.

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

Приоритеты и запасные варианты

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

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

Ключи через переменные окружения

Секрет в настройках сервиса можно не хранить в базе, а записать как ссылку на переменную окружения сервера: $NAME или ${NAME}. При каждом обращении продукт подставляет значение переменной — реальный ключ в базе не появляется. В интерфейсе такая ссылка показывается как есть: это указатель, а не сам ключ, поэтому маскировать её незачем.

Что это даёт: чтобы сменить ключ, не нужно править базу — достаточно поправить значение переменной в окружении и перезапустить контейнер. Если переменная не задана, продукт сообщит об этом понятной ошибкой с именем переменной (например, «ApiKey references environment variable “X” which is not set…»), а не отправит запрос без ключа.

Модели и стоимость

Для извлечения данных подходят любые OpenAI-совместимые модели. Рекомендация автора — DeepSeek-V4-Flash: исследование целиком стоит 9–27 рублей; ещё дешевле обойдётся DeepSeek-V4-Flash-Mini (OpenRouter). Для более тяжёлых задач (написание отчётов, планирование) работает агент с той моделью, что настроена у него, — сервисы Research Agent касаются только извлечения.

Каждый запрос к поставщику моделей помечается строкой PastukhovResearchAgent/0.1.19 — название продукта и его версия, так что провайдеры видят, какой продукт к ним обращается.

Заголовок сессии LLM

Каждый запрос к модели при извлечении несёт идентификатор сессии задания — он передаётся в отдельном заголовке запроса. Имя заголовка задаётся в настройках LLM-сервиса (поле «Имя заголовка сессии»): если оставить его пустым, продукт подставит имя сам — X-Opencode-Session для провайдера opencode.ai и X-Agent-Session для всех остальных.

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

Тестирование сервисов

Каждый сервис проверяется прямо из интерфейса — тестеры выполняют реальный запрос к провайдеру и показывают ответ. Битый ключ виден до того, как он сломает исследование. При редактировании сервиса рядом показывается индикатор «Сохранено/Изменено» — всегда видно, применились ли правки.

Статус agent API

В Settings → Agent API показано, включён ли REST-доступ для внешних агентов (сам ключ не отображается). Управляется переменной RESEARCH_AGENT_API_KEY — подробнее в разделе Интеграция с Pastukhov Agent.

Статистика

  • Completions — история LLM-вызовов: токены, стоимость, скорость по каждому;
  • Sessions — исследовательские сессии: поиски, скачивания и извлечения одной темы с итоговыми счётчиками.
  • Выгрузка в ClickHouse — статистику исследований можно выгружать во внешнюю базу ClickHouse для собственной аналитики: задайте строку подключения переменной RESEARCH_AGENT_CLICKHOUSE_URL, и продукт сам создаст базу с таблицей, дальше данные уходят фоном раз в минуту. Пока переменная не задана, выгрузки нет; при включённой внизу страницы «Аналитика» появляется кнопка «Дозаполнить статистику ClickHouse» для переноса всей истории сразу. Подробнее — в разделе Установка.

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