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
1.5k
2
Share
LangChain & LangServeでAPIを爆速作成
2024年10月9日に開催された「LangChain Meetup Tokyo #3」で登壇した際に使用したスライドです。
KijitoraButi
October 11, 2024
Other Decks in Programming
See All in Programming
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
9
2.6k
開発とはなにか、Essenceカーネルで見えるもの
ukin0k0
0
210
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
150
要はバランスからの卒業 #yumemi_grow
kajitack
0
200
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
150
AI時代になぜ書くのか
mutsumix
0
460
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.1k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
7
2.6k
自動レビューエンジンの実装と運用 ~レビューのない世界へ~
kurukuru1999
2
270
色即是空、空即是色、データサイエンス
kamoneggi
1
200
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
3
1.1k
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Amusing Abliteration
ianozsvald
1
180
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
140
Optimizing for Happiness
mojombo
378
71k
Designing Experiences People Love
moore
143
24k
Designing for humans not robots
tammielis
254
26k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Believing is Seeing
oripsolob
1
130
Paper Plane
katiecoart
PRO
1
50k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
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