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
160
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
46
AIエージェントの開発に特化した統合開発環境 LangGraph Studio
knishioka
0
83
LangGraphを用いたAIアプリケーションにおけるメモリ永続化の実践
knishioka
0
200
Text-to-SQLをLangSmithで評価
knishioka
0
150
効果的なLLM評価法 LangSmithの技術と実践
knishioka
1
310
LangGraphのノード・エッジ・ルーティングを深堀り
knishioka
0
400
LangGraphでマルチエージェントワークフローを構築
knishioka
0
340
LLMアプリケーションで使用するVector Databaseの比較
knishioka
0
1.9k
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にするLangSmith
knishioka
0
280
Featured
See All Featured
Fireside Chat
paigeccino
32
3k
Designing for Performance
lara
604
68k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Done Done
chrislema
181
16k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Documentation Writing (for coders)
carmenintech
65
4.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Making the Leap to Tech Lead
cromwellryan
132
8.9k
What's new in Ruby 2.0
geeforr
342
31k
Testing 201, or: Great Expectations
jmmastey
38
7k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
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