あなた:
ChatGPT:
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import MemorySaver
from langgraph.graph import START, MessagesState, StateGraph
# モデルの準備
model = ChatOpenAI(model='gpt-4o')
def call_model(state: MessagesState):
response = model.invoke(state['messages'])
return {'messages': response}
# グラフの構築
builder = StateGraph(MessagesState)
builder.add_node('call_model', call_model)
builder.add_edge(START, 'call_model')
# Checkpointer(メモリ保存)
memory = MemorySaver()
graph = builder.compile(checkpointer=memory)
# スレッドIDを指定して実行
config = {'configurable': {'thread_id': '1'}}
graph.invoke({'messages': [{'role': 'user', 'content': '最も人口の多い国は?'}]}, config)
# チェックポイントを取得
checkpoint = memory.get(config)
print(checkpoint)
(2) Checkpointerのメリット
✅ 会話の途中でスナップショットを保存し、復元できる
✅ セッションが途切れても、前回の状態から続けられる
✅ 異なるパラメータで実験を繰り返すことが可能
3. Storeの使い方【長期記憶】
Storeは、複数のスレッドを横断してデータを保存・共有できる機能です。
長期記憶を実現し、アプリケーション全体でデータを一貫して管理できます。
(1) 基本的な実装方法
以下のコードで、Storeを設定し、異なるスレッド間でデータを共有します。
from langgraph.store.memory import InMemoryStore
# Storeの作成
in_memory_store = InMemoryStore()
# グラフの構築
graph = builder.compile(store=in_memory_store)
# ユーザーのデータを保存
user_id = "1234"
namespace = ("memories", user_id)
memory_id = "session1"
data = {"data": "ユーザーの好み"}
in_memory_store.put(namespace, memory_id, data)
# データの取得
stored_data = in_memory_store.get(namespace, memory_id)
print(stored_data)
5. まとめ|Checkpointer & Storeを活用しよう!
🔹 Checkpointerは短期記憶、Storeは長期記憶の役割
🔹 LLMアプリケーションの状態を管理し、ユーザー体験を向上
🔹 複雑なエージェントや実験的なLLM活用に最適
LLMを活用したアプリケーション開発では、「記憶」をどう管理するかが成功のカギになります。
LangGraphのCheckpointerとStoreを活用し、より賢いLLMアプリを構築しましょう!🚀