LangChainでインターネット検索ができるToolまとめ


情報源はLangChainのToolsのページ

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

* Bing Search
* Brave Search
* DuckDuckGo Search
* Google Search

全部駆使したら、まぁまぁな無料枠になりそう


## Bing Search

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

* 概要：
    * MicrosoftのBing検索
    * https://www.bing.com/
* 使用API：
    * Bing Web Search API
    * https://learn.microsoft.com/ja-jp/bing/search-apis/bing-web-search/overview
* LangChainの実装方法：
    * requests
* 使い方
    1. Azureポータルにアクセス
    1. Bing Search v7を有効化
    1. APIキー発行
    
    ```python
    import os
    
    os.environ["BING_SUBSCRIPTION_KEY"] = "<key>"
    os.environ["BING_SEARCH_URL"] = "https://api.bing.microsoft.com/v7.0/search"
    
    from langchain_community.utilities import BingSearchAPIWrapper
    
    search = BingSearchAPIWrapper()
    response = search.run("python")
    ```

* 料金：
    * 無料枠あり（3 TPS、1,000 transactions free per month for all markets）
    * https://www.microsoft.com/en-us/bing/apis/pricing
* 参考サイト：
    * Quickstart: Use Python to call the Bing Web Search API
    * https://learn.microsoft.com/ja-jp/bing/search-apis/bing-web-search/quickstarts/rest/python
    * Quickstart: Use a Bing Web Search Python client library
    * https://learn.microsoft.com/ja-jp/bing/search-apis/bing-web-search/quickstarts/sdk/web-search-client-library-python


## Brave Search

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

* 概要：
    * Brave検索
    * https://search.brave.com/
* 使用API：
    * Brave Search API
    * https://brave.com/search/api/
* LangChainの実装方法：
    * requests
* 使い方
    1. https://api.search.brave.com/login にアクセスし、ログイン
    1. APIキー発行
    ```python
    from langchain_community.tools import BraveSearch
    
    api_key = "API KEY"
    
    tool = BraveSearch.from_api_key(api_key=api_key)
    
    print(tool.run("pythonの使い方"))
    ```

* 料金：
    * 無料枠あり（1 query/second、Up to 2,000 queries/month）
    * https://brave.com/search/api/

* 参考サイト：
    * APIドキュメントはログイン後に確認できる

## DuckDuckGo Search

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

* 概要：
    * DuckDuckGo検索
    * https://duckduckgo.com/
* 使用API：
    * API提供はしていない（？）
    * https://duckduckgo.com/duckduckgo-help-pages/settings/params/
* LangChainの実装方法：
    * duckduckgo-search
    * https://github.com/deedy5/duckduckgo_search
    * コミュニティライブラリー？
* 使い方
    * APIキーは不要
    ```python
    from langchain_community.tools import DuckDuckGoSearchRun
    
    search = DuckDuckGoSearchRun()
    
    response = search.run("pythonとは")
    ```

* 料金：
    * 無料？

* 参考サイト：


## Google Search

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

* 概要：
    * Google検索
    * https://www.google.com/
* 使用API：
    * Custom Search JSON API
    * https://developers.google.com/custom-search/v1/overview?hl=ja
* LangChainの実装方法：
    * Google API Client
    * https://github.com/googleapis/google-api-python-client/
    * langchain-communityじゃなくてlangchain-google-communityを使うのが良さそう
* 使い方
    1. https://console.cloud.google.com/apis/library/customsearch.googleapis.com にアクセスし、 「Custom Search API」を有効化　（要Google Cloudアカウント）
    1. APIとサービスにアクセス（ https://console.cloud.google.com/apis/dashboard ） 、認証情報メニューをクリック
    1. 「認証情報を作成」の「API キー」をクリック、APIキーを発行
    1. プログラム可能な検索エンジンにアクセス（ https://programmablesearchengine.google.com/ ）
    1. 「使ってみる」をクリック
    1. 入力フォームに情報入力、次の画面で「カスタマイズ」をクリック
    1. 「検索エンジン ID」を入手

    ```python
    import os
    
    os.environ["GOOGLE_API_KEY"] = "*****"
    os.environ["GOOGLE_CSE_ID"] = "*****"
    
    from langchain_google_community.search import GoogleSearchAPIWrapper
    
    search = GoogleSearchAPIWrapper()
    
    response = search.run("python")
    
    print(response)
    ```


* 料金：
    * 無料枠あり（1 日あたり 100 件の検索クエリを無料）
    * https://developers.google.com/custom-search/v1/overview?hl=ja

1. APIとサービスにアクセス（ https://console.cloud.google.com/apis/dashboard ） 
1. 一覧の「Custom Search API」をクリック
1. 「割り当てアラートとシステム上限」タブをクリック
1. フィルター一覧の「Queries per day」にチェックを入れ、「割り当てを編集」をクリック
1. 新しい値を「99」に変更　※デフォルトは10,000だったと思う

* 参考サイト：
    * https://developers.google.com/custom-search/v1/overview?hl=ja


## 他にも色々ありそう（未調査）

### Google Serper

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

### SearchApi

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

### SearxNG Search

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

### SerpAPI

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

### Tavily Search

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