ある案件で LangGraph を使う可能性が出てきたため、「勉強しておいて」と指示を受けました。
せっかくなので、久しぶりにQiita記事としてまとめつつ、自分なりに整理して学んでいこうと思います。
1. LangGraphとは?
そもそもLangGraphとは何だろうか?
その単語すら分からないので、まずはChatGPTさんに聞いてみます。
LangGraph(ランググラフ)は、LangChainの拡張機能として開発された、マルチステップLLMアプリケーションを状態遷移グラフ(Stateful Graph)として構築するフレームワークです。LangChainを使ってLLMアプリケーションを構築している場合、LangGraphを導入することで、より複雑な対話の流れやループ処理、条件分岐、マルチエージェントの制御などを柔軟に管理できます。
なるほど。少し抽象的ですが、私なりにざっくりと理解すると、
「複数のエージェントが登場するLLMを使った処理を、if文やfor文のような制御構造を使って、柔軟に制御できるフレームワーク」
という感じでしょうか。
2. LangGraphの主要な用語
LangGraphでは、以下のような概念が使われます:
- ノード(node):各ノードは1つの処理単位(例:LLMへの問い合わせ、ユーザー入力の解析など)
- エッジ(edge):ノード間の遷移を表します。条件付きにすることも可能です
- ステート(state):グラフ上の現在の状態、ユーザー入力やLLMの出力などが含まれます
- グラフ(graph):全体の制御フロー。始点と終点を定義可能です
特に重要なのは ノード と エッジ です。ノードが「何をするか」、エッジが「どこに進むか」を決定します。
以下の図のように、ノードが複数の処理に分岐し、それぞれ順に実行されていきます。
3. LangGraphを使ってみる(次回)
実際にLangGraphを使ってコードを書いてみたいと思いますが、本記事ではまず概要まで。
次回は、以下のようなシステムを構築してみる予定です:
- ユーザーの入力を受け取り
- 回答に適したロールを選定
- 回答を作成
- 最後に回答の品質をチェックしつつ、問題があれば再度やり直す
このプロセスの概要を図にすると、以下のようになります。
次回は、この設計に沿って実際にLangGraphを使ったプロトタイプを実装していきます。