🐶

Jina AIのReader APIを試した

2024/05/20に公開

はじめに

以下の記事で Jina AI というところが出す Reader API というものが紹介されており、気になったので、試してみました。

https://zenn.dev/himara2/articles/db054d81b05d19

Jina Reader APIには、URL やウェブ検索から LLM に適した入力を得られる API である。本 API では、以下のエンドポイントが提供されている。

  • https://r.jina.ai/
    • 指定された Web コンテンツの中身を LLM で使用にマークダウン方式にて出力
  • https://s.jina.ai/
    • 検索ワードに従い、検索し、検索結果をマークダウンで出力

総括をとして、利用難度が低く、api key を通せばある程度のレイテンシに耐えられるものみたいです。それでも、そこまで高レイテンシには耐えられないので、ユースケースはよく考える必要がありそうです。

https://r.jina.ai/

以下にサンプルコードを示します。出力内容は「Title」「URL Source」「Markdown Content」です。

import requests
from datetime import datetime

r_url = "https://r.jina.ai/"
url = "https://~~" # コンテンツ取得したい URL
is_json  = False # json 形式で取得するか

params = {
    "url": f"{r_url}{url}",
}
if is_json:
    params["headers"] = {"Accept": "application/json"}

response = requests.get(**params)

with open(f"./output/r_{datetime.now().strftime('%Y%m%d%H%M%S')}.md", "w") as file:
    file.write(response.text)

https://s.jina.ai/

以下にサンプルコードを示します。出力内容は「Title」「URL Source」「Description」です。検索結果より上位 5 件を取得できます

英語および日本語で検索したが、検索結果にそれほど違和感を感じないです。

import requests
from datetime import datetime
import urllib

s_url = "https://s.jina.ai/"

search_string = "~~~" # 検索ワード
search_string = urllib.parse.quote(search_string)
is_json  = False # json 形式で取得するか

params = {
    "url": f"{s_url}{search_string}",
}
if is_json:
    params["headers"] = {"Accept": "application/json"}

response = requests.get(**params)
with open(f"./output/s_{datetime.now().strftime('%Y%m%d%H%M%S')}.md", "w") as file:
    file.write(response.text)

制限

API key を通じるとレートリミットが上がる様子?です。

  • r で 20RPM→200RPM
  • s で 5RPM→40RPM

料金形態

クレジットは API key に対して、初期 1M token 分無料枠がついてきます。このとき、トークンは、入力を指します。

気になる点

  • API key などを管理するダッシュボードがない?
    • サイト中にて api key が勝手に生成される。クレジットはサイトに API key を入力した状態で stripe リンクをクリックすると支払いができる。

おわりに

簡単にですが、試した内容をまとめました。比較的使用しやすそうな API なので、何かに利用したい気がしますね。

リバナレテックブログ

Discussion