本页内容
一项网页提取任务,不应当要求把你提取的数据发送给 OpenAI。借助 extract_with_llm 和本地安装的 Ollama,结构化提取现在完全在你的机器上运行——无需 API key,无按 token 计费,没有第三方看到你的内容。本文是深度剖析:为什么本地很重要、如何配置,以及在何时使用它而非其他替代方案。
目录
- 什么是 LLM 网页提取?
- 为什么选择本地 Ollama(而不是 OpenAI)?
- 配置:5 分钟跑通 Ollama + extract_with_llm
- list_ollama_models:发现你机器上有什么
- 基于 schema 的提取
- 何时使用 Ollama、OpenAI 还是 Anthropic
- 成本对比
- 局限与准确率
什么是 LLM 网页提取?
LLM 网页提取是这样一种工作流:你把两样东西交给模型——一个页面的原始 HTML 和一个描述你想要什么的 schema——模型则返回结构化的 JSON。它是手写 CSS 选择器的现代替代品。当网站的布局发生变化时,选择器会失效;而 LLM 会自适应。
CrawlForge 早已以 extract_structured(CSS 优先,LLM 回退)的形式提供了这一能力。新的 extract_with_llm 工具则是 LLM 优先:每次提取都是一次 LLM 调用。v4.2.2 中改变的是默认提供方。以前你需要一个 OpenAI 或 Anthropic 的 key,现在不需要了。
为什么选择本地 Ollama(而不是 OpenAI)?
三个原因,按对大多数团队的重要性递减排列。
1. 你提取的数据留在你的机器上。 当你调用 OpenAI 时,页面内容会发送到 OpenAI。对于竞争情报、法律文件、客户数据或任何受监管的内容,这往往是一个绝对的硬性障碍。本地 Ollama 意味着只走 localhost。
2. LLM 是免费的。 大规模情况下,一次 gpt-4o-mini 调用每次提取约花费 $0.0001。听起来微不足道——直到你每天运行 10,000 次提取。Ollama 是 $0 加上电费。无论使用哪个提供方,你仍然为每次调用支付 3 个 CrawlForge credits。
3. 无需管理新的 API key。 如果你有 Ollama,你就有了一个提供方。无需注册、无账单告警、无需轮换。
代价在于模型质量。笔记本上的 llama3.1:8b 在困难页面上无法与 gpt-4o 相提并论。对于 80% 的情形(干净的 HTML、简单的 schema),它表现良好。对于那 20%(格式繁重、含义模糊),你可以在同一次调用中回退到 OpenAI 或 Anthropic。
配置:5 分钟跑通 Ollama + extract_with_llm
这是 Ollama 这一侧。现在从 CrawlForge 这一侧(通过 CLI、MCP server 或 API——任何方式都可以):
从 CLI:
list_ollama_models:发现你机器上有什么
在运行大批量任务之前,先核查一下实际安装了什么:
或通过 MCP/SDK:
这花费 0 credits。它是一个发现辅助工具,而不是一次提取调用。它在引导流程、CI 冒烟测试(「Ollama 配置正确吗?」)以及任何本地 LLM 流水线的第一步中都很有用。
基于 schema 的提取
schema 是一个标准的 JSON Schema 对象。LLM 读取它并产出匹配的输出。有两种模式效果很好:
模式 1:用于简单数据的扁平 schema
模式 2:用于更丰富数据的嵌套 schema
schema 越小,提取就越可靠——尤其是在本地 8B 模型上。如果你发现某个模型在臆造字段,就把 schema 简化。
何时使用 Ollama、OpenAI 还是 Anthropic
| 场景 | 推荐的提供方 | 原因 |
|---|---|---|
| 高吞吐量的批量提取 | Ollama | LLM 边际成本 = $0 |
| 敏感或受监管的数据 | Ollama | 仅走 localhost |
| 复杂的多页推理 | OpenAI(gpt-4o) | 在困难页面上推理最佳 |
| 长上下文(50K+ tokens) | Anthropic(Claude) | 200K 上下文窗口 |
| 快速原型、低吞吐量 | Ollama | 除安装外零配置 |
| 含义模糊的内容(讽刺、俚语) | OpenAI 或 Anthropic | 模型更大 = 消歧更好 |
好消息是:切换提供方只是改一个参数。你可以在 Ollama 上做原型,遇到一个困难页面,就为那一次调用切换到 provider: "openai",然后继续。
成本对比
每 1,000 次提取的成本,假设页面为平均规模(输入约 3K tokens,输出约 200 tokens):
| 提供方 | 模型 | 每 1K 的 LLM 成本 | 每 1K 的 CrawlForge credits | 每 1K 合计 |
|---|---|---|---|---|
| Ollama(本地) | llama3.1:8b | $0(电费) | 3,000 credits | 3,000 credits |
| Ollama(本地) | llama3.1:70b | $0(电费,更高) | 3,000 credits | 3,000 credits |
| OpenAI | gpt-4o-mini | 约 $0.45 | 3,000 credits | 3,000 credits + $0.45 |
| OpenAI | gpt-4o | 约 $8.50 | 3,000 credits | 3,000 credits + $8.50 |
| Anthropic | claude-haiku-4-5 | 约 $0.30 | 3,000 credits | 3,000 credits + $0.30 |
| Anthropic | claude-sonnet-4-6 | 约 $4.50 | 3,000 credits | 3,000 credits + $4.50 |
CrawlForge credits 在各提供方之间是固定的——你为编排付费,而非为模型付费。在我们的 Hobby 套餐(10,000 credits/$19/月)下,这大约是每月 3,300 次 LLM 提取,花费 $19 + $0(如果你使用 Ollama)。
局限与准确率
在我们的内部基准测试中,本地 Ollama(llama3.1:8b)擅长的方面:
- 干净的产品页面(Amazon、Shopify):字段准确率约 95%
- 文章元数据(Substack、Medium):约 92%
- 论坛帖子(HN、Reddit):约 88%
它吃力的方面:
- 重度 JS 渲染、HTML 极少的页面(先用
scrape_with_actions,再提取) - 结构含义模糊的页面(使用前沿模型)
- 字段数达 20+ 的 schema(拆分为多次提取)
- 非英文内容(使用像
mistral这样的多语言模型)
如果准确率至关重要而 Ollama 漏掉了字段,解决办法通常是:更简单的 schema,或为那次调用升级到 provider: "openai"。
准备好在数据不离开机器的前提下提取数据了吗? 用 1,000 个免费 credits 免费开始,用你的本地 Ollama 试用 extract_with_llm。第一次接触 CrawlForge?阅读 v4.2.2 发布公告 了解背景,或阅读 CLI 指南 体验以终端为先的工作流。