今回はOpenAIの大規模言語モデルChatGPTを使って、Web上の最新情報を元に文章を生成する方法について解説します。LangChainのエージェントを使用し、簡単なPythonコードで実装できますので、ぜひ活用してみてください。
LangChainと組み合わせることで、ChatGPTが最新情報を元に回答をすることが可能。
また、当ブログ内のChatGPTについての記事を以下のページでまとめていますので、あわせてご覧ください。
ChatGPTとは
ChatGPTは、OpenAIが提供する自然言語生成モデルです。GPT(Generative Pre-training Transformer)と呼ばれるモデルのアーキテクチャを採用しています。
GPTは、Transformerと呼ばれるニューラルネットワークを使用して、文書や言語処理タスクでのテキスト生成を行うモデルです。GPTは、大量のテキストデータを学習し、そのデータをもとに新しい文章を生成することができます。
ChatGPTは、GPTをもとにしたモデルであり、対話型システムやチャットボットなどで使われることを想定して開発されています。対話を続けることができるようになっており、ユーザーが入力するテキストに対して、自然で返答ができるようになっています。
ChatGPTの学習データ
OpenAIが公開している情報によると、ChatGPTの学習しているデータは2021年末までのものとなっています。したがってそれ以降の情報については、ChatGPTに質問しても回答できないということになります。
ChatGPTが対応できるのは2021年末までのデータとなります。
しかし、後程紹介するChatGPTの機能を拡張するLangChainと組み合わせることにより、最新のデータをGoogleの検索エンジンを通して収集し、回答を作成することが可能になります。
OpenAI APIキーの取得
また今回紹介するPythonのプログラムでは、コード内からOpenAIのAPIを介してChatGPTを使用するため、OpneAIのAPIキーが必要になります。
OpenAIのAPIキーの取得方法については以下の記事で解説していますので、事前に取得しておいてください。
LangChainとは
LangChain は、言語モデルを利用したアプリケーションを開発するためのフレームワークです。
今回はこのLangChainのエージェントを使って、必要な最新情報をGoogle検索エンジンで取得し、ChatGPTに入力して回答を生成します。
LangChainの詳細については以下の記事で解説しています。
Google Programmable Search EngineのAPIキーを取得
LangChainを使ってWeb上の情報を収集する際に、Googleの検索エンジンAPIを経由して取得します。
以下の記事でGoogleの検索エンジンIDとAPIキーの取得方法について解説しますので、事前に取得を済ませておいてください。
ライブラリのインストール
今回のアプリケーション構築に必要なライブラリをインストールします。
以下のコマンドを実行してインストールしてください。
OpenAIのライブラリ
pip install openai
LangChainのライブラリ
pip install langchain
Googleの検索エンジンのライブラリ
pip install google-api-python-client
作成したPythonコード
ここからは実際にLangChainを使ったChatGPTの文章生成処理を実装するためのPythonコードを解説します。
Pythonコード解説
環境変数の設定
事前に取得したOpenAIのAPIキー、Googleの検索エンジンID、検索エンジンAPIキーを環境変数に設定する必要があります。これらの設定方法についてはLangChainの以下の公式ドキュメントに記載されています。
Google Search Wrapperの使い方は以下のページで解説されています。
環境変数の設定方法は以下のページで解説されています。
環境変数一覧
情報を設定する環境変数は以下の通りです。
OpenAIのAPIキー | OPENAI_API_KEY |
Googleの検索エンジンAPI | GOOGLE_API_KEY |
Googleの検索エンジンID | GOOGLE_CSE_ID |
設定するためのPythonコード
Pythonで環境変数の設定を行うにはosモジュールをインポートします。
環境変数に書き込みを行うにはos.environ()メソッドを使用します。
import os
os.environ["OPENAI_API_KEY"] = "(OpenAIのAPIを設定)"
os.environ["GOOGLE_API_KEY"] = "(Googleの検索エンジンAPIキーを設定)"
os.environ["GOOGLE_CSE_ID"] = "(Googleの検索エンジンIDを設定)"
toolsでGoogleの検索エンジンを指定
Agentに与えるツールを指定します。今回はGoogleの検索エンジンを使用するため、「[“google-search”]」を指定します。
tools = load_tools(["google-search"], llm=llm)
Agent(エージェント)の作成
LangChainのAgentの作成にはinitialize_agentメソッドを使用します。
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
作成した全体のソースコード
作成した全体のPythonコードは以下の通りです。
最後のrunメソッドの引数にChatGPTへの質問を設定して実行します。
from langchain.llms import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent
# 環境変数を設定
import os
os.environ["OPENAI_API_KEY"] = "(OpenAIのAPIを設定)"
os.environ["GOOGLE_API_KEY"] = "(Googleの検索エンジンAPIキーを設定)"
os.environ["GOOGLE_CSE_ID"] = "(Googleの検索エンジンIDを設定)"
#LLMを設定
llm = OpenAI(model_name="gpt-3.5-turbo")
tools = load_tools(["google-search"], llm=llm)
#エージェントの作成
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("(ここにChatGPTへの質問を入力")
Pythonコードの実行結果
先ほどのPythonコードを実行し、2021年以降の新しい情報に対応できているかを確認します。
ChatGPTへの質問
今回は最新の情報を取得した上で回答を作成できているかを確認するため、2023年の米アカデミー賞受賞作品を質問してみました。
agent.run("2023年の米アカデミー賞 最優秀作品賞は何ですか?")
ChatGPTからの回答
ChatGPTからの回答は以下となります。
まず、Googleの検索エンジンを通してアカデミー賞受賞作品に関するデータの収集が行われています。
ndan Fraser, "The Whale" — Winner · Colin Farrell, "The Banshees of Inisherin" · Austin Butler, "Elvis" · Bill Nighy, "Living" · Paul ... Official site of the Academy with history and general information on the Academy Awards, as well as photographs, events and screenings, and press releases. Jan 24, 2023 ... The best picture race contains the two highest-grossing films of the year, “Avatar: The Way of Water” and “Top Gun: Maverick,” along with “Elvis ... ^ Reul, Katie (March 12, 2023). "'Everything Everywhere All at Once' Wins Seven Oscars, Is Most-Awarded Best Picture Since 'Slumdog Millionaire'". Variety ... See all the Oscars 2023 Winners! The 2023 Oscar for Best Picture goes to... Top Gun: Maverick tops the list of the 2023 Oscar Best Picture nominees ranked by Tomatometer — makes sense since the Tom Cruise joyride was declared the ... Mar 12, 2023 ... "Everything Everywhere All at Once" wins Best Picture at the 95th Academy Awards. “Everything Everywhere All at Once” wins Best Picture at the ... Mar 10, 2023 ... “The Way of Water” is an immersive survival story in tandem with delivering breathtaking visual information in every second of its hefty running ... Mar 13, 2023 ... "Everything Everywhere All At Once" took home the Academy Award for best picture, capping a sweep of the major prizes Sunday night. The A24 film ...
Thought:Based on the Google Search results, it looks like "Everything Everywhere All at Once" won Best Picture at the 2023 Academy Awards.Final Answer: "Everything Everywhere All at Once" was the Best Picture at the 2023 Academy Awards.
> Finished chain.
そして最後のファイナルアンサーの部分で、それらの情報を元にChatGPTが回答を作成しています。
Final Answer: "Everything Everywhere All at Once" was the Best Picture at the 2023 Academy Awards.
(最終回答: 「Everything Everywhere All at Once」は、2023 年のアカデミー賞の最優秀作品賞でした。)
ChatGPTからの回答で受賞作品は「Everything Everywhere All at Once」とありましたので、ネットで検索して確認したところ、正しい情報でした。
これにより、2022年以降の内容にも対応できていることが確認できました。
\ Pythonを自宅で好きな時に学べる! /
まとめ
今回はChatGPTとLangChainを組み合わせ、Web上の最新情報を元に回答を作成する方法について解説しました。新しい情報にアクセスできることにより、ChatGPTの活用の幅がさらに広がると思いますので、ぜひ試してみてください。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント