# 一个面向 AI agents、能带回页面正文的网页搜索工具

> 给 AI agent 一个网页搜索工具,返回排序后的结果,并把排名靠前的页面读取为 Markdown。工具 schema、搜索预算和成本。无需 KYC,加密货币支付。

- URL: https://llmwebsearch.com/zh/use-cases/ai-agents/
- 最后更新: 2026-10-22
- 发布者: LLMWebSearch (https://llmwebsearch.com)

只能搜索、不能读取的 agent 只能凭摘要猜测。给它一个兼具两者的工具:它搜索实时网页,并把首批页面以干净的 Markdown 返回,编号排列以便模型引用。

**快速回答 — 如何给 AI agent 一个能返回页面内容的网页搜索工具?**

将网页搜索 API 封装为工具,接收查询并返回带页面正文的编号来源。**LLMWebSearch** 通过一次调用即可完成:来自实时搜索的排序结果,并把前 3 个页面读取为 Markdown,仅消耗一个积分。价格低至 US$9.25(5,000 次搜索),可降至 US$1.20/千次搜索。无需 KYC;加密货币支付。

## LLMWebSearch 作为 agent 工具

| 属性 | 值 |
| --- | --- |
| 工具 | `web_search(query, recent)` 调用 `POST https://llmwebsearch.com/api/v1/search` |
| 返回 | 最多 20 条排序结果;前 3 条附带 Markdown 格式的页面正文 |
| 长度控制 | 每页 `max_chars`,页面数量用 `read`,列表用 `max_results` |
| 成本 | 1 积分支付一次查询：最多 20 条排名结果，其中前 3 条的页面会被读取并以 Markdown 返回。读取 4 到 10 个页面为 2 积分。以错误结束的调用不收费 |
| 筛选 | 可选择结果的国家和语言、时间范围（过去一天、一周、一个月或一年）、网页或新闻结果，以及要包含或排除的域名 |
| 现成集成 | [MCP 服务器](https://llmwebsearch.com/zh/docs/mcp/)、[OpenAI function calling](https://llmwebsearch.com/zh/docs/openai/)、[LangChain 和 LlamaIndex](https://llmwebsearch.com/zh/docs/langchain/)、[n8n](https://llmwebsearch.com/zh/docs/n8n/)、[OpenClaw](https://llmwebsearch.com/zh/docs/openclaw/) |

## 为什么 agent 需要页面正文，而不只是摘要？

因为答案很少就藏在摘要里。搜索结果页只给出标题和搜索引擎挑出的一两行。用户问的那个数字、日期或规则，往往在页面更靠下的位置。

只看到摘要的 agent 只有两个糟糕的选择。它可以从片段作答，冒着答错的风险；或者再调用一个工具去抓取每个页面。第二个选择让往返次数和工具定义都翻倍。

用 LLMWebSearch，前几个页面到手时已经读好了。导航、广告和 cookie 横幅都被去掉，模型就把 token 花在内容上。其余的搜索结果仍带摘要，帮助模型判断是否需要再搜一次。

## 搜索工具应该怎么定义？

把 schema 保持得小：一个必需的 `query`，最多再加一两个开关。模型调用简单的工具更可靠。下面的例子暴露了一个 `recent` 标志，它映射到 `time_range=month`；其余的都写死在你的代码里。

函数返回纯文本，而不是 JSON。每个来源以编号、标题和 URL 开头，后面跟着它的 Markdown。这种排版让 [2] 这样的引用对模型来说很自然。

如果你的 agent 已经内置了一个叫 `web_search` 的工具（Claude Code 和 OpenClaw 就是这样），就把你的工具换个名字，比如 `search_web`。两个工具同名会让模型混淆。

*Python：为 OpenAI 风格 function calling 写的 web_search 工具*

```python
import json
import os

import requests

API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}

# Tool definition in the OpenAI function-calling format; most agent frameworks accept the same JSON schema.
WEB_SEARCH_TOOL = {
    "type": "function",
    "function": {
        "name": "web_search",
        "description": "Search the live web. Returns numbered sources; the first ones include the page text in Markdown.",
        "parameters": {
            "type": "object",
            "properties": {
                "query": {"type": "string", "description": "A short search query, 3 to 8 words"},
                "recent": {"type": "boolean", "description": "True to keep only results from the past month"},
            },
            "required": ["query"],
        },
    },
}


def web_search(query, recent=False, read=3, max_chars=4000):
    """Run one search (1 credit with read <= 3) and return compact text the model can cite."""
    body = {"q": query, "max_results": 5, "read": read, "max_chars": max_chars}
    if recent:
        body["time_range"] = "month"
    resp = requests.post(API, headers=HEADERS, json=body, timeout=60)
    resp.raise_for_status()
    lines = []
    for r in resp.json()["results"]:
        lines.append(f"[{r['position']}] {r['title']} — {r['url']}")
        if r.get("content_status") == "ok":
            lines.append(r["content"])
        else:
            lines.append(r.get("snippet", ""))
        lines.append("")
    return "\n".join(lines)


def run_tool_call(call):
    """Execute a tool call returned by the model and give back the text for the tool message."""
    args = json.loads(call["function"]["arguments"])
    return web_search(args["query"], recent=args.get("recent", False))
```

## agent 应该在什么时候搜索，搜多频繁？

当答案取决于会变化、或模型不可能知道的事实时就搜索。价格、版本、法律、日程和近期事件都算。定义和稳定的知识通常不算。

把这条规则写进 system prompt，再加一个预算。三个习惯有帮助：

- **先规划再搜索。** 让模型先把查询写出来。两个精确的查询胜过五个含糊的。
- **限制调用次数。** 比如每轮用户对话允许四次搜索。只在研究类任务里提高上限。
- **来源一致就停。** 如果三个独立页面说的都一样，agent 就可以作答。

## 如何控制上下文窗口？

三个参数决定有多少正文送进模型。`read` 设置读取多少个页面，从 0 到 10。`max_chars` 限制每个页面的长度，从 500 到 50,000 字符。`max_results` 设置列出多少条结果，从 1 到 20。

对于聊天 agent，`read=3` 加 `max_chars=4000` 每次搜索返回约 12,000 字符的页面正文。这样一次对话里还能留出空间做好几次搜索。对于边搜边总结的研究任务，页面长一点也无妨。

`word_count` 字段告诉你整页在被截断前有多长。agent 可以用它来判断是否要用 [extract 端点](https://llmwebsearch.com/zh/docs/extract/) 再抓更多。

## 页面读不了时会怎样？

结果仍会返回，带标题、URL 和摘要，但没有正文。一个 `content_status` 字段说明原因。

- `blocked_by_robots`：站点的 robots.txt 不允许我们的读取器访问。
- `blocked_by_site_policy`：在 robots.txt 中设置 Content-Signal: ai-input=no 的网站，其页面内容不会出现在你的结果中。
- `target_refused`：站点返回了拒绝；其状态码在 `target_status` 里。
- `fetch_failed` 或 `fetch_timeout`：页面没有及时加载。

当网站拒绝我们的读取器时，结果会不带内容返回，并附上该网站的状态：我们绝不破解 CAPTCHA、不登录账户，也不绕过封锁或付费墙。告诉 agent 在页面返回为空时改用摘要，或换一个来源。无论每个页面发生什么，搜索本身仍然算一个积分。

## 为什么不用模型自带的搜索工具？

自带工具方便，但给你的控制更少。截至 2026 年 10 月 22 日，OpenAI 的 `web_search` 工具每次调用收费 $10、每 1,000 次，外加按 input token 计费的搜索内容。Anthropic 的 Claude web search 也是每 1,000 次搜索 $10，外加 token 费用。Gemini 3 grounding 在付费档每月含 5,000 次免费搜索，之后每 1,000 次 $14。

这些工具大多返回带引用的成文答案，而不是原始页面。它们还把搜索绑定到某一家模型厂商。独立工具能与任何模型配合，并让你设置每个页面的长度。[自带工具对比](https://llmwebsearch.com/zh/compare/built-in-web-search-tools/) 有完整的表格。

## 在 LLMWebSearch 上跑一个 agent 要花多少钱？

当 `read` 为 3 或更少时，每次搜索一个积分。一个团队使用的助手，每天回答 100 个问题、每个问题搜 4 次，一个月大约跑 12,000 次搜索。25,000 次查询 以 US$41.25 就覆盖这个月，还能剩下大半个月。

一个开发者使用的编码 agent 可能每天搜 20 次，也就是一个月约 600 次。5,000 次搜索 以 US$9.25 就能用好几个月，因为积分永不过期。[费用指南](https://llmwebsearch.com/zh/guides/ai-agent-web-search-cost/) 给出了更大工作量的算法。

## 哪种 pack 适合 agent？

在 5,000 次搜索 上做原型；等 agent 进入日常使用后，再换到 25,000 次查询 或 100,000 次查询。

| 套餐 | 数量 | 价格 | 单价 |
| --- | --- | --- | --- |
| 试用 | 5,000 次搜索 | US$9.25 | US$1.85/千次搜索 |
| 构建者 | 25,000 次查询 | US$41.25 | US$1.65/千次搜索 |
| 生产环境 | 100,000 次查询 | US$145 | US$1.45/千次搜索 |

所有套餐均包含: 前 3 个页面读取为 Markdown · 国家、语言、时间和域名筛选 · 调用失败不计费 · 积分永不过期

**付款前须知**

- 最低充值 US$25。 用加密货币充值一次，即可从余额中购买任意套餐。
- 余额中的资金不会过期，你随时可以用它购买搜索积分。当积分包的价格低于最低充值额时，你仅为达到该最低充值额而支付的部分，可在付款后 30 天内应要求退还给你，以 USDT 或 USDC 支付，前提是这笔钱尚未使用。余额的其余部分不予退还，除非法律要求退还.
- 付款在区块链上核实后即到账。 网络确认的通常时间： BTC ≈ 20 分钟 · USDT TRC-20 ≈ 1 分钟 · USDT ERC-20 ≈ 5 分钟 · USDC ERC-20 ≈ 5 分钟 · ETH ≈ 5 分钟 · SOL ≈ 1 分钟 · LTC ≈ 15 分钟

## AI agent：常见问题

### 我能把 LLMWebSearch 加到 Claude Desktop、Cursor 或 Claude Code 里吗？

可以，通过一个小型 MCP 服务器把搜索暴露成工具。[MCP 页面](https://llmwebsearch.com/zh/docs/mcp/) 有代码和客户端配置。

### 这个工具能配合 OpenAI 之外的模型吗？

可以。上面的 schema 是纯 JSON Schema，Anthropic、Google、Mistral 和开源框架稍作改动就能接受。工具只调用我们的 HTTPS 端点。

### 怎么阻止 agent 搜得太多？

在你的工具封装里计数，预算用完后返回一条简短消息。也把预算写进 system prompt，让模型提前规划。

### 页面正文能向我的 agent 下指令吗？

它可以尝试。把页面正文当作数据：在 system prompt 里告诉模型忽略来源内部出现的指令，并且绝不让来源自行触发任何操作。

## 来源

1. [API 定价（web 搜索工具）](https://developers.openai.com/api/docs/pricing) — OpenAI (read 2026-10-22)
2. [定价（web 搜索工具）](https://platform.claude.com/docs/en/about-claude/pricing) — Anthropic (read 2026-10-22)
3. [Gemini Developer API 定价](https://ai.google.dev/gemini-api/docs/pricing) — Google (read 2026-10-22)

---

LLMWebSearch: LLMWebSearch 是一款面向 AI 智能体的网页搜索 API，返回排序后的搜索结果，并附带热门页面的 Markdown 格式内容，采用加密货币支付，无需上传证件。预付费积分低至 US$1.20/千次搜索，永不过期。无 KYC——无需证件、无需自拍、无需提交任何文件。加密货币支付。
