メモリと会話の追加

LangChainで設計するエージェント型システム

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

ツール使用のテスト

ツールノードを追加した完全なチャットボット図。

LangChainで設計するエージェント型システム

ツール使用のテスト

# チャットボットのグラフを生成
display(Image(app.get_graph().draw_mermaid_png()))


# 各メッセージをストリーミングして実行する関数を定義 def stream_tool_responses(user_input: str): for event in graph.stream({"messages": [("user", user_input)]}):
# エージェントの最新応答を返す for value in event.values(): print("Agent:", value["messages"])
# クエリを定義して実行 user_query = "House of Lords" stream_tool_responses(user_query)
LangChainで設計するエージェント型システム

ダイアグラムの可視化

ツールノード付きのLangGraphチャットボット図

LangChainで設計するエージェント型システム

出力のストリーミング

Agent: [AIMessage(content='', additional_kwargs={'tool_calls': [{'function': {'arguments': 
'{"query":"House of Lords"}', 'name': 'wikipedia'}, 'type': 'function'}]},
response_metadata={'...'}])]

Agent: [ToolMessage(content='Page: House of Lords\nSummary: The House of Lords is the upper house of the Parliament of the United Kingdom. Like the lower house...The House of Lords also has a Church of England role...', name='wikipedia', id='...',')]
Agent: [AIMessage(content='The House of Lords is the upper house of the Parliament of the United Kingdom, located in the Palace of Westminster in London. It is one of the oldest institutions in the world..., additional_kwargs={},
response_metadata= {'finish_reason': 'stop', 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_0ba0d124f1'}, id='run-ae3a0b4f-5b42-4f4e-9409-7c191af0b9c9-0')]
LangChainで設計するエージェント型システム

メモリの追加

# メモリ保存用のモジュールをインポート
from langgraph.checkpoint.memory import MemorySaver


# メモリのチェックポイントを使うようグラフを変更 memory = MemorySaver()
# メモリを渡してグラフをコンパイル graph = graph_builder.compile(checkpointer=memory)
LangChainで設計するエージェント型システム

メモリ付きの出力ストリーミング

# 単一ユーザー用のストリーミング関数を設定
def stream_memory_responses(user_input: str):

config = {"configurable": {"thread_id": "single_session_memory"}}
# グラフ内のイベントをストリーミング for event in graph.stream({"messages": [("user", user_input)]}, config):
# エージェントの最新応答を返す for value in event.values(): if "messages" in value and value["messages"]: print("Agent:", value["messages"])
stream_memory_responses("What is the Colosseum?") stream_memory_responses("Who built it?")
LangChainで設計するエージェント型システム

メモリで出力を生成

stream_memory_responses("What is the Colosseum?")
Agent: [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 
'id': '...', 'function': {'arguments': '
{"query":"Colosseum"}', 'name': 'wikipedia'}, ...])]

Agent: [ToolMessage(content='Page: Colosseum\nSummary: The Colosseum is an ancient amphitheatre in Rome, Italy. It is the largest standing amphitheatre in the world..)]
Agent: [AIMessage(content='The Colosseum, located in Rome, is the largest ancient amphitheatre still standing. Built under Emperor Vespasian and completed by his son Titus, it hosted gladiatorial games and public events. It is also known as the Flavian Amphitheatre due to its association with the Flavian dynasty.', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-mini-...', ...')]
LangChainで設計するエージェント型システム

メモリで出力を生成

stream_memory_responses("Who built it?")
Agent: [AIMessage(content='The Colosseum was built by Emperor Vespasian around 
72 AD and completed by his successor, Emperor Titus. Later modifications were 
made by Emperor Domitian...')]
LangChainで設計するエージェント型システム

Passons à la pratique !

LangChainで設計するエージェント型システム

Preparing Video For Download...