Chuyển tới nội dung chính

Tìm kiếm & trích xuất trên web

Hermes Agent bao gồm hai công cụ web có thể gọi theo mô hình được hỗ trợ bởi nhiều nhà cung cấp:

  • web_search — tìm kiếm trên web và trả về kết quả được xếp hạng
  • web_extract — tìm nạp và trích xuất nội dung có thể đọc được từ một hoặc nhiều URL (có hỗ trợ thu thập dữ liệu sâu tích hợp khi phần phụ trợ cung cấp nó)

Cả hai đều được cấu hình thông qua một lựa chọn phụ trợ duy nhất. Các nhà cung cấp được chọn thông qua hermes tools hoặc được đặt trực tiếp trong config.yaml. Khả năng thu thập thông tin đệ quy (Firecrawl/Tavily) được hiển thị thông qua web_extract thay vì dưới dạng công cụ web_crawl riêng biệt.

Phần phụ trợ

ProviderEnv VarSearchExtractCrawlFree tier
Firecrawl (default)FIRECRAWL_API_KEY500 credits/mo
SearXNGSEARXNG_URL✔ Free (self-hosted)
TavilyTAVILY_API_KEY1 000 searches/mo
ExaEXA_API_KEY1 000 searches/mo
ParallelPARALLEL_API_KEYPaid

Phân chia theo khả năng: bạn có thể sử dụng các nhà cung cấp khác nhau để tìm kiếm và trích xuất một cách độc lập — ví dụ: SearXNG (miễn phí) để tìm kiếm và Firecrawl để trích xuất. Xem [Cấu hình theo khả năng](#cấu hình theo khả năng) bên dưới.

Nous Người đăng ký

Nếu bạn có đăng ký Nous Portal trả phí, bạn có thể tìm kiếm và trích xuất trên web thông qua Tool Gateway thông qua Firecrawl được quản lý — không cần khóa API. Chạy hermes tools để kích hoạt nó.


Cách web_extract xử lý các trang dài

Phần phụ trợ trả về đánh dấu trang thô, có thể rất lớn (chuỗi diễn đàn, trang tài liệu, bài viết tin tức có nhận xét được nhúng). Để giữ cho cửa sổ ngữ cảnh của bạn có thể sử dụng được và giảm chi phí, web_extract chạy nội dung được trả về thông qua web_extract mô hình phụ trợ trước khi chuyển nó cho tổng đài viên. Hành vi hoàn toàn phụ thuộc vào kích thước:

Page size (characters)What happens
Under 5 000Returned as-is — no LLM call, full markdown reaches the agent
5 000 – 500 000Single-pass summary via the web_extract auxiliary model, capped at ~5 000 chars of output
500 000 – 2 000 000Chunked: split into 100 k-char chunks, summarize each in parallel, then synthesize a final summary (~5 000 chars)
Over 2 000 000Refused with a hint to use web_crawl with focused extraction instructions or a more specific source

Bản tóm tắt giữ lại các trích dẫn, khối mã và thông tin chính ở định dạng ban đầu — đó là một công cụ nén nội dung chứ không phải một công cụ diễn giải. Nếu quá trình tóm tắt không thành công hoặc hết thời gian, Hermes sẽ quay trở lại ~5 000 ký tự đầu tiên của nội dung thô chứ không phải là một lỗi vô ích.

Mô hình nào thực hiện tóm tắt?

Tác vụ phụ trợ web_extract. Theo mặc định (auxiliary.web_extract.provider: "auto"), đây là mô hình trò chuyện chính của bạn — cùng một nhà cung cấp, cùng một mô hình với mô hình hermes. Điều đó tốt cho hầu hết các thiết lập, nhưng trên các mô hình lý luận đắt tiền (Opus, MiniMax M2.7, v.v.), mỗi trích xuất trang dài đều bổ sung thêm chi phí đáng kể.

Để định tuyến các bản tóm tắt trích xuất tới một mô hình nhanh, rẻ bất kể mô hình chính của bạn là gì:

# ~/.hermes/config.yaml
auxiliary:
web_extract:
provider: openrouter
model: google/gemini-3-flash-preview
timeout: 360 # seconds; raise if you hit summarization timeouts

Hoặc chọn theo cách tương tác: hermes modelĐịnh cấu hình các mô hình phụ trợweb_extract.

Xem Mô hình phụ trợ để biết tham chiếu đầy đủ và các mẫu ghi đè theo từng tác vụ.

Khi việc tóm tắt bị cản trở

Nếu bạn đặc biệt cần nội dung trang thô, chưa được tóm tắt — ví dụ: bạn đang tìm kiếm một trang có cấu trúc trong đó bản tóm tắt LLM sẽ loại bỏ các trường quan trọng — thay vào đó hãy sử dụng browser_navigate + browser_snapshot. Công cụ trình duyệt trả về cây khả năng truy cập trực tiếp mà không cần viết lại mô hình phụ trợ (tuân theo giới hạn ảnh chụp nhanh 8 000 ký tự của riêng nó trên các trang lớn).


Cài đặt

Thiết lập nhanh qua hermes tools

Chạy hermes tools, điều hướng đến Tìm kiếm & trích xuất trên web và chọn nhà cung cấp. Trình hướng dẫn sẽ nhắc nhập URL hoặc khóa API được yêu cầu và ghi nó vào config.

hermes tools

Firecrawl (mặc định)

Tìm kiếm, trích xuất và thu thập thông tin đầy đủ tính năng. Được đề xuất cho hầu hết người dùng.

# ~/.hermes/.env
FIRECRAWL_API_KEY=fc-your-key-here

Nhận chìa khóa tại firecrawl.dev. Cấp miễn phí bao gồm 500 tín dụng/tháng.

Firecrawl tự lưu trữ: Trỏ vào phiên bản của riêng bạn thay vì API đám mây:

# ~/.hermes/.env
FIRECRAWL_API_URL=http://localhost:3002

Khi FIRECRAWL_API_URL được đặt, khóa API là tùy chọn (tắt tính năng xác thực máy chủ bằng USE_DB_AUTHENTICATION=false).


SearXNG (miễn phí, tự lưu trữ)

SearXNG là một công cụ tìm kiếm siêu dữ liệu mã nguồn mở, tôn trọng quyền riêng tư, tổng hợp kết quả từ hơn 70 công cụ tìm kiếm. Không cần khóa API — chỉ cần trỏ Hermes vào một phiên bản SearXNG đang chạy.

SearXNG chỉ dành cho tìm kiếmweb_extract (bao gồm cả các chế độ thu thập thông tin của nó) yêu cầu một nhà cung cấp giải nén riêng.

Tùy chọn A - Tự lưu trữ bằng Docker (được khuyến nghị)

Điều này cung cấp cho bạn một phiên bản riêng tư không có giới hạn tốc độ.

1. Tạo thư mục làm việc:

mkdir -p ~/searxng/searxng
cd ~/searxng

2. Viết 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. Khởi động vùng chứa:

docker compose up -d

4. Bật định dạng API JSON:

SearXNG xuất xưởng với đầu ra JSON bị tắt theo mặc định. Sao chép cấu hình đã tạo và kích hoạt nó:

# Copy the auto-generated config out of the container
docker cp searxng:/etc/searxng/settings.yml ~/searxng/searxng/settings.yml

Mở ~/searxng/searxng/settings.yml và tìm khối formats (khoảng dòng 84):

# Before (default — JSON disabled):
formats:
- html

# Sau (bật JSON cho Hermes):
định dạng:
-html
- json

5. Khởi động lại để áp dụng:

docker cp ~/searxng/searxng/settings.yml searxng:/etc/searxng/settings.yml
docker restart searxng

6. Xác minh nó hoạt động:

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')"

Bạn sẽ thấy một cái gì đó như 10 kết quả. Nếu bạn nhận được 403 Forbidden, định dạng JSON vẫn bị tắt — hãy kiểm tra lại bước 4.

7. Cấu hình Hermes:

# ~/.hermes/.env
SEARXNG_URL=http://localhost:8888

Sau đó chọn SearXNG làm phần phụ trợ tìm kiếm trong ~/.hermes/config.yaml:

web:
search_backend: "searxng"

Hoặc thiết lập qua hermes tools → Tìm kiếm & trích xuất trên web → SearXNG.


Tùy chọn B - Sử dụng phiên bản công khai

Các phiên bản SearXNG công khai được liệt kê tại searx.space. Lọc theo các phiên bản đã bật định dạng JSON (hiển thị trong bảng).

# ~/.hermes/.env
SEARXNG_URL=https://searx.example.com

:::thận trọng Trường hợp công khai Các phiên bản công khai có giới hạn tốc độ, thời gian hoạt động thay đổi và có thể tắt định dạng JSON bất kỳ lúc nào. Để sử dụng trong sản xuất, việc tự lưu trữ được khuyến khích mạnh mẽ. :::


Ghép nối SearXNG với nhà cung cấp giải nén

SearXNG xử lý tìm kiếm; bạn cần một nhà cung cấp riêng cho web_extract (bao gồm mọi chế độ thu thập thông tin sâu). Sử dụng các phím theo khả năng:

# ~/.hermes/config.yaml
web:
search_backend: "searxng"
extract_backend: "firecrawl" # or tavily, exa, parallel

Với cấu hình này, Hermes sử dụng SearXNG cho tất cả truy vấn tìm kiếm và Firecrawl để trích xuất URL - kết hợp tìm kiếm miễn phí với trích xuất chất lượng cao.


Tavily

Tìm kiếm, trích xuất và thu thập thông tin được tối ưu hóa bằng AI với mức miễn phí hào phóng.

# ~/.hermes/.env
TAVILY_API_KEY=tvly-your-key-here

Nhận chìa khóa tại app.tavily.com. Bậc miễn phí bao gồm 1.000 lượt tìm kiếm/tháng.


###Exa

Tìm kiếm thần kinh với sự hiểu biết ngữ nghĩa. Tốt cho nghiên cứu và tìm kiếm nội dung liên quan đến khái niệm.

# ~/.hermes/.env
EXA_API_KEY=your-exa-key-here

Nhận chìa khóa tại exa.ai. Bậc miễn phí bao gồm 1.000 lượt tìm kiếm/tháng.


Song song

Tìm kiếm và trích xuất dựa trên AI với khả năng nghiên cứu sâu.

# ~/.hermes/.env
PARALLEL_API_KEY=your-parallel-key-here

Nhận quyền truy cập tại parallel.ai.


Cấu hình

Phần phụ trợ đơn

Đặt một nhà cung cấp cho tất cả các khả năng của web:

# ~/.hermes/config.yaml
web:
backend: "searxng" # firecrawl | searxng | tavily | exa | parallel

Cấu hình theo khả năng

Sử dụng các nhà cung cấp khác nhau để tìm kiếm và trích xuất. Điều này cho phép bạn kết hợp tìm kiếm miễn phí (SearXNG) với nhà cung cấp dịch vụ trích xuất có trả phí hoặc ngược lại:

# ~/.hermes/config.yaml
web:
search_backend: "searxng" # used by web_search
extract_backend: "firecrawl" # used by web_extract (and its deep-crawl modes)

Khi các khóa theo khả năng trống, cả hai đều thuộc về web.backend. Khi web.backend cũng trống, phần phụ trợ sẽ tự động được phát hiện từ bất kỳ khóa/URL API nào có mặt.

Thứ tự ưu tiên (theo năng lực):

  1. web.search_backend / web.extract_backend (rõ ràng theo khả năng)
  2. web.backend (dự phòng được chia sẻ)
  3. Tự động phát hiện từ các biến môi trường

Tự động phát hiện

Nếu không có phần phụ trợ nào được định cấu hình rõ ràng, Hermes sẽ chọn phần phụ trợ có sẵn đầu tiên dựa trên thông tin xác thực được đặt:

Credential presentAuto-selected backend
FIRECRAWL_API_KEY or FIRECRAWL_API_URLfirecrawl
PARALLEL_API_KEYparallel
TAVILY_API_KEYtavily
EXA_API_KEYexa
SEARXNG_URLsearxng

Xác minh thiết lập của bạn

Chạy hermes setup để xem phần phụ trợ web nào được phát hiện:

✅ Web Search & Extract (searxng)

Hoặc kiểm tra qua CLI:

# Activate the venv and run the web tools module directly
source ~/.hermes/hermes-agent/.venv/bin/activate
python -m tools.web_tools

Điều này in phần phụ trợ đang hoạt động và trạng thái của nó:

✅ Web backend: searxng
Using SearXNG (search only): http://localhost:8888

Khắc phục sự cố

web_search trả về {"thành công": false}

  • Check SEARXNG_URL is reachable: curl -s "http://localhost:8888/search?q=test&format=json"
  • If you get HTTP 403, JSON format is disabled — add json to the formats list in settings.yml and restart
  • If you get a connection error, the container may not be running: docker ps | grep searxng

web_extract nói "phần phụ trợ chỉ tìm kiếm"

SearXNG không thể trích xuất nội dung URL. Đặt web.extract_backend thành nhà cung cấp hỗ trợ trích xuất:

web:
search_backend: "searxng"
extract_backend: "firecrawl" # or tavily / exa / parallel

SearXNG trả về 0 kết quả

Một số trường hợp công khai vô hiệu hóa một số công cụ hoặc danh mục tìm kiếm nhất định. Hãy thử:

  • Một truy vấn khác
  • Một phiên bản công khai khác với searx.space
  • Tự lưu trữ phiên bản của riêng bạn để có kết quả đáng tin cậy

Tỷ lệ bị giới hạn trên phiên bản công khai

Chuyển sang phiên bản tự lưu trữ (xem Tùy chọn A ở trên). Với Docker, phiên bản của riêng bạn không có giới hạn tốc độ.

web_extract trả về nội dung bị cắt bớt kèm theo ghi chú "đã hết thời gian tóm tắt"

Mô hình phụ trợ chưa hoàn thành việc tóm tắt trong thời gian chờ đã định cấu hình. Hoặc:

  • Tăng auxiliary.web_extract.timeout trong config.yaml (360 giây mặc định khi cài đặt mới, 30 giây nếu thiếu khóa)
  • Chuyển tác vụ phụ trợ web_extract sang mô hình nhanh hơn (ví dụ: google/gemini-3-flash-preview) — xem Cách web_extract xử lý các trang dài
  • Đối với các trang mà công cụ tóm tắt không phù hợp, hãy sử dụng browser_navigate thay thế

Đối với các tác nhân cần sử dụng SearXNG trực tiếp qua curl (ví dụ: làm phương án dự phòng khi bộ công cụ web không có sẵn), hãy cài đặt kỹ năng tùy chọn searxng-search:

hermes skills install official/research/searxng-search

Điều này bổ sung một kỹ năng dạy cho tổng đài viên cách:

  • Gọi API JSON của SearXNG thông qua curl hoặc Python
  • Lọc theo danh mục (chung, tin tức, khoa học, v.v.)
  • Xử lý các trường hợp phân trang và lỗi
  • Dự phòng một cách duyên dáng khi SearXNG không thể truy cập được