はじめに
LangChainを使ってWebの最新情報をGPT-3.5に回答させてみました。
LangChainを使ってGPTにWebの最新情報を回答させてみたい方におすすめです。
開発環境
- Windows 11
- Python 3.11.0
- OpenAI
- LangChain
- Google Custum Search
- Google Programmable Search Engine
実装
必要なライブラリのインストール
以下のコマンドでOpenAI、LangChain、Google検索エンジンのライブラリをインストールします。
pip install openai langchain google-api-python-client
Google Custom SearchのAPIキーの設定
Google Cloud credential consoleにアクセスし、「プロジェクトを作成」を選択します。

サイドバーの「APIとサービス」から、「ライブラリ」を選択します。

検索バーで「custom search api」を検索します。予測変換で出てくるので、全て入力しなくても大丈夫です。

検索結果から、Custum Search APIを選択します。

「認証情報」から「APIキー」を選択し、APIキーを作成します。

APIキーをコピーしてメモした後、「APIキーを編集」へのリンクを選択します。

「アプリケーションの制限の設定」で、「IPアドレス」を選択し、「IPアドレスの制限」の「ADD」を選択します。

同じIPアドレスを使っている人のみにAPIキーの使用を許可します。
自分が使っているIPアドレスは こちら で確認ができます。

次に、「APIの制限」の「キーを制限」から、「Custum Search API」を選択し、「保存」します。

これで、Google Custom SearchのAPIキーの設定は完了です。
Googleの検索エンジンIDの取得
Programmable Search Engineにアクセスし、「検索エンジン名」を入力、検索の対象は「ウェブ全体を検索」を選択し、ロボットではないことを証明した後、「作成」を選択します。


「すべての検索エンジン」から、作成した検索エンジンを選択します。
環境変数の設定
ここからは、Pythonファイルに記述していきます。
以下のAPIキーやIDを利用するコードを記述します。
import os
os.environ["OPENAI_API_KEY"] = "[OpenAIのAPIキー]"
os.environ["GOOGLE_API_KEY"] = "[Google Custom SearchのAPIキー]"
os.environ["GOOGLE_CSE_ID"] = "Googleの検索エンジンID"
ライブラリのインポート
使用するライブラリをインポートします。
from langchain.llms import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent
LLMの設定
使用するLLMの設定をします。
llm = OpenAI(model_name="gpt-3.5-turbo")
tools = load_tools(["google-search"], llm=llm)
Agentの作成
Agentを作成します。
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("初代M1グランプリの優勝者は?")
zero-shot-react-descriptionは、指定されたtool(ここではgoogle-search)を使うかどうかをLLMが推論し、使うべきであればtoolを使用して解答が返されます。
verboseをTrueにすることで、推論の過程がログに出力されます。
agent.runの中身は質問内容です。今回は通常のChatGPTが知らないと思われる「初代M1グランプリの優勝者は?」という質問にしました。
結果
まずは、通常のChatGPTに同じ質問をしてみます。
初代M1グランプリの優勝者は、中川家なので、不正解です。2022年1月以前の情報であっても、知らない情報は存在するようです。
続いて、先ほどのPythonファイルを実行します。1回目の検索では特定できなかったようですが、2回目の検索で「中川家」を「Final Answer」として回答してくれました。正解です。
このように、知らない情報であれば、google-searchを使って正確な情報を回答してくれることが確認できました!
おわりに
LangChainを使ってWebの最新情報をGPT-3.5に回答させてみました。
LangChainを使うことで、通常のGPT-3.5の学習範囲を超えた回答が可能になるので、ぜひ活用してみてください。
最後まで読んでいただき、ありがとうございました!
記事に関する質問等ございましたら、コメントまたは以下のDMにてよろしくお願いします!
参考文献





