💭

【Azure】-Bing Searchを触ってみる

2025/01/01に公開

執筆日

2025/1/1

やること

Azure AI Agent Serviceを触っている時に出会ったBing Search.
初めましてだったので、勉強したことをまとめようかなと。

Bing Searchとは?

MicrosoftのBing Search APIを使用して、アプリケーションやサービスに高度な検索機能を統合するためのサービスです。Web検索、画像検索、ニュース検索など、Bingの強力な検索エンジンを活用した検索機能をAPIで使える。

Bing Searchでできること

  • Bing Web Search
  • Bing Image Search
  • Bing News Search
  • Bing Video Search
  • Bing Entity Search
  • Bing Autosuggest
  • Bing Spell Check

Bing検索リソースの構築手順

  1. Azure Portalを開く
  2. 検索欄でBingリソースと検索し、Bing リソースをクリックする
  3. +追加 をクリックし、+Bing Searchをクリックする
  4. 必要なパラメータを入力し、構築をする
    ※今回は、価格:S1で構築しました。
  5. 構築されたことを確認する

SKUについて

Bing検索リソースには複数のSKUがあり、料金や機能が異なります。詳細は以下のリンクから確認できます。
https://www.microsoft.com/en-us/bing/apis/pricing

Portalで検証する

  1. Bing Search>概要を開き、検索語句/市場を入力し検索をクリックする
    ※市場:リージョン
  2. 検索結果が出力されることを確認する
JSON応答

{
"_type": "SearchResponse",
"queryContext": {
"originalQuery": "ヘッドウォータース"
},
"webPages": {
"webSearchUrl": "https://www.bing.com/search?q=ヘッドウォータース",
"totalEstimatedMatches": 3,
"value": [
{
"id": "https://api.bing.microsoft.com/api/v7/#WebPages.0",
"name": "AIエージェント導入を検討する企業向けにAIエージェント業務 ...",
"url": "https://minkabu.jp/news/4107928",
"datePublished": "2024-12-27T00:00:00.0000000",
"datePublishedFreshnessText": "13 時間前",
"isFamilyFriendly": true,
"displayUrl": "https://minkabu.jp/news/4107928",
"snippet": "このような状況を受け、ヘッドウォータースおよびヘッドウォータースコンサルティングは、業務の現状を正確に把握し、AIエージェントの導入効果を最大化するためのコンサルティングサービスを開始しました。 サービスの特徴",
"dateLastCrawled": "2024-12-27T10:59:00.0000000Z",
"language": "ja",
"isNavigational": false,
"noCache": false
},
{
"id": "https://api.bing.microsoft.com/api/v7/#WebPages.1",
"name": "ヘッドウォ(4011) AIエージェント導入を検討する企業向けにAI ...",
"url": "https://minkabu.jp/stock/4011/news/4107735",
"datePublished": "2024-12-27T00:00:00.0000000",
"datePublishedFreshnessText": "13 時間前",
"isFamilyFriendly": true,
"displayUrl": "https://minkabu.jp/stock/4011/news/4107735",
"snippet": "株式/指数 株価検索 ヘッドウォータース[4011]株価情報 ヘッドウォのニュース AIエージェント導入を検討する企業向けにAIエージェント業務可視化・コンサルティングサービスを開始~172万時間の業務時間削減効果も~",
"dateLastCrawled": "2024-12-27T09:39:00.0000000Z",
"language": "ja",
"isNavigational": false,
"noCache": false
},
{
"id": "https://api.bing.microsoft.com/api/v7/#WebPages.2",
"name": "メンズも使ってOK。肌が変わった!毛穴ケアコスメ【SMORE ...",
"url": "https://antenna.jp/articles/25273522",
"datePublished": "2024-12-27T00:00:00.0000000",
"datePublishedFreshnessText": "13 時間前",
"isFamilyFriendly": true,
"displayUrl": "https://antenna.jp/articles/25273522",
"snippet": "SMOREを使う前は別の方法で(ウォーターピーリングをしたりスクラブ洗顔を使ったり)毛穴ケアしていましたが、全部やめて今はSMORE一本。もっと継続利用して、毛穴の変化を楽しみたいです。角質が溜まりやすい人にはぜひ使ってもらい",
"dateLastCrawled": "2024-12-27T11:20:00.0000000Z",
"language": "ja",
"isNavigational": false,
"noCache": false
}
]
}
}

code

検索

main.py
import requests

# Bing Search APIキーとエンドポイント
API_KEY = <"APIキー">
ENDPOINT = (
    "https://api.bing.microsoft.com/v7.0/search"
)

# 検索クエリを定義
query = "ヘッドウォータース"

params = {"q": query, "mkt": "ja-JP"}
headers = {"Ocp-Apim-Subscription-Key": API_KEY}

# APIリクエストの送信
response = requests.get(ENDPOINT, headers=headers, params=params)
print(f"リクエストを送信: {response}")

try:
    response = requests.get(ENDPOINT, headers=headers, params=params)
    response.raise_for_status()
    print(response.json())
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

画像検索

main.py
import requests

API_KEY = <"key">
ENDPOINT = "https://api.bing.microsoft.com/v7.0/images/search"

headers = {"Ocp-Apim-Subscription-Key": API_KEY}
params = {
    "q": "ヘッドウォータース",
    "count": 5,
    "mkt": "ja-JP",
}

response = requests.get(ENDPOINT, headers=headers, params=params)

if response.status_code == 200:
    results = response.json()
    print("画像検索結果:")
    for i, image in enumerate(results.get("value", []), start=1):
        print(f"{i}. {image['name']}")
        print(f"   サムネイルURL: {image['thumbnailUrl']}")
        print(f"   コンテンツURL: {image['contentUrl']}")
else:
    print(f"エラーが発生しました: {response.status_code}")
    print(response.text)

News検索

main.py
import requests

API_KEY = "<key>"
ENDPOINT = "https://api.bing.microsoft.com/v7.0/news/search"

headers = {"Ocp-Apim-Subscription-Key": API_KEY}
params = {
    "q": "ヘッドウォータース",  
    "count": 5,  
    "mkt": "ja-JP",
}

# APIリクエストの送信
response = requests.get(ENDPOINT, headers=headers, params=params)

# レスポンス処理
if response.status_code == 200:
    results = response.json()
    print("ニュース検索結果:")
    for i, news in enumerate(results.get("value", []), start=1):
        print(f"{i}. {news['name']}")
        print(f"   説明: {news['description']}")
        print(f"   URL: {news['url']}")
else:
    print(f"エラーが発生しました: {response.status_code}")
    print(response.text)

ちなみに

Bing Searchには、似たサービスが2つあります。
Bing Custom Search,Grounding with Bing Search.

特定のWebサイトやWebページの範囲に限定したカスタム検索エンジンを構築できるサービス

https://www.customsearch.ai

Azure AI Agent Serviceの知識ソースとして利用可能。これにより、AIエージェントがWeb検索結果を基に回答を生成できるようになる
https://www.microsoft.com/en-us/bing/apis/grounding-pricing

ヘッドウォータース

Discussion