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
Functional APIから再考するLangGraphを使う理由
Search
os1ma
March 13, 2025
Programming
1.1k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Functional APIから再考するLangGraphを使う理由
イベントページ:
https://studyco.connpass.com/event/346953/
os1ma
March 13, 2025
More Decks by os1ma
See All by os1ma
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
2.9k
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
10
7.2k
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
1k
AIエージェントのフレームワークを見るときの個人的注目ポイント
os1ma
1
940
Cursor AgentによるパーソナルAIアシスタント育成入門―業務のプロンプト化・MCPの活用
os1ma
16
10k
AIエージェントキャッチアップと論文リサーチ
os1ma
7
2k
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
1.2k
LangChain/LangGraphの進化からみるLLMによるAIエージェントの開発
os1ma
2
870
Difyのソースコードリーディングを続けて得た知見と感想
os1ma
4
950
Other Decks in Programming
See All in Programming
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2k
The NotImplementedError Problem in Ruby
koic
1
790
Creating Composable Callables in Contemporary C++
rollbear
0
130
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
540
ふつうのFeature Flag実践入門
irof
7
3.9k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
170
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
770
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
230
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Fireside Chat
paigeccino
42
3.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Believing is Seeing
oripsolob
1
140
How to Ace a Technical Interview
jacobian
281
24k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
2025/3/13 #StudyCo Functional APIから再考する LangGraphを使う理由
自己紹介 大嶋勇樹(おおしまゆうき) https://x.com/oshima_123 株式会社ジェネラティブエージェンツ取締役CTO/Co-founder 大規模言語モデルを組み込んだアプリケーションやAIエージェントの開発を実施 個人ではエンジニア向けの勉強会開催やUdemy講座の作成など 勉強会コミュニティStudyCo運営 「ChatGPT/LangChainによるチャットシステム構築[実践]入門」(共著) 「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」(共著)
会社名 株式会社ジェネラティブエージェンツ (英文:Generative Agents, Inc.) 所在地 東京都港区 ※ 全社員リモート勤務 役員構成
CEO 西見 公宏 COO 吉田 真吾 CTO 大嶋 勇樹 設立年月 2024年3月14日 事業内容 AIエージェント技術を軸とした生成 AIアプリケーション開発 支援、コンサルティング、教育・研修サービスの提供 生成AIアプリケーション開発支援 「LangChain」の公式エキスパートとして、生成AIを活用したソフトウェ ア開発を支援します。生成AIを活用した課題解決、新規事業に向けたコン サルティングサービス、チームの開発力を上げる教育・研修サービスを提 供します。 ノーコードツール「Dify」のプロサポート Difyとはチャットボット、文章要約やコンテンツ生成など、多彩なワーク フローを現場の社員自ら構築できるツールです。当社はDifyを提供する LangGenius社の公式パートナーとして、自社内のDifyインフラ構築、導入 支援・オンボーディング、活用定着支援、アプリ開発研修などニーズに応 じたプロフェッショナルサポートを提供します。 株式会社ジェネラティブエージェンツ - 会社概要 AIエージェントが「ハブ」となり 人間とAIエージェントの協働が 当たり前になる世界を実現する
代表取締役CEO / Founder 西見 公宏 Masahiro Nishimi 事業会社の顧問CTOとして活動するソフトウェア開発のスペシャリス ト。AIエージェントを経営に導入することにより、あらゆる業種業態の 生産性を高めるための活動に尽力している。
「その仕事、AIエージェントがやっておきました。――ChatGPTの次に 来る自律型AI革命」(技術評論社)単著、Software Design「実践LLMア プリケーション開発」(技術評論社)連載。 主な著書 『その仕事、AIエージェントがやっておきました』 取締役COO / Co-founder 吉田 真吾 Shingo Yoshida AWS Serverless Heroとして日本におけるサーバーレスの普及を促進。 「ChatGPT/LangChainによるチャットシステム構築[実践]入門」(技 術評論社)共著、「Azure OpenAI ServiceではじめるChatGPT/LLMシス テム構築入門」(技術評論社)共著、「AWSによるサーバーレスアーキ テクチャ」(翔泳社)監修、「サーバーレスシングルページアプリケー ション」(オライリー)監訳、「AWSエキスパート養成読本」(技術評 論社)共著。ChatGPT Community(JP)主催 主な著書 『ChatGPT/LangChainによるチャットシステム構築[実践]入門』 『Azure OpenAI ServiceではじめるChatGPT/LLMシステム構築入門 エンジニア選書』 取締役CTO / Co-founder 大嶋 勇樹 Yuki Oshima 大規模言語モデルを組み込んだアプリケーションやAIエージェントの開 発を実施。 個人ではエンジニア向けの勉強会開催や教材作成など。オンラインコー スUdemyではベストセラー講座多数。 「ChatGPT/LangChainによるチャットシステム構築[実践]入門」(技 術評論社)共著。勉強会コミュニティStudyCo運営。 主な著書 『ChatGPT/LangChainによるチャットシステム構築 [実践]入門』 運営メンバー
2025/3/13 #StudyCo Functional APIから再考する LangGraphを使う理由
LangGraphとは LangGraphは、LLMを組み込んだ複雑なワークフローを実装するためのフレームワークです LangGraphでは、ワークフローを「グラフ」として実装して実行します https://blog.langchain.dev/code-execution-with-langgraph/
LangGraphの従来の実装方法―Graph API LangGraphの従来の実装方法(Graph API)では、ワークフローを持ち回るStateを定義したうえで、 add_node・add_edgeといった関数でグラフ構造を実装します
LangGraphの新しい実装方法―Functional API LangGraphの新しい実装方法(Functional API)では、@task・@entrypointデコレーターを使い、 通常のPythonのプログラムに近いコードでワークフローを実装します ※Functional APIはアナウンス時はBeta機能でしたが、2月19日に公式ドキュメントから「Beta」の記載が削除されています
想定される疑問点 Functional APIでは通常のPythonのプログラムに近いコードでワークフローを実装できますが、 それでは通常のPythonのプログラムではなくLangGraphを使う理由はどこにあるのでしょうか? (これは実際にはGraph APIでも言える疑問点です) ノード(@task)という単位でプログラムを整理できる? →通常のプログラムでもできるので、フレームワークを使うほどの理由にはならないかもしれません LangSmithのトレースがノードごとにまとまって見やすくなる? →LangGraphを使わなくても、LangSmithのトレースは自由な単位でまとめられます(@traceable)
それではLangGraphを使う理由はどこにあるのでしょうか?
LangGraph Functional APIでの実装上の注意 LangGraph Functional APIで@taskをつけた関数は、Checkpointerの記録の単位として扱われます ここで注目すべき点として、LangGraph Functional APIでの実装上の注意があります ヒューマン・イン・ザ・ループのような機能を活用するには、あらゆるランダム性をタスク内にカ
プセル化する必要があります。これにより、実行が停止(例:ヒューマン・イン・ザ・ループのた め)され、その後再開された場合でも、タスクの結果が非決定的であっても、同じステップのシー ケンスに従うことが保証されます。 https://langchain-ai.github.io/langgraph/concepts/functional_api/#determinism の記述をClaude 3.7 Sonnetにより翻訳
LangGraphのCheckpointerとは LangGraphでは各ノード(@task)の実行結果をCheckpointerに記録します たとえばgenerate_draft_nodeの実行結果はCheckpointerに記録されるため、 次のhuman_feedback_nodeで人間の介入のために処理を中断したとしても、 人間の介入後にCheckpointerから値を取得して続きから処理を再開できます Checkpointerを活用することで、以下の処理を実現できます • Human-in-the-Loop ワークフローを中断し、人間の介入後に続きから処理を再開する •
Fault-tolerance ワークフローをエラーが発生したステップから再開する
Functional APIにおけるHuman-in-the-Loopの動作 LangGraphではCheckpointerによる処理の進行状況の記録によりHuman-in-the-Loop等を実装でき、 これはPythonで単純にワークフローを実装した場合と異なる点だと言えます 最初のworkflowの実行時 generate_draftを実行し、 結果をCheckpointerに保存 interrupt関数により 人間のフィードバックを待つ 人間のフィードバック後、
続きからのworkflowの実行時 実行済みのgenerate_draftの 結果はCheckpointerから取得 interruptの結果として 人間のフィードバックを得る brushupを実行
まとめ • LangGraphの大きな特徴として、Checkpointerによるワークフローの進行状況の記録と、 Checkpointerを応用したHuman-in-the-Loop等の実装が挙げられます • LLMエージェントのフレームワークでは、Human-in-the-Loopの実現方法は重要な論点であり、 処理の進行状況をどのように保存・復元するかは考えどころです (ちなみにHumanLayerというAPI・SDKは、LangGraphとは異なる方針でHuman-in-the-Loopを実現しています) 通常のPythonプログラムではなくなぜフレームワークを使うのか?を再考することは、 LLMエージェント実装時の論点の発見に繋がるかもしれません
ご清聴ありがとうございました