Веб-поиск и извлечение
Агент Hermes включает в себя два вызываемых по модели веб-инструмента, поддерживаемых несколькими поставщиками:
web_search— поиск в Интернете и получение ранжированных результатов.web_extract— получение и извлечение читаемого контента из одного или нескольких URL-адресов (со встроенной поддержкой глубокого сканирования, если ее предоставляет серверная часть).
Оба настраиваются посредством единого выбора серверной части. Провайдеры выбираются с помощью инструментов Hermes или задаются непосредственно в config.yaml. Возможности рекурсивного сканирования (Firecrawl/Tavily) предоставляются через web_extract, а не как отдельный инструмент web_crawl.
Бэкэнды
| Провайдер | Конверт Вар | Поиск | Экстракт | Сканирование | Уровень бесплатного пользования |
|---|---|---|---|---|---|
| Firecrawl (по умолчанию) | FIRECRAWL_API_KEY |
✔ | ✔ | ✔ | 500 кредитов/мес |
| ИскатьXNG | SEARXNG_URL |
✔ | — | — | ✔ Бесплатно (собственное размещение) |
| Тавили | TAVILY_API_KEY |
✔ | ✔ | ✔ | 1 000 поисков/мес |
| Экса | EXA_API_KEY |
✔ | ✔ | — | 1 000 поисков/мес |
| Параллельно | PARALLEL_API_KEY |
✔ | ✔ | — | Платный |
Разделение по возможностям: вы можете использовать разных поставщиков для поиска и извлечения независимо друг от друга — например, SearXNG (бесплатно) для поиска и Firecrawl для извлечения. См. Конфигурация по возможностям ниже.
💡 Tip
Подписчики Если у вас есть платная подписка на Nous Portal, веб-поиск и извлечение доступны через Tool Gateway через управляемый Firecrawl — ключ API не требуется. Запустите «Инструменты Гермеса», чтобы включить его.Как web_extract обрабатывает длинные страницы
Бэкэнды возвращают необработанную разметку страницы, которая может быть огромной (темы форумов, сайты документации, новостные статьи со встроенными комментариями). Чтобы сохранить удобство использования вашего контекстного окна и снизить затраты, web_extract пропускает возвращаемый контент через вспомогательную модель web_extract перед передачей его агенту. Поведение зависит исключительно от размера:
| Размер страницы (символов) | Что происходит |
|---|---|
| До 5 000 | Возвращено как есть — без вызова LLM, полная скидка доходит до агента |
| 5 000 – 500 000 | Сводка за один проход с помощью вспомогательной модели web_extract, ограничение вывода ~ 5 000 символов |
| 500 000 – 2 000 000 | По частям: разделить на фрагменты по 100 тыс. символов, суммировать каждый параллельно, затем синтезировать окончательный итог (~5 000 символов) |
| Более 2 000 000 | Отказался с намеком на использование web_crawl с конкретными инструкциями по извлечению или более конкретным источником |
В сводке сохраняются цитаты, блоки кода и ключевые факты в исходном формате — это компрессор контента, а не перефразировщик. Если суммирование не удается или время ожидания истекает, Hermes возвращается к первым ~ 5 000 символов необработанного содержимого, а не к бесполезной ошибке.
Какая модель делает подведение итогов?
Вспомогательная задача web_extract. По умолчанию (auxiliary.web_extract.provider: "auto") это ваша основная модель чата — тот же провайдер, та же модель, что и hermes model. Это нормально для большинства настроек, но в дорогих моделях рассуждения (Opus, MiniMax M2.7 и т. д.) каждый длинный фрагмент страницы увеличивает значительную стоимость.
Чтобы направить сводные данные извлечения в дешевую и быструю модель независимо от вашего основного устройства:
# ~/.hermes/config.yaml
auxiliary:
web_extract:
provider: openrouter
model: google/gemini-3-flash-preview
timeout: 360 # seconds; raise if you hit summarization timeouts
Или выберите интерактивно: hermes model → Настроить вспомогательные модели → web_extract.
См. Вспомогательные модели для получения полной информации и шаблонов переопределения для каждой задачи.
Когда мешает обобщение
Если вам конкретно нужен необработанный, необобщенный контент страницы — например, вы очищаете структурированную страницу, на которой из сводки LLM будут удалены важные поля — используйте вместо этого browser_navigate + browser_snapshot. Инструмент браузера возвращает живое дерево доступности без переписывания вспомогательной модели (с учетом собственного ограничения на размер снимка в 8 000 символов на огромных страницах).
Настройка
Быстрая настройка с помощью hermes Tools
Запустите инструменты Hermes, перейдите к разделу Поиск и извлечение в Интернете и выберите поставщика. Мастер запрашивает необходимый URL-адрес или ключ API и записывает его в вашу конфигурацию.
hermes tools
Firecrawl (по умолчанию)
Полнофункциональный поиск, извлечение и сканирование. Рекомендуется для большинства пользователей.
# ~/.hermes/.env
FIRECRAWL_API_KEY=fc-your-key-here
Получите ключ на firecrawl.dev. Уровень бесплатного пользования включает 500 кредитов в месяц.
Самостоятельный Firecrawl: укажите свой собственный экземпляр вместо облачного API:
# ~/.hermes/.env
FIRECRAWL_API_URL=http://localhost:3002
Если установлен FIRECRAWL_API_URL, ключ API является необязательным (отключите аутентификацию сервера с помощью USE_DB_AUTHENTICATION=false).
SearXNG (бесплатно, на собственном хостинге)
SearXNG — это метапоисковая система с открытым исходным кодом, уважающая конфиденциальность и объединяющая результаты более чем 70 поисковых систем. Ключ API не требуется — просто укажите Hermes на работающий экземпляр SearXNG.
SearXNG предназначен только для поиска — для web_extract (включая его режимы сканирования) требуется отдельный поставщик извлечений.
Вариант A — Самостоятельный хостинг с Docker (рекомендуется)
Это дает вам частный экземпляр без ограничений скорости.
1. Создайте рабочий каталог:
mkdir -p ~/searxng/searxng
cd ~/searxng
2. Напишите docker-compose.yml:
# ~/searxng/docker-compose.yml
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
ports:
- "8888:8080"
volumes:
-./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8888/
restart: unless-stopped
3. Запустите контейнер:
docker compose up -d
4. Включите формат JSON API:
SearXNG поставляется с отключенным по умолчанию выводом JSON. Скопируйте сгенерированную конфигурацию и включите ее:
# Copy the auto-generated config out of the container
docker cp searxng:/etc/searxng/settings.yml ~/searxng/searxng/settings.yml
Откройте ~/searxng/searxng/settings.yml и найдите блок formats (около строки 84):
# Before (default — JSON disabled):
formats:
- html
# After (enable JSON for Hermes):
formats:
- html
- json
5. Перезапустите, чтобы подать заявку:
docker cp ~/searxng/searxng/settings.yml searxng:/etc/searxng/settings.yml
docker restart searxng
6. Убедитесь, что это работает:
curl -s "http://localhost:8888/search?q=test&format=json" | python3 -c \
"import sys,json; d=json.load(sys.stdin); print(f'{len(d[\"results\"])} results')"
Вы должны увидеть что-то вроде «10 результатов». Если вы получили сообщение «403 Forbidden», формат JSON по-прежнему отключен — повторите шаг 4.
7. Настроить Гермес:
# ~/.hermes/.env
SEARXNG_URL=http://localhost:8888
Затем выберите SearXNG в качестве механизма поиска в ~/.hermes/config.yaml:
web:
search_backend: "searxng"
Или установите через «инструменты Hermes» → Поиск и извлечение в Интернете → SearXNG.
Вариант Б — использовать общедоступный экземпляр
Публичные экземпляры SearXNG перечислены по адресу searx.space. Фильтруйте по экземплярам, у которых включен формат JSON (показано в таблице).
# ~/.hermes/.env
SEARXNG_URL=https://searx.example.com
```:::осторожно Публичные экземпляры
Публичные экземпляры имеют ограничения по скорости, переменное время безотказной работы и могут отключить формат JSON в любое время. Для производственного использования настоятельно рекомендуется использовать самостоятельный хостинг.</div>
---
#### Соедините SearXNG с поставщиком экстрактов
SearXNG занимается поиском; вам нужен отдельный поставщик для `web_extract` (включая любые режимы глубокого сканирования). Используйте ключи для каждой возможности:
```yaml
# ~/.hermes/config.yaml
web:
search_backend: "searxng"
extract_backend: "firecrawl" # or tavily, exa, parallel
В этой конфигурации Hermes использует SearXNG для всех поисковых запросов и Firecrawl для извлечения URL-адресов, сочетая бесплатный поиск с высококачественным извлечением.
Тавили
Оптимизированный для искусственного интеллекта поиск, извлечение и сканирование с щедрым уровнем бесплатного пользования.
# ~/.hermes/.env
TAVILY_API_KEY=tvly-your-key-here
Получите ключ на app.tavily.com. Уровень бесплатного пользования включает 1 000 поисков в месяц.
Экза
Нейронный поиск с семантическим пониманием. Подходит для исследований и поиска концептуально связанного контента.
# ~/.hermes/.env
EXA_API_KEY=your-exa-key-here
Получите ключ на exa.ai. Уровень бесплатного пользования включает 1 000 поисков в месяц.
Параллельно
Поиск и извлечение данных с помощью искусственного интеллекта и глубокими исследовательскими возможностями.
# ~/.hermes/.env
PARALLEL_API_KEY=your-parallel-key-here
Получите доступ на parallel.ai.
Конфигурация
Одиночный бэкэнд
Установите одного поставщика для всех веб-возможностей:
# ~/.hermes/config.yaml
web:
backend: "searxng" # firecrawl | searxng | tavily | exa | parallel
Конфигурация для каждой возможности
Используйте разных поставщиков для поиска и извлечения. Это позволяет вам комбинировать бесплатный поиск (SearXNG) с платным поставщиком извлечений или наоборот:
# ~/.hermes/config.yaml
web:
search_backend: "searxng" # used by web_search
extract_backend: "firecrawl" # used by web_extract (and its deep-crawl modes)
Когда ключи для каждой возможности пусты, оба попадают в web.backend. Если web.backend также пуст, серверная часть автоматически определяется по любому присутствующему ключу API или URL-адресу.
Приоритетный порядок (по возможности):
1. web.search_backend / web.extract_backend (явно для каждой возможности)
2. web.backend (общий резервный вариант)
3. Автоматическое определение переменных среды.
Автоопределение
Если ни один сервер не настроен явно, Hermes выбирает первый доступный сервер на основе установленных учетных данных:
| Подарок с полномочиями | Автоматически выбранный сервер |
|---|---|
FIRECRAWL_API_KEY или FIRECRAWL_API_URL |
ползать |
PARALLEL_API_KEY |
параллель |
TAVILY_API_KEY |
тавили |
EXA_API_KEY |
экса |
SEARXNG_URL |
поиск |
Проверьте настройки
Запустите hermes setup, чтобы увидеть, какой веб-сервер обнаружен:
✅ Web Search & Extract (searxng)
Или проверьте через CLI:
# Activate the venv and run the web tools module directly
source ~/.hermes/hermes-agent/.venv/bin/activate
python -m tools.web_tools
Это печатает активный бэкэнд и его статус:
✅ Web backend: searxng
Using SearXNG (search only): http://localhost:8888
Устранение неполадок
web_search возвращает {"success": false}
- Проверьте доступность
SEARXNG_URL:curl -s "http://localhost:8888/search?q=test&format=json" - Если вы получаете HTTP 403, формат JSON отключен — добавьте json в список форматов в файле settings.yml и перезапустите.
— Если вы получаете ошибку соединения, возможно, контейнер не запущен:
docker ps | grep searchxng
web_extract говорит "серверная часть только для поиска"
SearXNG не может извлечь содержимое URL-адреса. Установите для web.extract_backend поставщика, который поддерживает извлечение:
web:
search_backend: "searxng"
extract_backend: "firecrawl" # or tavily / exa / parallel
SearXNG возвращает 0 результатов
Некоторые общедоступные экземпляры отключают определенные поисковые системы или категории. Попробуйте: - Другой запрос - Другой публичный экземпляр из searx.space - Самостоятельное размещение собственного экземпляра для надежных результатов.
Скорость ограничена в общедоступном экземпляре
Переключитесь на автономный экземпляр (см. Вариант A выше). Благодаря Docker ваш собственный экземпляр не имеет ограничений по скорости.
web_extract возвращает усеченное содержимое с примечанием «время суммирования истекло».
Вспомогательная модель не завершила суммирование в течение настроенного времени ожидания. Либо:
- Поднимите
auxiliary.web_extract.timeoutвconfig.yaml(по умолчанию 360 с при новых установках, 30 с, если ключ отсутствует) - Переключите вспомогательную задачу
web_extractна более быструю модель (например,google/gemini-3-flash-preview) — см. Какweb_extractобрабатывает длинные страницы - Для страниц, где обобщение не подходит, используйте вместо него
browser_navigate.
Необязательный навык: searxng-search
Для агентов, которым необходимо использовать SearXNG напрямую через «curl» (например, в качестве запасного варианта, когда набор веб-инструментов недоступен), установите дополнительный навык «searxng-search»:
hermes skills install official/research/searxng-search
Это добавляет навык, который учит агента: - Вызов API SearXNG JSON через Curl или Python. - Фильтровать по категориям («общие», «новости», «наука» и т. д.) - Обрабатывать пагинацию и случаи ошибок. - Грациозно отступайте, когда SearXNG недоступен.