nikkie-ftnextの日記

イベントレポートや読書メモを発信

OpenAIのWeb search toolをChat Completions APIで使う

はじめに

nikkieは激怒した

必ず、かの邪智暴虐の1
( ゚д゚)ハッ!
気を取り直して素振り、いってみたいと思います。

目次

私は完全に見逃していたのですが、ChatGPTはWebを検索できます(deep researchまではいかない検索です)。

openai.com

The search model is a fine-tuned version of GPT‑4o, post-trained using novel synthetic data generation techniques, including distilling outputs from OpenAI o1‑preview.

これがWeb APIとしてこのたび提供されたと認識しました。

Web search(を含むtool)のlaunch

このたびlaunchされました!

Web search toolは、既存のChat Completions APIでも、このたび追加されたResponses APIでも使えます。
今回はChat Completions APIで使いました。

platform.openai.com

Chat Completions APIでWeb searchをするとき、指定するモデルは以下2つのどちらかとありました。

Web search する Chat completions のサンプルスクリプト

  • 上述のモデルの指定
  • web_search_options
    • User location
      • 日本と指定
      • countryISO 3166-1のAlpha-2 code
      • timezoneはIANA timezone2
      • フリーテキストでcityregionも指定できるが、今回は省略
    • Search context size
      • デフォルトのmedium指定で
      • highにするとcontextが大きくゆえに時間がかかるようになり、lowにするとcontextは小さくゆえに速くなる

環境変数OPENAI_API_KEYを設定して実行しています。
uv run web_search.py

レスポンス
(annotationsのURLは本文と同じなので、省略します)

outputが1.5Kトークンあり、0.03$消費しています

Brave SearchのMCPと同じ質問をしたのですが、

聖地巡礼コース紹介のサイトではなく)Google mapのURLが並ぶという、全然異なる体験となりました。
裏側でどんな検索をしたらこんなレスポンスを返せるんでしょう?(聖地の一覧を得ていそうですが、それは最終出力にはないですね)

今回触りきれていない点(Future works)

Web search toolはResponses APIからも使えます!
https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses&lang=python
Responses APIでは、gpt-4oにweb_search_previewというツールを渡すようです。
またChat completionsと違って、複数のツールを渡せるように思われます。

Responses APIと同時に発表されたopenai-agentsからも使えますね。
https://openai.github.io/openai-agents-python/tools/#hosted-tools
簡単なコードで済むようです

agent = Agent(
    name="Assistant",
    tools=[
        WebSearchTool(),
    ],
)

終わりに

ChatGPTのWeb UIで使えるWeb searchをAPIからも使いました。
Web search toolを使う専用のモデルを指定して、Chat Completionsします。
(N=1の偏りも全然ありえますが)検索エンジンによる結果とは全然異なる体験をしました