Open5

エージェントに使わせる検索 API の選択肢

PlatPlat

個人的には Gemini の Grounding with Google Search がコスパ最強 & 楽で、基本的にはこれで大丈夫だとは思う

PlatPlat

https://python.langchain.com/docs/integrations/tools/

LangChain のドキュメントとかで DuckDuckGo やら色々なツールを聞くけど、検索処理から情報整理までを自前で実装するのは色々な点で案外辛い。

よく聞く検索ツールの選択肢の私見

  • 公式サービス
    • Google 検索 API (Google Cloud): 無料枠が1日100件とかで、それ以降バカ高い。
    • Brave API: 無料枠があるらしいが、(一応 Stripeだけども) 支払い情報を登録しないと使え無さそうだった
    • Serp API: いろんな検索 API のラッパーらしいが、まあ有料
  • オレオレスクレイピング:
    • DuckDuckGo: 巷で無料検索 API として聞いていたが、実はそんなものなくて、みんな勝手にスクレイピングしてるだけだった。https://html.duckduckgo.com/html/ で検索すると静的な HTML で帰ってくるからそれをパースするとできる。一番有名と思われる実装 がそうやってたので、DuckDuckGo 検索〜とか言ってるのは裏で全部これやってると思う。これの一番辛いのはレートリミットで、下手にやると結構すぐ来る。安定して使うのは難しいと思う。
    • Google, Bing 検索しかり: これも同様で、ロボット的な操作すると多分すぐブロックされるのでやりたくない。

他にも色々あるけど、大体に共通するのは、

  • 制限ないのは有料サービス、従量課金
  • 無料枠は大抵小さい
  • 自前でやるとレートリミットで実生活に影響が出る
    の問題がある。

これらを回避しても、このあと検索結果の Web ページにアクセスして、また HTML パースして情報抽出して、いろんな情報源から整理して... の手間を考えたら、全部を裏で全部やってくれる Gemini の Grounding with Google Search がどれだけお手軽かよくわかる。

PlatPlat

Grounding with Google Search の欠点としては、おそらく常にセーフサーチ状態なのか、ある種の情報統制・検閲みたいになっていて、特定の領域の情報に全くアクセスできないこと。これはほとんどの状況では問題にならないかもしれないが、たまに困るので、困る。

PlatPlat

もし、自前で検索エンジンをオレオレスクレイピングするなら、コストや手軽さの観点から Cloudflare Workers でプロキシするといいかもしれない (Workers 空のアクセス禁止されてなければ)。

PlatPlat

単純に、URL が既知の Web サイトの情報を取得したいのであれば、自前で HTML 処理したり OGP 抜き出したりするのが良いと思う。