LangGraphとは
LangGraphは、大規模言語モデル(LLM)を使用して、状態管理が可能なマルチエージェントアプリケーションを構築するためのライブラリです。このライブラリは、LangChain社によって開発されました。
LangGraphの特徴は、以下の3つのキーワードで表現できます:
- サイクル(循環)
- 制御性
- 永続性
これらの特徴により、LangGraphは他のLLMフレームワークと一線を画しています。
💡 初心者向け解説
LangGraphを簡単に例えると、レゴブロックのようなものです。様々な機能(ブロック)を組み合わせて、自分だけの特別なAIアプリケーション(レゴの作品)を作ることができるツールです。普通のAIアプリとの違いは、一度作ったアプリの中身を後から簡単に変更したり、途中で人間が介入したりできる点です。
LangGraphの主要機能
LangGraphには、以下のような主要機能があります:
-
サイクルと分岐: アプリケーション内でループや条件分岐を実装できます。
💡 解説: これは、AIに「もし〜なら、こうする。そうでなければ、別のことをする」といった指示を出せるということです。
-
永続性: グラフの実行中、各ステップの後に自動的に状態を保存します。
💡 解説: AIの思考過程を途中で保存できるので、途中で中断してもそこから再開できます。
-
人間介在ワークフロー: グラフの実行を中断し、AIが計画した次のアクションを人間が承認または編集できます。
💡 解説: AIの動きを人間がチェックしたり、修正したりできるので、より安全で正確な結果が得られます。
-
ストリーミングサポート: 各ノードで生成される出力をリアルタイムでストリーミングできます。
💡 解説: AIの思考過程をリアルタイムで見ることができ、長い処理でも途中経過がわかります。
-
LangChainとの統合: LangChainやLangSmithとシームレスに統合できます(ただし、必須ではありません)。
💡 解説: 他の便利なAIツールと簡単に連携できるので、より高度なアプリケーションが作れます。
インストール方法
LangGraphをインストールするには、以下のコマンドをターミナルで実行します:
pip install -U langgraph
💡 初心者向け解説
このコマンドは、「パッケージマネージャー」というソフトウェアを使って、インターネットからLangGraphをダウンロードし、あなたのコンピュータにインストールするものです。
-U
オプションは、既にインストールされている場合に最新版にアップデートする指示です。
基本的な使い方
ステートの概念
LangGraphの中心的な概念の1つが「ステート(状態)」です。グラフの実行ごとに状態が作成され、この状態がグラフ内のノード間で受け渡されます。
💡 解説
「ステート」は、アプリケーションの現在の状況を表すものです。例えば、チャットボットの場合、これまでの会話履歴がステートに含まれます。ステートがあることで、AIは以前の会話を覚えていられるのです。
グラフの構築
LangGraphでは、アプリケーションの流れを「グラフ」として表現します。グラフは「ノード」と「エッジ」で構成されます。
💡 解説
グラフは、道路地図のようなものです。ノードは交差点、エッジは道路に相当します。AIはこの地図に従って動作します。
ノードの定義
ノードは、特定の処理を行う場所です。例えば、「AIモデルに質問する」「ウェブ検索を行う」といった処理をノードとして定義します。
エッジの設定
エッジは、ノード間の接続を表します。「通常のエッジ」と「条件付きエッジ」があります。
💡 解説
- 通常のエッジ:必ず次のノードに進みます。
- 条件付きエッジ:条件によって進む先が変わります。「もし〜なら、Aに行く。そうでなければBに行く」というような指示です。
実践的な例:天気情報検索エージェント
ここでは、LangGraphを使って簡単な天気情報検索エージェントを作成する例を見ていきましょう。
必要なライブラリのインストール
まず、必要なライブラリをインストールします:
pip install langchain_openai langchain_community
APIキーの設定
OpenAIとTavily SearchのAPIキーを環境変数として設定します:
export OPENAI_API_KEY=sk-...
export TAVILY_API_KEY=tvly-...
💡 注意
実際のAPIキーは公開しないように注意してください。これらは秘密の鍵のようなものです。
コードの解説
以下、コードの主要部分を解説していきます:
from typing import Annotated, Literal, TypedDict
from langchain_core.messages import HumanMessage
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI
from langgraph.checkpoint import MemorySaver
from langgraph.graph import END, StateGraph, MessagesState
from langgraph.prebuilt import ToolNode
# ツールの定義
tools = [TavilySearchResults(max_results=1)]
tool_node = ToolNode(tools)
model = ChatOpenAI(temperature=0).bind_tools(tools)
# 継続判断関数
def should_continue(state: MessagesState) -> Literal["tools", END]:
messages = state['messages']
last_message = messages[-1]
if last_message.tool_calls:
return "tools"
return END
# モデル呼び出し関数
def call_model(state: MessagesState):
messages = state['messages']
response = model.invoke(messages)
return {"messages": [response]}
# グラフの定義
workflow = StateGraph(MessagesState)
workflow.add_node("agent", call_model)
workflow.add_node("tools", tool_node)
workflow.set_entry_point("agent")
workflow.add_conditional_edges("agent", should_continue)
workflow.add_edge("tools", 'agent')
# メモリの初期化
checkpointer = MemorySaver()
# グラフのコンパイル
app = workflow.compile(checkpointer=checkpointer)
# グラフの実行
final_state = app.invoke(
{"messages": [HumanMessage(content="what is the weather in sf")]},
config={"configurable": {"thread_id": 42}}
)
print(final_state["messages"][-1].content)
このコードは以下のような流れで動作します:
- 必要なツールとモデルを初期化します。
- グラフの構造を定義します。
- 各ノードの動作を関数として定義します。
- グラフをコンパイルして実行可能な形にします。
- 実際に質問を投げかけて結果を得ます。
💡 初心者向け解説
このコードは、「天気を聞かれたら、AIが検索ツールを使って情報を探し、その結果を人間に伝える」という一連の流れを自動化しています。人間の質問→AI→検索ツール→AI→人間への回答、という順序で情報が流れていくイメージです。
LangGraphの活用シーン
LangGraphは以下のようなシーンで特に威力を発揮します:
- 複雑な対話システム: 多段階の会話や、状況に応じて異なる応答が必要な対話システムの構築。
- マルチエージェントシステム: 複数のAIエージェントが協力して問題を解決するシステムの開発。
- 人間とAIの協調作業: AIの判断を人間がチェックし、必要に応じて修正を加えるワークフローの実現。
- 長期的なタスク管理: 複数のセッションにまたがる長期的なタスクの管理と実行。
📒ノートブック
まとめ
LangGraphは、AIを使った複雑なアプリケーションを構築するための強力なツールです。その特徴である「サイクル」「制御性」「永続性」により、従来のAIフレームワークでは難しかった柔軟で高度なアプリケーションの開発が可能になります。
初心者の方にとっては、最初は少し難しく感じるかもしれません。しかし、基本的な概念を理解し、少しずつ実践していくことで、AIの可能性を大きく広げるツールとなるでしょう。
LangGraphを使いこなすことで、あなたのアイデアを現実のAIアプリケーションとして実現できるようになります。ぜひ、この記事を参考に、LangGraphの世界を探索してみてください。
🌟 次のステップ
- LangGraphの公式ドキュメントを読む
- 簡単なプロジェクトを作ってみる
- コミュニティに参加して、他の開発者と知識を共有する
AIの世界は日々進化しています。LangGraphを学ぶことで、あなたもその最前線に立つことができるでしょう。頑張ってください!
コメント