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
1.1k
LangChain & LangServeでAPIを爆速作成
2024年10月9日に開催された「LangChain Meetup Tokyo #3」で登壇した際に使用したスライドです。
KijitoraButi
October 11, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
13
3.7k
NPOでのDevinの活用
codeforeveryone
0
830
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
12
4.4k
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.3k
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
440
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
140
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
130
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
170
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
1
10k
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
100
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
72
4.9k
KATA
mclloyd
30
14k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Automating Front-end Workflow
addyosmani
1370
200k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Producing Creativity
orderedlist
PRO
346
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Practical Orchestrator
shlominoach
189
11k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
300
Large-scale JavaScript Application Architecture
addyosmani
512
110k
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