Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎
Search
西岡 賢一郎 (Kenichiro Nishioka)
August 26, 2023
0
170
LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎
機械学習の社会実装勉強会第26回 (
https://machine-learning-workshop.connpass.com/event/292961/
) の発表資料です。
西岡 賢一郎 (Kenichiro Nishioka)
August 26, 2023
Tweet
Share
More Decks by 西岡 賢一郎 (Kenichiro Nishioka)
See All by 西岡 賢一郎 (Kenichiro Nishioka)
LangGraph Templatesによる効率的なワークフロー構築
knishioka
0
91
AIエージェントの開発に特化した統合開発環境 LangGraph Studio
knishioka
0
130
LangGraphを用いたAIアプリケーションにおけるメモリ永続化の実践
knishioka
1
350
Text-to-SQLをLangSmithで評価
knishioka
0
190
効果的なLLM評価法 LangSmithの技術と実践
knishioka
1
350
LangGraphのノード・エッジ・ルーティングを深堀り
knishioka
1
520
LangGraphでマルチエージェントワークフローを構築
knishioka
0
380
LLMアプリケーションで使用するVector Databaseの比較
knishioka
0
2.4k
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にするLangSmith
knishioka
0
310
Featured
See All Featured
Building Adaptive Systems
keathley
38
2.3k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Unsuck your backbone
ammeep
669
57k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Bash Introduction
62gerente
608
210k
Documentation Writing (for coders)
carmenintech
66
4.5k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Pragmatic Product Professional
lauravandoore
32
6.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Typedesign – Prime Four
hannesfritz
40
2.4k
Transcript
LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎 LLMとのめんどくさいやり取りを担うライブラリ 2023/08/26 第26回勉強会
自己紹介 • 名前: 西岡 賢一郎 ◦ 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) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
本日のお話 • サマリ ◦ LLMでサービス開発するときに便利なLangChainについて基本機能を紹介 ◦ LangChainは内部でプロンプトをうまく作ることで、長い文章を取り扱ったり、外部ツール 連携したり、LLMのレスポンスを元に次のアクションを自動的に決めたりできる。 • 目次
◦ LLMを社会実装するときの課題 ◦ LangChainとは ◦ デモ
LLMを社会実装するときの課題
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から学習 学習済みモデルを利用
LLMを社会実装するときの課題 • Prompt Engineering: LLMが適切な答えを返してくれるPromptを考えるのが難しい。LLMのレス ポンスを利用してPromptを作る場合もある。 • 誤った情報の生成: LLMは確率的に言葉を生成しているため、文章の正確さを保証しているわけ ではない。これにより、検索用途としての使用が難しい。
• LLMの限界: 複雑な数式を解いたり、最新のデータを利用するなど、LLMが使用した学習 データに含まれない情報が必要な課題は、LLM単体では解決できない。 • Token数の制限: 長い文章を処理することができない。
LangChainとは
LangChainとは • 言語モデルを利用するアプリケーションのためのフレームワーク ◦ LangChainはLLMとチャットモデルをまとめて言語モデルとしている ◦ 今回は、LLMに関して紹介 • まず知っておきたいLangChain利点 ◦
テキストデータ以外の色々なデータソースを扱いやすくする ◦ LLMが苦手な作業を他のシステムと連携できるようにする ◦ 長文の取り扱いを可能にする • 他にもTemplate, Text Embedding, Cachingなど様々な便利機能を備える
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を紹介
Model I/O • 主な機能 ◦ Prompt: 言語モデルの入力のテンプレート化や管理をする ◦ 言語モデル: 「テキスト文字列を入力とし、テキスト文字列を返すLLM」と「チャットメッ
セージのリストを受け取りチャットメージを返すChatModel」の二種類 ◦ アウトプットパーサー: 言語モデルからの出力から情報を抽出 • 少量のコードの修正で言語モデルの切り替えをできる
Chain • LLMを使ったサービス開発では、LLMと単発で独立させて利用するだけでは、すぐ にできることの限界がくる。 • 「LLMを連結させる」ことや「LLMと外部システムを連携させる」ことで、LLM単 体だけではできなかった様々なことができるようになる。 • LLMからのレスポンスを次のLLMや外部システムのインプットに埋め込んでくれ る。
• Tokenの限界を越える長文を小さく分割、LLMで要約して、最後に分割したものを まとめたりできる。
Agent • LangChainの便利さを代表する機能の一つ • 次にどんなアクションを取るかをLLMに決め てもらい実行する • 実際にやっていること ◦ 「各ツールができること」と「質問」
をレスポンスのフォーマットを指定し てLLMに投げる。 ◦ 指定したフォーマットで帰ってきたレ スポンスをパースして、次のアクショ ンを決める。
LangChainのシステム間連携 • システム間でデータのやり取りをするためには、あらかじめデータ形式を合わせる必要がある • 従来のシステムであったAPI設計書などの代わりとして、LLMでは「出力フォーマットをPrompt内 で指定」して、LLMからのレスポンスから必要な情報を抽出していく (正規表現などで無理やり抽 出したりする)
デモ • LangChainの基本的な挙動 ◦ Model ◦ Chain ◦ Agent •
https://github.com/knishioka/machine-learning-workshop/tree/main/l angchain