Python

【5分で分かる】LangChainのPythonでの使い方 -チュートリアル-

LangChain
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、大規模言語モデル(LLM)を上手く扱う上で非常に便利なLangChainというライブラリについて概要からPythonでの使い方まで見ていきたいと思います。LangChainを使うことで複雑な処理に対応したプログラムを簡潔に書くことができるのでLLMを組み込んだサービスを作るときなどに重宝します!

こんにちは!

データサイエンティストのウマたん(@statistics1012)です!

この記事ではChatGPTなどの大規模言語モデル(LLM)を扱う際に便利なLangChainというライブラリについて紹介していきたいと思います!

僕自身ChatGPTのAPIを利用してアプリを開発しているのですが、それだけだとかゆいところに手が届かないことも多かったんです。

しかし、今回紹介するLangChainというライブラリを導入することでかなり便利になりました!

ChatGPTをはじめとするGPTモデルについては以下の記事を参考にしてみてください!

GPT1,2,3,4
GPT-1→GPT-2→GPT-3→GPT-3.5→ChatGPT→GPT-4までの進化の軌跡と違いをまとめてみた当サイト【スタビジ】の本記事では、昨今のAIの進化のきっかけになっているGPTシリーズについてまとめていきたいと思います。GPT-1から始まりGPT-2、GPT-3、そしてChatGPTであるGPT-3.5、GPT-4と進化してきました。この進化の軌跡と違いについて解説していきます。...

ということでこの記事ではそんなLangChainについて解説していきたいと思います!

LangChainとは

それでは早速LangChainについて見ていきましょう!

LangChainの公式サイトやGithubのリポジトリは以下ですので適宜参考にしてみてください。

LangChainの特徴

LangChainの公式サイトには以下のように記述があります。

LangChain は、言語モデルを利用してアプリケーションを開発するためのフレームワークです。私たちは、最も強力で差別化されたアプリケーションは、API を介して言語モデルを呼び出すだけでなく、次のことも行うと信じています。

  1. データを意識する: 言語モデルを他のデータ ソースに接続する
  2. エージェント的である: 言語モデルがその環境と対話できるようにする

そのため、LangChain フレームワークは、そのようなタイプのアプリケーションを可能にするという目的を念頭に置いて設計されています。
(出典:LangChain公式サイト

そうなんです。LangChainは言語モデルを利用してアプリケーションを作る際に効果を発揮します。

その上で2つの特徴を取り上げている通り、他のデータソースに接続したり対話できるように過去のやり取りを参照したりなどできるようになります。

現状ChatGPTのAPIをそのまま利用すると、インターネット上のデータソースを参照して答えを返したり過去のやり取りを保持して参照しながら答えを返すみたいなことをするにはかなり手間がかかります。

そこら辺の処理をLangChainでは簡易的によしなにやってくれるので、アプリを構築する際に非常に便利なのです!

LangChainの対応範囲

現状LangChainでは、PythonとTypeScriptに対応しておりますが、Pythonの方が圧倒的にできることや呼び出せるAPIの範囲が広いのでPythonを利用することをオススメします。

LangChain対応表 LangChain対応表
ウマたん
ウマたん
やっぱり時代はPythonだなー!
Python独学勉強法
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

Pythonでどこまで出来てTypeScriptだと何が出来ないかは、以下の公式の表を確認すると分かります。

LangChainを使った実例

続いてLangChainを使った実例について見ていきましょう!

BabyAGI

LangChainを使うと自律駆動形のAIを構築することが可能であり、このBabyAGIは目標さえ与えてあげれば、それを元に逐次的にタスクをこなし次のタスクを立てて駆動していきます。

LangChainを使って作られており、公式Githubに処理の流れが記載されております。

BabyAGI処理

以下のような感じでBabyAGIに投げかけてあげると勝手にタスクをこなして次のタスクを自分で立ててどんどんタスクをこなしていきます。

目標:データサイエンティストになりたい

汎用的に使えて、曖昧なゴールに対しても筋道立ててタスクを分解してくれることから世界中で話題になっているAIです。

なんとこの自律駆動形AIは、あのMicosoftの伝説のエンジニア中嶋聡さんの息子さんが開発されたとのこと。

すごい・・・・

AutoGPT

そしてBabyAGIに負けず劣らず話題になっているのがこちらのAutoGPT。

こちらもBabyAGIと同じように自立駆動形AIです。

インターネット上の情報を検索することもできますし、それをもとにタスクを立てることもできます。

ChatGPT単体だと痒いところに手が届かないことをより自律的にやってくれるエージェントAIがAutoGPTです。

 

こんな感じでLangChainを使うとより自律型のAIを構築することができるのです!

LangChainをPythonで使ってみよう!

それでは、簡単にLangChainをPythonで実装していきましょう!

まずは、ライブラリ「langchain」をインストールしていきましょう!

pip install langchain

続いて必要なメソッドをインポートしていきます。

from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
import os

続いてOpenAIのAPIキーを取得して環境変数にセットしましょう!

os.environ["OPENAI_API_KEY"] = "<OpenAIのAPIキー>"

そしたら早速LangChainの出番です。

以下のように記載してあげてください。

llm = OpenAI(model_name="text-davinci-003")
conversation = ConversationChain(
    llm=llm,
    verbose=True,
    memory=ConversationBufferMemory()
)

conversation("データサイエンスを勉強するための方法を3つ教えて下さい。")

conversationの中身は何でも大丈夫ですので好きなプロンプトを入れてみてください。

以下のような回答が返ってくることが分かると思います。

LangChain※回答のパターンは必ずしも完全一致しません

これではシンプルな一問一答のやり取りですが、続いて以下のように問いかけてみましょう。

conversation("1つ目についてもっと詳しく")
LangChain2

こちらを見てみるとちゃんとHistoryという箇所に今までの過去のやり取りが格納されており、それをふまえてちゃんとAIが1つ目について詳しく教えてくれています。

この過去の情報を加味した返答は、実はChatGPTのAPI単体だと難しいのです!

OpenAIのAPIだけを使って同じように問いかけてみます。

import openai

openai.api_key = "<OpenAIのAPIキー>"

prompt = '''データサイエンスを勉強するための方法を3つ教えて下さい。'''

response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=prompt,
            max_tokens=1000,
            temperature=1
        )

print(response['choices'][0]['text'])


prompt = '''1つ目についてもっと詳しく'''

response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=prompt,
            max_tokens=1000,
            temperature=1
        )

print(response['choices'][0]['text'])

 

1つ目のレスポンス

ChatGPT1

2つ目のレスポンス

ChatGPT2

1つ目のレスポンスは正しく返してくれるのですが、2つ目のレスポンスは1つ目の内容を加味した上で返してくれず的外れな会話になってしまっています。。。

このように過去の会話を加味した状態でレスポンスを返してくれるようなプログラムを開発するのであれば、LangChainを使うのが最適なのです!

LangChainと似たことができる機能としてOpenAIが提供しているFunction callingというものがありますのでそちらもぜひ以下の記事で学んでおきましょう!

Function calling
ChatGPTのAPI新機能「Function calling」をPythonで実装!当サイト【スタビジ】の本記事では、ChatGPT(正確にはGPTモデル)のAPIに新しく追加されたFunction callingという機能について解説していきたいと思います。実際にPythonを使ってFunction callingでどんな処理が構築できるのか実装していきますよ!...

LangChain まとめ

ここまでで、OpenAIが開発するGPTモデルのAPIを利用する上で非常に便利なLangChainというライブラリについてまとめてきました!

ウマたん
ウマたん
頭の良い人たちが研究開発した知識をガンガン社会実装していこう!

各種大規模言語モデル(LLM)をPythonで利用する方法やプロンプトエンジニアリングについて知りたい方は当メディアが運営するスタアカの以下のコースを是非チェックしてみてください!

スタアカは業界最安級のAIデータサイエンススクールです。

スタアカトップ
【価格】ライトプラン:980円/月
プレミアムプラン:98,000円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組みあわせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

AIデータサイエンスを学んで市場価値の高い人材になりましょう!

データサイエンスやAIの勉強方法は以下の記事でまとめています。

【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...
AIのロードマップ
【これだけ!】AI(人工知能)の勉強ロードマップを徹底的に解説!当サイト【スタビジ】の本記事では、AIを勉強するロードマップについて徹底的に解説していきます。まずは、AIの概要について理解して統計学の基本知識・機械学習の基本知識・Pythonでの実装・インフラ周りの知識などを包括的に理解していきましょう!...

LangChainに関しては他にも色んな記事で解説されていますが、例えば以下の記事が分かりやすく参考になります。

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら