【Python】GoogleColabでLangChainを使用してみます。
LangChainは、大規模言語モデル (LLM) を使用してアプリケーションの作成を簡素化するように設計されたソフトウェア開発フレームワークです。さまざまなデータソースに接続して対話する機能を備え、パーソナル アシスタント、質問応答、チャットボットなどの幅広いシナリオで使用できます。
■今回の環境(Python)
今回のPythonは、バージョン3.9.16を用いる。(なお、Google Colaboratory(Google Colab)を使用。)
■Google Colabでノートブックの新規作成
まずは、Google Colab(https://colab.research.google.com/)にアクセスします。アクセス後、お持ちのGoogleアカウントでログインされているか確認しておきましょう。
確認後、Google Colab上部の「ファイル」から「ノートブックを新規作成」をクリックします。
クリックすると「ノートブック」が作成されます。
■LangChainの環境のセットアップ
作成後、LangChainの環境のセットアップのためにOpenAI API キーを使用しますので、OpenAI API キーを取得します。
OPENAI_API_KEY="xxxxxxxxxxx"
取得後、PC上でテキストエディタ等を開きます。その後上記のコードを入力し「xxxxxxxxxxx」に取得したAPIキーの情報を入力します。入力後に「.env」というファイル名で保存します。
■コード
from google.colab import drive drive.mount('/content/drive')
保存後、Google Colabのノートブック上で上記のコードをコードセルに入力し、実行ボタンをクリックします。クリックすると「このノートブックに Google ドライブのファイルへのアクセスを許可しますか?」と表示されますので「Googleドライブに接続」をクリックします。クリックすると「アカウントの選択 「Google Drive for desktop」に移動」と表示されますので、Googleアカウントを選択します。選択すると「Google Drive for desktop が Google アカウントへのアクセスをリクエストしています」と表示され、「Google Drive for desktop に以下を許可します」と許可される内容が表示されますので確認後「許可」ボタンをクリックします。
クリックすると作成したノートブック上で「Mounted at /content/drive」と出力されます。これでGoogle Colab環境のファイルフォルダにアップロードできる状態になりました。
次に「セッションストレージにアップロード」のボタンをクリックし、「.env」というファイルをアップロードします。
アップロードの際に「警告」というウインドウが表示され、「ファイルが他の場所に保存されていることをご確認ください。 このランタイムのファイルは、ランタイムの終了時に削除されます。」とウインドウ内に表示されますが、「OK」ボタンをクリックします。
クリックするとアップロードされます。アップロードされますが、「隠しファイルを表示」という目のマークをクリックしないと表示されません。
■コード
!pip install python-dotenv==1.0.0 !pip install langchain !pip install openai !pip install azure-core
アップロード後、必要なPythonライブラリをインストールするために、ノートブックにコードセルを挿入し、上記のコードを入力します。入力後「実行」ボタンをクリックします。
ooking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting python-dotenv==1.0.0 Downloading python_dotenv-1.0.0-py3-none-any.whl (19 kB) Installing collected packages: python-dotenv Successfully installed python-dotenv-1.0.0 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting langchain Downloading langchain-0.0.179-py3-none-any.whl (907 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 907.7/907.7 kB 11.5 MB/s eta 0:00:00 Requirement already satisfied: PyYAML>=5.4.1 in /usr/local/lib/python3.10/dist-packages (from langchain) (6.0) Requirement already satisfied: SQLAlchemy<3,>=1.4 in /usr/local/lib/python3.10/dist-packages (from langchain) (2.0.10) Collecting aiohttp<4.0.0,>=3.8.3 (from langchain) Downloading aiohttp-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 48.2 MB/s eta 0:00:00 Collecting async-timeout<5.0.0,>=4.0.0 (from langchain) Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB) Collecting dataclasses-json<0.6.0,>=0.5.7 (from langchain) Downloading dataclasses_json-0.5.7-py3-none-any.whl (25 kB) Requirement already satisfied: numexpr<3.0.0,>=2.8.4 in /usr/local/lib/python3.10/dist-packages (from langchain) (2.8.4) Requirement already satisfied: numpy<2,>=1 in /usr/local/lib/python3.10/dist-packages (from langchain) (1.22.4) Collecting openapi-schema-pydantic<2.0,>=1.2 (from langchain) Downloading openapi_schema_pydantic-1.2.4-py3-none-any.whl (90 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.0/90.0 kB 6.9 MB/s eta 0:00:00 Requirement already satisfied: pydantic<2,>=1 in /usr/local/lib/python3.10/dist-packages (from langchain) (1.10.7) Requirement already satisfied: requests<3,>=2 in /usr/local/lib/python3.10/dist-packages (from langchain) (2.27.1) Requirement already satisfied: tenacity<9.0.0,>=8.1.0 in /usr/local/lib/python3.10/dist-packages (from langchain) (8.2.2) Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (23.1.0) Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (2.0.12) Collecting multidict<7.0,>=4.5 (from aiohttp<4.0.0,>=3.8.3->langchain) Downloading multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 114.5/114.5 kB 9.9 MB/s eta 0:00:00 Collecting yarl<2.0,>=1.0 (from aiohttp<4.0.0,>=3.8.3->langchain) Downloading yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 268.8/268.8 kB 21.3 MB/s eta 0:00:00 Collecting frozenlist>=1.1.1 (from aiohttp<4.0.0,>=3.8.3->langchain) Downloading frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 149.6/149.6 kB 13.1 MB/s eta 0:00:00 Collecting aiosignal>=1.1.2 (from aiohttp<4.0.0,>=3.8.3->langchain) Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB) Collecting marshmallow<4.0.0,>=3.3.0 (from dataclasses-json<0.6.0,>=0.5.7->langchain) Downloading marshmallow-3.19.0-py3-none-any.whl (49 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.1/49.1 kB 4.1 MB/s eta 0:00:00 Collecting marshmallow-enum<2.0.0,>=1.5.1 (from dataclasses-json<0.6.0,>=0.5.7->langchain) Downloading marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB) Collecting typing-inspect>=0.4.0 (from dataclasses-json<0.6.0,>=0.5.7->langchain) Downloading typing_inspect-0.9.0-py3-none-any.whl (8.8 kB) Requirement already satisfied: typing-extensions>=4.2.0 in /usr/local/lib/python3.10/dist-packages (from pydantic<2,>=1->langchain) (4.5.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain) (1.26.15) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain) (2022.12.7) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain) (3.4) Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.10/dist-packages (from SQLAlchemy<3,>=1.4->langchain) (2.0.2) Requirement already satisfied: packaging>=17.0 in /usr/local/lib/python3.10/dist-packages (from marshmallow<4.0.0,>=3.3.0->dataclasses-json<0.6.0,>=0.5.7->langchain) (23.1) Collecting mypy-extensions>=0.3.0 (from typing-inspect>=0.4.0->dataclasses-json<0.6.0,>=0.5.7->langchain) Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB) Installing collected packages: mypy-extensions, multidict, marshmallow, frozenlist, async-timeout, yarl, typing-inspect, openapi-schema-pydantic, marshmallow-enum, aiosignal, dataclasses-json, aiohttp, langchain Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 dataclasses-json-0.5.7 frozenlist-1.3.3 langchain-0.0.179 marshmallow-3.19.0 marshmallow-enum-1.5.1 multidict-6.0.4 mypy-extensions-1.0.0 openapi-schema-pydantic-1.2.4 typing-inspect-0.9.0 yarl-1.9.2 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting openai Downloading openai-0.27.7-py3-none-any.whl (71 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.0/72.0 kB 1.2 MB/s eta 0:00:00 Requirement already satisfied: requests>=2.20 in /usr/local/lib/python3.10/dist-packages (from openai) (2.27.1) Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from openai) (4.65.0) Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from openai) (3.8.4) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (1.26.15) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (2022.12.7) Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (2.0.12) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai) (3.4) Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (23.1.0) Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (6.0.4) Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (4.0.2) Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (1.9.2) Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (1.3.3) Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai) (1.3.1) Installing collected packages: openai Successfully installed openai-0.27.7 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting azure-core Downloading azure_core-1.26.4-py3-none-any.whl (173 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 173.9/173.9 kB 4.0 MB/s eta 0:00:00 Requirement already satisfied: requests>=2.18.4 in /usr/local/lib/python3.10/dist-packages (from azure-core) (2.27.1) Requirement already satisfied: six>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from azure-core) (1.16.0) Requirement already satisfied: typing-extensions>=4.3.0 in /usr/local/lib/python3.10/dist-packages (from azure-core) (4.5.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.18.4->azure-core) (1.26.15) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.18.4->azure-core) (2022.12.7) Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests>=2.18.4->azure-core) (2.0.12) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.18.4->azure-core) (3.4) Installing collected packages: azure-core Successfully installed azure-core-1.26.4
クリックするとライブラリのインストールが開始され「Successfully installed」と表示されます。これが表示されればインストールは完了となります。
from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv())
完了後、環境を確認するために、上記のコードを新しいコードセルを挿入し入力。入力後、実行ボタンをクリックします。
クリックすると「True」と出力されれば、環境が正しく設定されています。
■LangChainを使用したプログラムの実行
設定後、LangChainを使用したプログラムを実行します。
■コード
from langchain.llms import OpenAI llm=OpenAI(model_name="text-davinci-003") llm("大阪市の人口について説明する")
LangChain ライブラリを使用して OpenAIモデルである「text-davinci-003」モデルと対話します。llm=OpenAI(model_name=”text-davinci-003″) という行は、llm という OpenAI クラスのインスタンスを作成し、使用するモデルとして「text-davinci-003」を引数,パラメータとして渡し指定します。
■実行・検証
このコードセルを保存し、Google Colaboratory上で、セルを実行してみます。
実行してみるとOpenAIの「text-davinci-003」モデルと対話した結果が出力されることを確認できました。
コメント