跳转到正文

WARNING

本文档由 AI 自动翻译,仅供参考。涉及关键操作或信息时,请以英文原文为准。

使用 Firecrawl 作为网页加载器 ​

Firecrawl 是一个无头网页数据服务,可将网页转换为干净的 Markdown、结构化 JSON、摘要和元数据。在 Olares 上,Open WebUI 等应用可以使用 Firecrawl 在找到搜索结果后加载完整的网页内容。

你也可以直接调用 Firecrawl API 来测试抓取和爬取功能。

前提条件 ​

开始前,你需要:

  • 一台运行 Olares 1.12.7 或更高版本、具有足够磁盘空间和内存的 Olares 设备。
  • 使用本地模型时,能够访问 Router。
  • 如需使用本地模型,从应用市场安装 Qwen3.8-27B (llama.cpp)。
可选:使用其他模型

从应用市场安装其他聊天模型,或通过引擎基座应用创建模型实例,然后在 Router 的 Default models 页面将其设为默认聊天模型。使用 default-chat 的客户端会调用新的默认模型,无需修改客户端的模型设置。

如果希望某个客户端始终使用指定模型,可改填 Router 的 How to call this model 窗口中显示的完整模型名称。

安装 Firecrawl ​

  1. 打开 Market,搜索 "Firecrawl"。

    Firecrawl

  2. 点击 获取,然后点击 安装,等待安装完成。

在其他应用中使用 Firecrawl ​

Firecrawl 通常在后台运行。其他应用在需要获取和清理网页内容时,通过其端点 URL 调用它。

获取 Firecrawl 端点 ​

应用端点(endpoint)如何工作

当客户端连接另一个 Olares 应用时,会使用该应用的端点作为网络地址。如果应用提供多个端点,请选择与客户端所需功能或协议相匹配的端点。

对于 Firecrawl:

  1. 前往 Olares Settings > Applications > Firecrawl > Entrances。
  2. 选择 Firecrawl,然后复制 Endpoint URL。

该 Endpoint 是 Firecrawl 服务的基础地址。API 客户端会在其后添加 /v2/scrape 或 /v2/crawl 等路径。

配置 Open WebUI ​

要在 Open WebUI 中使用 Firecrawl,首先将 Open WebUI 连接到模型并配置网络搜索。Open WebUI 网络搜索指南使用 SearXNG 作为示例。然后按以下步骤手动配置 Firecrawl 作为网页加载器。

GPU 资源

如果 Open WebUI 运行缓慢或无法返回结果,你的模型可能没有足够的 GPU 资源。停止不使用的但仍占用 GPU 资源的应用,然后重试。

  1. 打开 Open WebUI 应用。

  2. 点击左下角的 profile icon,然后选择 Admin Panel。

  3. 前往 Settings > Web Search。

  4. 在加载器设置中,将 Web Loader Engine 设为 firecrawl。

  5. 在 Firecrawl API URL 中,输入你从 Settings 复制的 Firecrawl 端点。

  6. 对于 Firecrawl API Key,输入任意非空值,例如 fc-test。

    Firecrawl 加载器

  7. 点击 Save 保存设置。

确保 Bypass Web Loader 已禁用。

使用 API 测试 Firecrawl ​

本节是可选的。当你想确认 Firecrawl 是否可以直接抓取或爬取页面时使用。

了解 Bull Dashboard ​

从 Launchpad 打开 Firecrawl。你将看到一个 Bull Dashboard 页面,其中包含内部队列卡片,例如 generateLlmsTxtQueue、deepResearchQueue、billingQueue 和 precrawlQueue。队列名称可能因 Firecrawl 构建版本而异。

Firecrawl 工作器状态

此仪表板用于内部队列调试。正常的抓取或爬取请求可能不会出现在这里,或者完成得太快而注意不到。如果所有卡片都保持为 0 Jobs,请检查 API 响应或爬取状态 URL。

对于首次测试,你只需要两个 API 操作:

操作端点使用场景
Scrape/v2/scrape从单个特定页面提取内容。
Crawl/v2/crawl从一个 URL 开始,让 Firecrawl 从中发现页面。

以下示例使用浏览器控制台,以便请求可以使用你当前的 Olares 登录会话。

Olares 端点认证

对于 Olares 托管的 Firecrawl,请使用已登录浏览器中的 credentials: "include",而不是 Authorization 请求头。

打开浏览器控制台 ​

  1. 从 Launchpad 打开 Firecrawl。
  2. 在同一浏览器中,打开浏览器开发者工具。
  3. 前往 Console 标签页。
  4. 粘贴以下示例之一,然后按 Enter。

TIP

如果你的浏览器阻止在控制台中粘贴代码,请按照浏览器提示允许粘贴。只粘贴你理解并信任的代码。

抓取单个页面 ​

当你想要单个页面的内容时,使用 scrape。

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/scrape`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/manual/overview.html",
    formats: ["markdown"]
  })
});

const data = await response.json();
console.log(data);

如果请求成功,响应将包含 data.markdown。这是清理后的页面文本。响应还包含 data.metadata,例如页面标题、来源 URL、语言和 HTTP 状态码。

爬取页面或网站 ​

当你希望 Firecrawl 从起始页面跟踪链接时,使用 crawl。开始时使用较小的 limit,以便结果易于检查。

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/crawl`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/manual/overview.html",
    limit: 1
  })
});

const data = await response.json();
console.log(data);

成功的请求返回一个作业 ID 和一个状态 URL:

json
{
  "success": true,
  "id": "019e6988-6e26-7407-b7a4-8045a8d12269",
  "url": "<your-firecrawl-endpoint>/v2/crawl/<job-id>"
}

url 字段是爬取状态 URL。在浏览器中打开它以检查爬取是否已完成。

读取爬取结果 ​

字段含义
status当前作业状态,例如 scraping、completed 或 failed。
data爬取页面列表。每个项目通常包含页面内容和元数据。
markdown清理后的页面内容。这是你通常发送给 AI 应用的主要文本。
metadata页面信息,例如标题、来源 URL、语言和 HTTP 状态码。

从 limit 开始

大型网站可能产生数百或数千个页面。测试时保持 "limit": 1 或 "limit": 10,确认结果有用后再增加。

高级:生成摘要或结构化 JSON ​

Firecrawl 可以使用配置的 LLM 来总结页面或返回结构化 JSON。

JSON 和摘要输出需要 LLM 提供商

结构化 JSON 和摘要输出需要配置的 LLM 提供商。基于本地 Ollama 的 LLM 提取可能会失败,并显示 Failed to parse URL from /responses。如果发生这种情况,请使用常规 markdown 输出,或尝试 OpenAI 兼容的提供商。

配置模型访问 ​

本示例通过 OpenAI 兼容 API 使用 Qwen3.8-27B (llama.cpp)。从 Market 安装该模型,并等待模型就绪。

模型连接的工作原理

在 Olares 1.12.7 及以上版本中,AI 客户端通过 Olares Router 连接模型。Router 提供 Base URL,并将 default-chat 的请求转发给**默认模型(Default models)**页面中设置的聊天模型。

本教程使用 Qwen3.8-27B (llama.cpp) 作为默认聊天模型。连接格式和 API 密钥要求详见连接 AI 应用。

对于 Qwen3.8-27B (llama.cpp),使用 OpenAI-Compatible API 格式:

  1. 从启动台打开 Router。在 Default models 页面将 Qwen3.8-27B (llama.cpp) 设为默认聊天模型。

  2. 进入 LLM 页面,找到 Qwen3.8-27B (llama.cpp),点击模型所在行的 View connection example 图标。

  3. 在 How to call this model 窗口中,选择 Apps in Olares,复制完整的 Base URL,保留末尾的 /v1。

  4. 模型名称使用 default-chat。

    在应用中选择模型

    default-chat 是路由名称,不会出现在从 Router 获取的模型列表中。如果要连接 Router 的应用会加载模型列表,请手动添加 default-chat。如果应用只允许选择列表中的模型,请选择 Router 的 How to call this model 窗口中显示的完整模型名称。

  5. API 密钥留空。如果要连接 Router 的应用要求填写此字段,请填入 olares。

配置 Firecrawl:

  1. 前往 Olares Settings > Applications > Firecrawl > Environment variables。

  2. 配置以下参数:

    变量描述
    OPENAI_API_KEY输入任意非空值,例如 olares。
    OPENAI_BASE_URL输入 Router 中显示的 Base URL。
    MODEL_NAME填写 default-chat。
  3. 点击 Apply。

  4. 打开 Control Hub,在 Browse 下选择你的 Firecrawl 项目,然后重启 worker、nuq-worker 和 firecrawl 部署以应用环境变量。

返回结构化 JSON ​

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/scrape`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/manual/overview.html",
    formats: [
      {
        type: "json",
        prompt: "Read the page carefully and answer: what is Olares in one sentence, and list 3 main features.",
        schema: {
          type: "object",
          properties: {
            one_liner: { type: "string" },
            features: { type: "array", items: { type: "string" } }
          },
          required: ["one_liner", "features"]
        }
      }
    ]
  })
});

const data = await response.json();
console.log(data.data.json);
响应字段含义
data.json结构化 JSON 输出已成功生成。
仅 data.metadata页面已获取,但结构化 JSON 输出未生成。
errorFirecrawl 返回错误。请阅读错误消息了解详情。

返回摘要 ​

javascript
const endpoint = "<your-firecrawl-endpoint>";

const response = await fetch(`${endpoint}/v2/scrape`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://docs.olares.com/zh/manual/overview.html",
    formats: ["markdown", "summary"]
  })
});

const data = await response.json();
console.log(data.data.summary);
console.log("markdown length:", data.data.markdown?.length);

常见问题 ​

为什么 Bull Dashboard 显示 0 Jobs? ​

队列名称和可见作业可能因 Firecrawl 版本和 Olares 应用构建而异。请检查 API 响应或爬取状态 URL。

为什么爬取结果为空或不完整? ​

某些网站会阻止自动爬虫、需要登录,或通过复杂的浏览器交互加载内容。首先尝试较小的公共 URL,保持较低的爬取限制,并检查响应元数据中的错误。

了解更多 ​