Reader
您的 LLMs(语言模型)值得更好的输入。
Reader 主要有两个功能:
- 读取:它将任何 URL 转换为 LLM 友好 的输入,只需使用
https://r.jina.ai/https://your.url
。无需成本即可为您的代理和 RAG 系统获得更佳的输出。 - 搜索:它通过
https://s.jina.ai/your+query
在网络上进行查询搜索。这使您的 LLMs 可以访问最新的网络世界知识。
查看 实时演示
请随意在生产环境中使用 Reader API。它是免费的、稳定的和可扩展的。我们积极维护其作为 Jina AI 的核心产品之一。查看速率限制
更新
- 2024-07-15:要将
s.jina.ai
的结果限制在某个域名或网站上,可以在查询参数中设置例如site=jina.ai
,这允许站内搜索。更多选项,请 尝试我们更新的实时演示。 - 2024-07-01:我们已经解决了自 6 月 27 日以来的 DDoS 攻击和其他流量滥用问题。我们还发现了 6 月 28 日引入的一个错误,这可能导致某些网站的延迟更高。攻击和错误已经解决;如果您在 6 月 27 日到 30 日期间体验到 r.jina.ai 的高延迟,现在应该恢复正常。
- 2024-05-30:Reader 现在可以读取来自任何 URL 的任意 PDF!查看 来自 NASA.gov 的这个 PDF 结果 对比 原始 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,例如转发 cookies、使用 HTTP 代理。
- 2024-04-15:Reader 现在支持图像读取!它为指定 URL 上的所有图像生成标题并将
Image [idx]: [caption]
添加为替代标签(如果最初没有)。这使下游 LLMs 能够参与图像的推理、总结等操作。查看示例。
使用方法
使用 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 的不同参数组合。
使用请求头
如上所述,可以通过使用请求头来控制 Reader API 的行为。以下是受支持的请求头的完整列表。
- 您可以通过
x-with-generated-alt: true
标头启用图像标题功能。 - 您可以通过
x-set-cookie
标头要求 Reader API 转发 cookie 设置。- 请注意,带有 cookie 的请求将不会被缓存。
- 您可以通过
x-respond-with
标头绕过readability
过滤,具体如下:x-respond-with: markdown
返回未经过readability
的 markdownx-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
标头绕过缓存的页面(生命周期 3600秒)(相当于x-cache-tolerance: 0
)。 - 如果您已经了解目标页面的 HTML 结构,则可以指定
x-target-selector
或x-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 会等页面稳定呈现后再等待一段时间。使用接受标头来切换流模式:
curl -H "Accept: text/event-stream" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
数据以流的形式传递;每个后续块包含更完整的信息。**最后一个块应提供最完整的最终结果。**如果您来自 LLMs,请注意这与 LLMs 的文本生成流行为不同。
例如,比较下面的两个 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 | |
Your LLM: LLM(streamContent1) | |
v |
LLM(streamContent2) |
v
LLM(streamContent3)
请注意,在完整性方面: ... > streamContent3 > streamContent2 > streamContent1
,每个后续块包含更完整的信息。
JSON 模式
这仍然是非常早期的结果,还不是一个真正“有用”的 JSON。它仅包含 url
、title
和 content
三个字段。不过,您可以使用接受标头来控制输出格式:
curl -H "Accept: application/json" https://r.jina.ai/https://en.m.wikipedia.org/wiki/Main_Page
在 s.jina.ai
中,JSON 模式可能比 r.jina.ai
更有用。对于 s.jina.ai
,启用 JSON 模式后,它会返回一个包含 5 个结果的列表,每个结果结构为 { 'title', 'content', 'url' }
。
自动生成的 alt
页面中所有缺少 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 的构建会失败)
- Firebase CLI (
npm install -g firebase-tools
)
对于后端,请转至 backend/functions
目录并安装 npm 依赖项。
git clone git@github.com:jina-ai/reader.git
cd backend/functions
npm install
什么是 thinapps-shared
子模块?
您可能会注意到对 thinapps-shared
子模块的引用,这是一个内部包,我们用来在我们的产品中共享代码。虽然它不是开源的,并且对 Reader 的功能来说不是核心模块,但它主要用于装饰器、日志记录、秘密管理等。因此,现在可以忽略它。
也就是说,这是 https://r.jina.ai
背后的单一代码库,因此每次我们在此提交时,我们都会将新版本部署到 https://r.jina.ai
。
在某些网站上遇到问题?
请提交有问题的 URL,我们将进行查看并尝试修复。
许可证
Reader 由 Jina AI 提供支持,并根据 Apache-2.0 许可进行许可。