OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Jina AI Reader — 将网页与文档转成适合大模型消费的文本接口

Jina AI Reader — 将网页与文档转成适合大模型消费的文本接口

 
  cat ·  2026-04-18 11:00:27 · 10 次点击  · 0 条评论  

本地开发

  • npm install
  • docker compose up -d
  • npm run init-db

在 VSCode 中按 F5 启动调试器

或者,在设置好相应的环境变量后:
- docker compose up -d
- npm run dev

Reader

为您的 LLM 提供更好的输入。

Reader 主要做两件事:
- 阅读:通过 https://r.jina.ai/https://your.url 将任何 URL 转换为 LLM 友好的 输入。无需成本即可为您的智能体和 RAG 系统获得更优的输出。
- 搜索:通过 https://s.jina.ai/your+query 在网络上搜索给定查询。这使您的 LLM 能够从网络获取最新的世界知识。

查看 在线演示

或者直接访问这些 URL 亲自体验:(阅读)https://r.jina.ai/https://github.com/jina-ai/reader,(搜索)https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F。

欢迎在生产环境中使用 Reader API。它是免费、稳定且可扩展的。我们作为 Jina AI 的核心产品之一,正在积极维护它。查看速率限制

image
image

更新日志

  • 2024-10-08:引入了 自适应爬虫。它可以递归爬取网站,并为给定网页提取最相关的页面。
  • 2024-07-15:要将 s.jina.ai 的结果限制在特定域名/网站,您可以在查询参数中设置例如 site=jina.ai,这启用了站内搜索。更多选项,请尝试我们更新的在线演示
  • 2024-07-01:我们已解决自 6 月 27 日以来的 DDoS 攻击和其他流量滥用问题。我们还修复了 6 月 28 日引入的一个可能导致某些网站延迟增加的 bug。攻击和 bug 均已解决;如果您在 6 月 27 日至 30 日期间经历了 r.jina.ai 的高延迟,现在应该恢复正常。
  • 2024-05-30:Reader 现在可以读取来自任何 URL 的任意 PDF 文件!查看 来自 NASA.gov 的 PDF 结果原始文件 的对比。
  • 2024-05-15:我们引入了一个新的端点 s.jina.ai,用于在网络上搜索并返回前 5 个结果,每个结果都以 LLM 友好的格式呈现。在此处阅读有关此新功能的更多信息
  • 2024-05-08:为获得更好的延迟,图像描述功能默认关闭。要开启它,请在请求头中设置 x-with-generated-alt: true
  • 2024-05-03:我们终于解决了自 4 月 29 日以来的 DDoS 攻击。现在我们的 API 比以往任何时候都更可靠、更可扩展!
  • 2024-04-24:您现在可以通过使用请求头对 Reader API 进行更精细的控制,例如转发 cookie、使用 HTTP 代理。
  • 2024-04-15:Reader 现在支持读取图像!它会为指定 URL 中的所有图像添加描述,并将 Image [idx]: [caption] 作为 alt 标签添加(如果它们最初没有)。这使得下游 LLM 能够在推理、总结等过程中与图像交互。查看示例

使用方法

使用 r.jina.ai 获取单个 URL

只需在任何 URL 前加上 https://r.jina.ai/。例如,要将 URL https://en.wikipedia.org/wiki/Artificial_intelligence 转换为 LLM 友好的输入,请使用以下 URL:

https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence

使用 r.jina.ai 获取整个网站 (Google Colab)

使用 s.jina.ai 进行网络搜索

只需在您的搜索查询前加上 https://s.jina.ai/。请注意,如果您在代码中使用此功能,请确保先对搜索查询进行编码,例如,如果您的查询是 Who will win 2024 US presidential election?,那么您的 URL 应如下所示:

https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election%3F

在幕后,Reader 会搜索网络,获取前 5 个结果,访问每个 URL,并对其应用 r.jina.ai。这与许多智能体/RAG 框架中的 网络搜索函数调用 不同,后者通常只返回搜索引擎 API 提供的标题、URL 和描述。如果您想更深入地阅读某个结果,必须自己从该 URL 获取内容。而使用 Reader,http://s.jina.ai 会自动为您从前 5 个搜索结果 URL 获取内容(复用 http://r.jina.ai 背后的技术栈)。这意味着您无需自己处理浏览器渲染、屏蔽或任何与 JavaScript 和 CSS 相关的问题。

使用 s.jina.ai 进行站内搜索

只需在查询参数中指定 site,例如:

curl 'https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai&site=github.com'

交互式代码片段生成器

我们强烈建议使用代码生成器来探索 Reader API 的不同参数组合。

image

使用请求头

正如您在上面已经看到的,可以使用请求头来控制 Reader API 的行为。以下是支持的请求头的完整列表。

  • 您可以通过 x-with-generated-alt: true 请求头启用图像描述功能。
  • 您可以通过 x-set-cookie 请求头要求 Reader API 转发 cookie 设置。
  • 请注意,带有 cookie 的请求将不会被缓存。
  • 您可以通过 x-respond-with 请求头绕过 readability 过滤,具体如下:
  • x-respond-with: markdown 返回 不经过 reability 处理的 markdown
  • x-respond-with: html 返回 documentElement.outerHTML
  • x-respond-with: text 返回 document.body.innerText
  • x-respond-with: screenshot 返回网页截图的 URL
  • 您可以通过 x-proxy-url 请求头指定代理服务器。
  • 您可以通过 x-cache-tolerance 请求头(整数,单位为秒)自定义缓存容忍度。
  • 您可以通过 x-no-cache: true 请求头(相当于 x-cache-tolerance: 0)绕过缓存页面(缓存寿命为 3600 秒)。
  • 如果您已经知道目标页面的 HTML 结构,可以指定 x-target-selectorx-wait-for-selector 来指示 Reader API 专注于页面的特定部分。
  • 通过将 x-target-selector 请求头设置为 CSS 选择器,Reader API 将返回匹配元素内的内容,而不是完整的 HTML。当自动内容提取未能捕获所需内容时,设置此请求头非常有用,您可以手动选择正确的目标。
  • 通过将 x-wait-for-selector 请求头设置为 CSS 选择器,Reader API 将等待匹配的元素渲染完成后再返回内容。如果您已经指定了 x-wait-for-selector,并且计划等待相同的元素,则可以省略此请求头。

使用 r.jina.ai 获取单页应用程序 (SPA)

如今许多网站依赖 JavaScript 框架和客户端渲染,通常称为单页应用程序 (SPA)。得益于 Puppeteer 和无头 Chrome 浏览器,Reader 原生支持获取这些网站。然而,由于某些 SPA 的开发方式特殊,可能需要采取一些额外的预防措施。

使用基于哈希路由的 SPA

根据 Web 标准定义,URL 中 # 之后的内容不会发送到服务器。为了解决这个问题,请使用 POST 方法并在请求体中包含 url 参数。

curl -X POST 'https://r.jina.ai/' -d 'url=https://example.com/#/route'

具有预加载内容的 SPA

一些 SPA,甚至一些并非严格意义上的 SPA 的网站,可能会先显示预加载内容,然后再动态加载主要内容。在这种情况下,Reader 可能捕获的是预加载内容而不是主要内容。为了解决这个问题,以下是一些可能的解决方案:

指定 x-timeout

当明确指定超时时,Reader 将不会尝试提前返回,而是会等待网络空闲直到达到超时时间。这对于目标网站最终会达到网络空闲状态的情况很有用。

curl 'https://example.com/' -H 'x-timeout: 30'
指定 x-wait-for-selector

当明确指定 wait-for-selector 时,Reader 将等待指定的 CSS 选择器出现,直到达到超时时间。当您确切知道要等待哪个元素时,这很有用。

curl 'https://example.com/' -H 'x-wait-for-selector: #content'

流式模式

当您发现标准模式提供的结果不完整时,流式模式很有用。这是因为 Reader 会等待更长时间,直到页面稳定渲染。使用 accept 请求头来切换流式模式:

curl -H "Accept: text/event-stream" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page

数据以流的形式传入;每个后续块包含更完整的信息。最后一个块应提供最完整和最终的结果。 如果您来自 LLM 领域,请注意这与 LLM 文本生成的流式行为不同。

例如,比较下面这两个 curl 命令。您可以看到流式模式最终会提供完整的信息,而标准模式则不会。这是因为这个特定网站的内容加载是在页面完全加载之后由某些 js 触发的,而标准模式返回页面“过早”。

curl -H 'x-no-cache: true' https://access.redhat.com/security/cve/CVE-2023-45853
curl -H "Accept: text/event-stream" -H 'x-no-cache: true' https://r.jina.ai/https://access.redhat.com/security/cve/CVE-2023-45853

注意:-H 'x-no-cache: true' 仅用于演示目的,以绕过缓存。

如果您的下游 LLM/智能体系统需要即时内容交付,或者需要分块处理数据以交错 I/O 和 LLM 处理时间,流式模式也很有用。这允许更快的访问和更高效的数据处理:

Reader API:  streamContent1 ----> streamContent2 ----> streamContent3 ---> ...
                          |                    |                     |
                          v                    |                     |
您的 LLM:                 LLM(streamContent1)  |                     |
                                               v                     |
                                               LLM(streamContent2)   |
                                                                     v
                                                                     LLM(streamContent3)

请注意,在完整性方面:... > streamContent3 > streamContent2 > streamContent1,每个后续块包含更完整的信息。

JSON 模式

这仍处于非常早期的阶段,结果并不是一个“有用”的 JSON。它只包含 urltitlecontent 三个字段。尽管如此,您可以使用 accept 请求头来控制输出格式:

curl -H "Accept: application/json" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page

JSON 模式在 s.jina.ai 中可能比在 r.jina.ai 中更有用。对于启用 JSON 模式的 s.jina.ai,它返回一个包含 5 个结果的列表,每个结果的结构为 {'title', 'content', 'url'}

生成的图像描述

页面中所有缺少 alt 标签的图像都可以由 VLM(视觉语言模型)自动添加描述,并格式化为 !(Image [idx]: [VLM_caption])[img_URL]。这应该为您的下游纯文本 LLM 提供足够的提示,以将这些图像纳入推理、选择和总结中。使用 x-with-generated-alt 请求头来切换此功能:

curl -H "X-With-Generated-Alt: true" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page

安装

您需要以下工具来运行此项目:
- Node v18(Node 版本 >18 会导致构建失败)

git clone git@github.com:jina-ai/reader.git
npm install

什么是 thinapps-shared 子模块?

您可能会注意到对 thinapps-shared 子模块的引用,这是我们用于在产品间共享代码的内部包。虽然它没有开源,并且对 Reader 的功能不是必需的,但它主要帮助处理装饰器、日志记录、密钥管理等。目前可以忽略它。

也就是说,这是 https://r.jina.ai 背后的单一代码库,因此我们每次在这里提交时,都会将新版本部署到 https://r.jina.ai

在某些网站上遇到问题?

请提出 issue 并附上您遇到问题的 URL。我们将进行调查并尝试修复。

许可证

Reader 由 Jina AI 支持,并基于 Apache-2.0 许可证授权。

10 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 18 ms
Developed with Cursor