はじめに
あべきゃわもち nikkieです。
すごいAPIを知ってしまいましたっ!
目次
知ったきっかけ
Hugging Faceのdeep research再現24時間チャレンジ1の実装からです。
https://github.com/huggingface/smolagents/blob/gaia-submission-r1/examples/open_deep_research/scripts/text_web_browser.py
関連箇所を抜粋
from serpapi import GoogleSearch search = GoogleSearch(params)
SerpApi
Scrape Google and other search engines from our fast, easy, and complete API.
検索APIのファサードといった印象。
(Googleの利用規約に照らして、検索結果をスクレイピングしてよかったんだっけ?という論点は別途あると思います)
公式のSDKがこちら
https://pypi.org/project/serpapi/
smolagentsのようにSerpApiを介してGoogle検索してみます
SerpApiでGoogle検索
アカウントを作りました。
月100検索まで無料枠(Free)で使えます。
https://serpapi.com/pricing
APIキーを発行して、環境変数SERP_API_KEYに指定します。
コードはこちらをベースにしました。
https://github.com/serpapi/serpapi-python/tree/v0.1.5?tab=readme-ov-file#search-google
クライアントのsearch()メソッド、engineの指定を変えるだけで叩き分けられるみたいです。
api_key_from_environment()というSERP_API_KEYを読む関数があったので使いました。
OpenAIなどのクライアントと違って、特定の環境変数を自動で読むわけではないようです(プルリクチャンス)
Google検索と同じという理解で、スペースで区切って検索しています。
SerpApiのドキュメントより
画像が分かりやすかったのですが、Google検索でWebページが並んでいる部分はorganic_resultsと呼ぶようです2。
動作環境
- uv 0.5.17
- Python 3.12.5
- serpapi 0.1.5
% uv run -q --python 3.12 script.py エミリー スチュアート - ミリオンライブ https://millionlive-theaterdays.idolmaster-official.jp/idol/emily/ 大和撫子になりたい!!雅で可憐な英国女子. えみりー すちゅあーと. エミリースチュアート. CV.郁原ゆう. VOICE1 VOICE2 VOICE3. エミリー スチュアートカード. PROFILE. エミリー・スチュアート - ピクシブ百科事典 https://dic.pixiv.net/a/%E3%82%A8%E3%83%9F%E3%83%AA%E3%83%BC%E3%83%BB%E3%82%B9%E3%83%81%E3%83%A5%E3%82%A2%E3%83%BC%E3%83%88 エミリー スチュアートとは、『アイドルマスターミリオンライブ!』に登場する日本文化をこよなく愛する大和撫子(あいどる)。 「大好きな日本で大和撫子を目指せる ... (省略)
smolagentsの実装では、検索して得たURLを自前のテキストベースブラウザで開いていました3。
(検索〜得たURLの中の確認をCodeAgentにやらせています。ソースを読んでいる途中です)
裏話:古いSDK google-search-results
冒頭で紹介したsmolagentsのコードとは違いましたよね?
これはsmolagentsが古いSDK https://pypi.org/project/google-search-results/ を使っているためと思われます。
https://github.com/serpapi/serpapi-python/issues/14#issuecomment-1943842298
I believe you're looking for our older google-search-results library.
Both it and this newer serpapi library have the same module name for imports, but different interfaces, so they're very easily confused.
新旧どちらもimportするモジュール名はserpapiなんですね
終わりに
Hugging Faceのdeep research再現24時間チャレンジの実装から知ったSerpApiを試しました。
Google検索をAPIから使えると、得たURLからHTMLを取得して(=スクレイピング)、文字列処理みたいな感じで自動化が見えてきますね。
そこにCodeAgentが加わると、精度高くタスク(例:質問応答)をこなすための情報を見つけられるってことなのかな?
Hugging Faceのdeep research再現チャレンジ再現シリーズはもう少し続くと思います
- Hugging Faceによるエージェントライブラリ smolagents をGemini 2.0 Flashで動かす - nikkie-ftnextの日記で取り上げた↩
- Organic Resultsのページ https://serpapi.com/organic-results↩
- organic_resultsを含まない場合もあるようで、SerpApiの返り値をしっかりめに処理している印象です↩