Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.3k
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 Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
250
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
390
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
260
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
110
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
140
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
400
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.9k
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
150
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
200
Deno Tunnel を使ってみた話
kamekyame
0
220
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
140
Discover your Explorer Soul
emna__ayadi
2
1k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
35
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
22
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
31
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
First, design no harm
axbom
PRO
1
1.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
96
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