Slide 1

Slide 1 text

LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎 LLMとのめんどくさいやり取りを担うライブラリ 2023/08/26 第26回勉強会

Slide 2

Slide 2 text

自己紹介 ● 名前: 西岡 賢一郎 ○ Twitter: @ken_nishi ○ note: 西岡賢一郎@研究者から経営者へ (https://note.com/kenichiro) ○ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) ● 経歴 ○ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ○ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ○ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ○ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ○ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験

Slide 3

Slide 3 text

本日のお話 ● サマリ ○ LLMでサービス開発するときに便利なLangChainについて基本機能を紹介 ○ LangChainは内部でプロンプトをうまく作ることで、長い文章を取り扱ったり、外部ツール 連携したり、LLMのレスポンスを元に次のアクションを自動的に決めたりできる。 ● 目次 ○ LLMを社会実装するときの課題 ○ LangChainとは ○ デモ

Slide 4

Slide 4 text

LLMを社会実装するときの課題

Slide 5

Slide 5 text

LLMを取り巻く環境の変化 ● ChatGPTを始めとしてLLMが革新的イノベーションを起こし始めている ● Hugging Faceで利用可能な学習済みモデルが多数利用可能に ○ LINE 36億パラメータの日本語言語モデル https://huggingface.co/line-corporation/japanese-large-lm-3.6b ○ 松尾研 100億パラメータサイズ・日英2ヶ国語対応の大規模言語モデル“Weblab-10B” https://huggingface.co/matsuo-lab/weblab-10b ● LLMをサービスに組み込む事例も出てきている 1から学習 学習済みモデルを利用

Slide 6

Slide 6 text

LLMを社会実装するときの課題 ● Prompt Engineering: LLMが適切な答えを返してくれるPromptを考えるのが難しい。LLMのレス ポンスを利用してPromptを作る場合もある。 ● 誤った情報の生成: LLMは確率的に言葉を生成しているため、文章の正確さを保証しているわけ ではない。これにより、検索用途としての使用が難しい。 ● LLMの限界: 複雑な数式を解いたり、最新のデータを利用するなど、LLMが使用した学習 データに含まれない情報が必要な課題は、LLM単体では解決できない。 ● Token数の制限: 長い文章を処理することができない。

Slide 7

Slide 7 text

LangChainとは

Slide 8

Slide 8 text

LangChainとは ● 言語モデルを利用するアプリケーションのためのフレームワーク ○ LangChainはLLMとチャットモデルをまとめて言語モデルとしている ○ 今回は、LLMに関して紹介 ● まず知っておきたいLangChain利点 ○ テキストデータ以外の色々なデータソースを扱いやすくする ○ LLMが苦手な作業を他のシステムと連携できるようにする ○ 長文の取り扱いを可能にする ● 他にもTemplate, Text Embedding, Cachingなど様々な便利機能を備える

Slide 9

Slide 9 text

LangChainの6つのモジュール ● 大きく分けて6つのモジュールがある ○ Model I/O: 任意の言語モデル (ChatGPTなど) とインターフェースをとるための基本的な構 築ブロックを提供 ○ Retrieval (Data connection): LLMにユーザ独自のデータを使えるようにする ○ Chains: LLM同士または他のコンポーネントとLLMを連結するためのインターフェイス ○ Agents: ユーザの問い合わせを解くための手段とその順番を LLM を使って自動的に決定して くれるような機能 ○ Memory: 過去のやりとりに関する情報を保存する機能 ○ Callbacks: LLMアプリケーションのイベントをフックさせる機能 ● 6つの中でまずはLangChainを知る上で抑えておきたいModel I/OとChainと Agentを紹介

Slide 10

Slide 10 text

Model I/O ● 主な機能 ○ Prompt: 言語モデルの入力のテンプレート化や管理をする ○ 言語モデル: 「テキスト文字列を入力とし、テキスト文字列を返すLLM」と「チャットメッ セージのリストを受け取りチャットメージを返すChatModel」の二種類 ○ アウトプットパーサー: 言語モデルからの出力から情報を抽出 ● 少量のコードの修正で言語モデルの切り替えをできる

Slide 11

Slide 11 text

Chain ● LLMを使ったサービス開発では、LLMと単発で独立させて利用するだけでは、すぐ にできることの限界がくる。 ● 「LLMを連結させる」ことや「LLMと外部システムを連携させる」ことで、LLM単 体だけではできなかった様々なことができるようになる。 ● LLMからのレスポンスを次のLLMや外部システムのインプットに埋め込んでくれ る。 ● Tokenの限界を越える長文を小さく分割、LLMで要約して、最後に分割したものを まとめたりできる。

Slide 12

Slide 12 text

Agent ● LangChainの便利さを代表する機能の一つ ● 次にどんなアクションを取るかをLLMに決め てもらい実行する ● 実際にやっていること ○ 「各ツールができること」と「質問」 をレスポンスのフォーマットを指定し てLLMに投げる。 ○ 指定したフォーマットで帰ってきたレ スポンスをパースして、次のアクショ ンを決める。

Slide 13

Slide 13 text

LangChainのシステム間連携 ● システム間でデータのやり取りをするためには、あらかじめデータ形式を合わせる必要がある ● 従来のシステムであったAPI設計書などの代わりとして、LLMでは「出力フォーマットをPrompt内 で指定」して、LLMからのレスポンスから必要な情報を抽出していく (正規表現などで無理やり抽 出したりする)

Slide 14

Slide 14 text

デモ ● LangChainの基本的な挙動 ○ Model ○ Chain ○ Agent ● https://github.com/knishioka/machine-learning-workshop/tree/main/l angchain