【AI】Claude APIのWeb検索ツールをPythonで使う方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

Claude APIだけでWeb検索をして、最新情報をふまえた回答を生成したい」とお考えではありませんか?

Claudeの学習データには知識のカットオフがあり、最近のニュースやライブラリの新バージョンには自力で答えられません。

Anthropicが提供するWeb検索ツールを使うと、検索から結果の読解、出典付きの回答生成までをAPI側が自動でやってくれます

いずみ

ツール実行ループを自分で書かなくていいのが一番のメリットです。

ということで、本記事ではClaude APIのWeb検索ツールをPythonで使う方法を解説します。

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいませ。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

Claude APIのWeb検索ツールをPythonで使う方法

早速ですが、Claude APIのWeb検索ツールをPythonで使う方法を解説していきます。

Claude APIのWeb検索ツールとは

Web検索ツールは、Anthropicがサーバー側で実行する「サーバーツール」の一種です。

リクエストのtools に検索ツールの定義を追加すると、Claudeが必要と判断したタイミングで自動的にWeb検索を実行します。

検索クエリの生成、複数回の検索、結果の要約、出典(citations)の付与までを1回のmessages.create() で完結できます。

自前で検索APIを用意したり、ツール結果を返すループを書いたりする必要はありません。

いずみ

通常のツール使用と違って、検索結果を返すやり取りを開発者側で管理しなくて済みます。

使う準備

Web検索ツールを使う準備は3ステップです。

STEP
anthropicライブラリをインストールする

公式のPython SDKをインストールします。

pip install anthropic
STEP
APIキーを環境変数に設定する

AnthropicコンソールでAPIキーを発行し、環境変数に設定します。

export ANTHROPIC_API_KEY="sk-ant-xxxxx"

anthropic.Anthropic()ANTHROPIC_API_KEY を自動で読み込みます。

STEP
web_searchツールを付けてリクエストする

toolsweb_search_20250305 を追加してリクエストします。

いずみ

追加するのはツール定義だけで、あとはClaudeにおまかせです。

基本的な使い方

最小構成のコードは以下の通りです。

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Python 3.13の新機能を調べて要約して"}
    ],
    tools=[
        {
            "type": "web_search_20250305",
            "name": "web_search",
            "max_uses": 5,
        }
    ],
)

for block in response.content:
    if block.type == "text":
        print(block.text)

web_search_20250305 はツールのバージョン識別子で、日付が新しいバージョンほど機能が追加されています。

max_uses は1リクエストあたりの検索回数の上限で、指定しておくと想定外の検索の連発を防げます。

レスポンスのcontent には、検索の意思表示、検索クエリ(server_tool_use)、検索結果(web_search_tool_result)、出典付きの最終回答(text)が順番に並びます。

いずみ

最終的な回答テキストだけ欲しい場合は、typeがtextのブロックを拾えばOKです。

検索するドメインを絞り込む

検索対象を信頼できるサイトだけに限定したいときはallowed_domains を指定します。

tools=[
    {
        "type": "web_search_20250305",
        "name": "web_search",
        "max_uses": 3,
        "allowed_domains": ["docs.python.org", "peps.python.org"],
    }
]

逆に特定サイトを除外したいときはblocked_domains を使います。

allowed_domainsblocked_domains の同時指定はできず、両方渡すと400エラーになります。

ドメインはスキームを付けず、example.comexample.com/blog の形式で書きます。

検索結果を地域に合わせる

user_location を指定すると、検索結果をユーザーの地域向けにローカライズできます。

tools=[
    {
        "type": "web_search_20250305",
        "name": "web_search",
        "user_location": {
            "type": "approximate",
            "city": "Tokyo",
            "region": "Tokyo",
            "country": "JP",
            "timezone": "Asia/Tokyo",
        },
    }
]

typeapproximate 固定で、cityregioncountrytimezone のうち最低1つを渡します。

country はISO 3166-1 alpha-2の2文字コードで、対応外のコードを渡すと400エラーになります。

出典と検索回数を取得する

Web検索ツールでは引用(citations)が常に有効で、回答テキストのブロックに出典情報が付きます。

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Claude Shannonの誕生日は?"}],
    tools=[{"type": "web_search_20250305", "name": "web_search"}],
)

for block in response.content:
    if block.type == "text":
        print(block.text)
        for citation in getattr(block, "citations", None) or []:
            print("  出典:", citation.title, citation.url)

print("検索回数:", response.usage.server_tool_use.web_search_requests)

各citationにはurltitlecited_text(引用元の最大150文字)が含まれます。

実行した検索回数はresponse.usage.server_tool_use.web_search_requests で確認できます。

いずみ

エンドユーザーに回答を見せるときは、出典リンクも一緒に表示するのが規約上の推奨です。

料金と注意点

Web検索はトークン料金とは別に、1,000検索あたり10ドルが課金されます。

検索1回につき1カウントで、返ってきた結果の件数は料金に影響しません。

検索中にエラーが起きた場合、失敗した検索は課金されません。

max_uses を超えるとweb_search_tool_resultmax_uses_exceeded エラーを返し、レートリミット超過ならtoo_many_requests が返ります。

検索ツールのエラーはHTTP 200のレスポンス本文の中に入ってくるため、ステータスコードだけでなくレスポンスの中身も確認する必要があります。

検索を含む会話を継続するときは、assistantのcontentブロックを受け取ったままの形で送り返します。

検索結果内のencrypted_content を削除・改変すると、次のターンで400エラーになります。

いずみ

長い検索でstop_reasonがpause_turnになったときは、返ってきたメッセージをそのまま送り返せば処理が続きます。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

Web検索ツールはどのモデルで使えますか?

Claudeの主要なメッセージ対応モデルで利用できます。

対応モデルは追加・変更される可能性があるため、利用前にAnthropicのドキュメントで確認してください。

検索プロバイダはどこですか?

Web検索の裏側では外部の検索エンジンが使われています。

開発者が検索エンジンを選んだり差し替えたりはできません。

検索回数を1回だけに制限できますか?

max_uses に1を指定すれば、1リクエストにつき1検索までに制限できます。

上限を超える検索をClaudeが試みるとmax_uses_exceeded エラーになります。

ストリーミングでも使えますか?

ストリーミングに対応しており、検索クエリや検索結果もイベントとして流れてきます。

検索の実行中はストリームが一時的に停止します。

まとめ

今回は、Claude APIのWeb検索ツールをPythonで使う方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • Claude APIのWeb検索ツールはtoolsweb_search_20250305 を追加するだけで使える。
  • 検索から出典付きの回答生成までAPI側が完結し、ツール実行ループの自作が不要。
  • max_usesallowed_domainsuser_location で検索の挙動を制御できる。
  • 料金はトークン料金に加えて1,000検索あたり10ドル。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次