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
LangChain & LangServeでAPIを爆速作成
Search
KijitoraButi
October 11, 2024
Programming
2
600
LangChain & LangServeでAPIを爆速作成
2024年10月9日に開催された「LangChain Meetup Tokyo #3」で登壇した際に使用したスライドです。
KijitoraButi
October 11, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1.1k
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
130
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
290
Click-free releases & the making of a CLI app
oheyadam
2
120
Jakarta EE meets AI
ivargrimstad
0
560
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
110
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
250
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
230
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
600
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
Featured
See All Featured
The Cult of Friendly URLs
andyhume
78
6k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Embracing the Ebb and Flow
colly
84
4.5k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
A better future with KSS
kneath
238
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Designing the Hi-DPI Web
ddemaree
280
34k
Designing for humans not robots
tammielis
250
25k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Happy Clients
brianwarren
98
6.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
890
Transcript
LangChain Meetup Tokyo #3 LangChain & LangServeで APIを爆速作成 2024.10.09 1
© 2024 Algomatic Inc. ⾃⼰紹介 2 データサイエンティストとして位置情 報分析に従事。その後、⽣成AIプロダ クト開発を担当。 AIを活⽤した業務変⾰⽀援の案件に参
画しています。 AI Transformation(AX) 伊藤 光祐/ Kosuke Ito
© 2024 Algomatic Inc. 3 今⽇の内容 LangChainでイケてる⾃動化フロー作ったはいいけど... • ちゃんとしたアプリにするのが⾯倒 •
短期間でAPIを納⼊する必要がある • APIの作り⽅よくわからん LangServeを使って爆速でAPIを作成しよう!!!
© 2024 Algomatic Inc. 4 アジェンダ 1. LangServeの基本 2. チャットボットAPIの作り⽅
3. 複雑なフローのAPI化 4. おまけ
© 2024 Algomatic Inc. 5 アジェンダ 1. LangServeの基本 2. チャットボットAPIの作り⽅
3. 複雑なフローのAPI化 4. おまけ
© 2024 Algomatic Inc. 6 まずはAPI化したいRunnableを作成 例として超シンプルなRunnableを作成。
© 2024 Algomatic Inc. 7 RunnableのAPI化 add_routesにFastAPIのインスタンスとRunnableを渡してパス(APIのURL)を指定するだけ!
© 2024 Algomatic Inc. 8 APIサーバーの起動 uvicorn.runの引数にFastAPIのインスタンスと各種設定を渡す。
© 2024 Algomatic Inc. 9 ⾃動ドキュメント化 サーバーのURL/docsを開くと勝⼿にドキュメント化されてます。
© 2024 Algomatic Inc. 10 簡易UI サーバーのURL/APIのパス/playgroundを開くと簡易アプリが使えます。
© 2024 Algomatic Inc. 11 アジェンダ 1. LangServeの基本 2. チャットボットAPIの作り⽅
3. 複雑なフローのAPI化 4. おまけ
© 2024 Algomatic Inc. 12 チャットボット⽤Runnable 対話履歴(BaseMessageのリスト)と最新メッセージを持つdictが引数になる。
© 2024 Algomatic Inc. 13 チャットボット⽤簡易UI add_routesの引数でplayground_type="chat"とすると有効になる。
© 2024 Algomatic Inc. 14 アジェンダ 1. LangServeの基本 2. チャットボットAPIの作り⽅
3. 複雑なフローのAPI化 4. おまけ
© 2024 Algomatic Inc. 15 今回API化する処理フロー より実践的な例として、構造的な⼊出⼒‧マルチモーダル‧分岐といった要素をもつ画像タ グ付け処理フローをAPI化する。 画像タグ付け処理フロー 画像⼊⼒
& ⾔語選択 プロンプト分岐 タグ付け タグ付け結果 英語 or ⽇本語 英語でタグづけして ね ⽇本語でタグ付けし てね or プロンプト タイトル 概要 タグ 絶望 この画像は納期に追 われて絶望している ITエンジニアを写し ています 絶望 納期 ITエンジニア バグ
© 2024 Algomatic Inc. 16 APIの⼊出⼒の定義 LangChainにデフォルトで実装されているRunnableは⼊出⼒が定義されているが、 RunnableLambdaなどを使う場合は⼊出⼒を定義しないとドキュメントに反映されない。
© 2024 Algomatic Inc. 17 マルチモーダルLLMの使い⽅ 画像のURL or Base64エンコード(詳細は割愛)を渡す必要がある。書き⽅は全て特定の構造の dictを渡す⽅法に統⼀されている。(でも正直覚えられない。)
© 2024 Algomatic Inc. 18 処理の分岐 if⽂で返すRunnable(この場合ChatPromptTemplate)が分岐する関数を定義する。
© 2024 Algomatic Inc. 19 LLMに構造的出⼒をさせる ChatModelのwith_structured_outputにPydanticのクラスを渡すとFunction CallingやJson Schemaによって構造的な出⼒をさせるようにできる。(+勝⼿に出⼒の型が定義される。)
© 2024 Algomatic Inc. 20 最終的なRunnable 分岐処理の関数はRunnableLambdaに渡し、⼊⼒の型定義はwith_typesに渡す。
© 2024 Algomatic Inc. 21 完成
© 2024 Algomatic Inc. 22 アジェンダ 1. LangServeの基本 2. チャットボットAPIの作り⽅
3. 複雑なフローのAPI化 4. おまけ
© 2024 Algomatic Inc. 23 Poetreyが便利 Poetryを使うと依存関係の管理‧wheelパッケージ化‧CLIコマンドの作成が楽 パッケージのバージョン情報などを管理できる 依存するライブラリなども管理できる pip
install後に使えるCLIコマンドを定義できる wheelファイルのビルドができる(=pip installで きるようになる)
© 2024 Algomatic Inc. 24 まとめ 公式のサンプルをコピペしてadd_routesに Runnableを突っ込もう もうちょっとちゃんとしたい⼈向け •
add_routesにRunnableを渡す以外はFast APIと同じ • LangServeは⾃動でドキュメントや簡易UIを作ってくれる ◦ チャットUIの簡易UIは対応しているRunnableが限られることに注意 • 基本的にRunnableの⼊出⼒がそのままAPIの⼊出⼒になる ◦ RunnableLambdaなどを使う場合は⼊出⼒の型がちゃんと定義されてい るか確認しよう(定義がないとドキュメントに反映されない)
© 2024 Algomatic Inc. 25 参考資料 今回作成したコードのリポジトリ https://github.com/algomatic-inc/langchain-meetup-tokyo-3