4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LangChainを使ってWebの最新情報をGPT-3.5に回答させてみた

Last updated at Posted at 2023-11-06

はじめに

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にアクセスし、「プロジェクトを作成」を選択します。

image.png
  
プロジェクト名を入力し、場所は「組織なし」を選択します。

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

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

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

image.png
  
「有効にする」を選択し、APIを有効化します。

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

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

記事投稿用 (8).png
  
「アプリケーションの制限の設定」で、「IPアドレス」を選択し、「IPアドレスの制限」の「ADD」を選択します。

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

記事投稿用 (9).png
  
次に、「APIの制限」の「キーを制限」から、「Custum Search API」を選択し、「保存」します。
image.png

これで、Google Custom SearchのAPIキーの設定は完了です。

Googleの検索エンジンIDの取得

Programmable Search Engineにアクセスし、「検索エンジン名」を入力、検索の対象は「ウェブ全体を検索」を選択し、ロボットではないことを証明した後、「作成」を選択します。

image.png
image.png
  
「すべての検索エンジン」から、作成した検索エンジンを選択します。

image.png
  
検索エンジンIDをコピーしてメモします。

記事投稿用 (10).png

環境変数の設定

ここからは、Pythonファイルに記述していきます。
以下のAPIキーやIDを利用するコードを記述します。

test.py
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"

ライブラリのインポート

使用するライブラリをインポートします。

test.py
from langchain.llms import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent

LLMの設定

使用するLLMの設定をします。

test.py
llm = OpenAI(model_name="gpt-3.5-turbo")
tools = load_tools(["google-search"], llm=llm)

Agentの作成

Agentを作成します。

test.py
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に同じ質問をしてみます。

image.png

初代M1グランプリの優勝者は、中川家なので、不正解です。2022年1月以前の情報であっても、知らない情報は存在するようです。
  
続いて、先ほどのPythonファイルを実行します。1回目の検索では特定できなかったようですが、2回目の検索で「中川家」を「Final Answer」として回答してくれました。正解です。

image.png

このように、知らない情報であれば、google-searchを使って正確な情報を回答してくれることが確認できました!

おわりに

LangChainを使ってWebの最新情報をGPT-3.5に回答させてみました。
LangChainを使うことで、通常のGPT-3.5の学習範囲を超えた回答が可能になるので、ぜひ活用してみてください。

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

記事に関する質問等ございましたら、コメントまたは以下のDMにてよろしくお願いします!

参考文献

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?