Slide 1

Slide 1 text

2025/3/13 #StudyCo Functional APIから再考する LangGraphを使う理由

Slide 2

Slide 2 text

自己紹介 大嶋勇樹(おおしまゆうき) https://x.com/oshima_123 株式会社ジェネラティブエージェンツ取締役CTO/Co-founder 大規模言語モデルを組み込んだアプリケーションやAIエージェントの開発を実施 個人ではエンジニア向けの勉強会開催やUdemy講座の作成など 勉強会コミュニティStudyCo運営 「ChatGPT/LangChainによるチャットシステム構築[実践]入門」(共著) 「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」(共著)

Slide 3

Slide 3 text

会社名 株式会社ジェネラティブエージェンツ (英文:Generative Agents, Inc.) 所在地 東京都港区 ※ 全社員リモート勤務 役員構成 CEO 西見 公宏 COO 吉田 真吾 CTO 大嶋 勇樹 設立年月 2024年3月14日 事業内容 AIエージェント技術を軸とした生成 AIアプリケーション開発 支援、コンサルティング、教育・研修サービスの提供 生成AIアプリケーション開発支援 「LangChain」の公式エキスパートとして、生成AIを活用したソフトウェ ア開発を支援します。生成AIを活用した課題解決、新規事業に向けたコン サルティングサービス、チームの開発力を上げる教育・研修サービスを提 供します。 ノーコードツール「Dify」のプロサポート Difyとはチャットボット、文章要約やコンテンツ生成など、多彩なワーク フローを現場の社員自ら構築できるツールです。当社はDifyを提供する LangGenius社の公式パートナーとして、自社内のDifyインフラ構築、導入 支援・オンボーディング、活用定着支援、アプリ開発研修などニーズに応 じたプロフェッショナルサポートを提供します。 株式会社ジェネラティブエージェンツ - 会社概要 AIエージェントが「ハブ」となり 人間とAIエージェントの協働が 当たり前になる世界を実現する

Slide 4

Slide 4 text

代表取締役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によるチャットシステム構築 [実践]入門』 運営メンバー

Slide 5

Slide 5 text

2025/3/13 #StudyCo Functional APIから再考する LangGraphを使う理由

Slide 6

Slide 6 text

LangGraphとは LangGraphは、LLMを組み込んだ複雑なワークフローを実装するためのフレームワークです LangGraphでは、ワークフローを「グラフ」として実装して実行します https://blog.langchain.dev/code-execution-with-langgraph/

Slide 7

Slide 7 text

LangGraphの従来の実装方法―Graph API LangGraphの従来の実装方法(Graph API)では、ワークフローを持ち回るStateを定義したうえで、 add_node・add_edgeといった関数でグラフ構造を実装します

Slide 8

Slide 8 text

LangGraphの新しい実装方法―Functional API LangGraphの新しい実装方法(Functional API)では、@task・@entrypointデコレーターを使い、 通常のPythonのプログラムに近いコードでワークフローを実装します ※Functional APIはアナウンス時はBeta機能でしたが、2月19日に公式ドキュメントから「Beta」の記載が削除されています

Slide 9

Slide 9 text

想定される疑問点 Functional APIでは通常のPythonのプログラムに近いコードでワークフローを実装できますが、 それでは通常のPythonのプログラムではなくLangGraphを使う理由はどこにあるのでしょうか? (これは実際にはGraph APIでも言える疑問点です) ノード(@task)という単位でプログラムを整理できる? →通常のプログラムでもできるので、フレームワークを使うほどの理由にはならないかもしれません LangSmithのトレースがノードごとにまとまって見やすくなる? →LangGraphを使わなくても、LangSmithのトレースは自由な単位でまとめられます(@traceable) それではLangGraphを使う理由はどこにあるのでしょうか?

Slide 10

Slide 10 text

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により翻訳

Slide 11

Slide 11 text

LangGraphのCheckpointerとは LangGraphでは各ノード(@task)の実行結果をCheckpointerに記録します たとえばgenerate_draft_nodeの実行結果はCheckpointerに記録されるため、 次のhuman_feedback_nodeで人間の介入のために処理を中断したとしても、 人間の介入後にCheckpointerから値を取得して続きから処理を再開できます Checkpointerを活用することで、以下の処理を実現できます ● Human-in-the-Loop ワークフローを中断し、人間の介入後に続きから処理を再開する ● Fault-tolerance ワークフローをエラーが発生したステップから再開する

Slide 12

Slide 12 text

Functional APIにおけるHuman-in-the-Loopの動作 LangGraphではCheckpointerによる処理の進行状況の記録によりHuman-in-the-Loop等を実装でき、 これはPythonで単純にワークフローを実装した場合と異なる点だと言えます 最初のworkflowの実行時 generate_draftを実行し、 結果をCheckpointerに保存 interrupt関数により 人間のフィードバックを待つ 人間のフィードバック後、 続きからのworkflowの実行時 実行済みのgenerate_draftの 結果はCheckpointerから取得 interruptの結果として 人間のフィードバックを得る brushupを実行

Slide 13

Slide 13 text

まとめ ● LangGraphの大きな特徴として、Checkpointerによるワークフローの進行状況の記録と、 Checkpointerを応用したHuman-in-the-Loop等の実装が挙げられます ● LLMエージェントのフレームワークでは、Human-in-the-Loopの実現方法は重要な論点であり、 処理の進行状況をどのように保存・復元するかは考えどころです (ちなみにHumanLayerというAPI・SDKは、LangGraphとは異なる方針でHuman-in-the-Loopを実現しています) 通常のPythonプログラムではなくなぜフレームワークを使うのか?を再考することは、 LLMエージェント実装時の論点の発見に繋がるかもしれません

Slide 14

Slide 14 text

ご清聴ありがとうございました