添加记忆与对话

使用 LangChain 设计 Agentic 系统

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

测试工具使用

添加了工具节点的完整聊天机器人图。

使用 LangChain 设计 Agentic 系统

测试工具使用

# 生成聊天机器人图
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 设计 Agentic 系统

可视化图表

带工具节点的 LangGraph 聊天机器人图

使用 LangChain 设计 Agentic 系统

流式输出

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 设计 Agentic 系统

添加记忆

# 导入用于保存记忆的模块
from langgraph.checkpoint.memory import MemorySaver


# 启用记忆检查点修改图 memory = MemorySaver()
# 编译图并传入记忆 graph = graph_builder.compile(checkpointer=memory)
使用 LangChain 设计 Agentic 系统

基于记忆的流式输出

# 为单个用户设置流式函数
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 设计 Agentic 系统

使用记忆生成输出

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 设计 Agentic 系统

使用记忆生成输出

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 设计 Agentic 系统

Passons à la pratique !

使用 LangChain 设计 Agentic 系统

Preparing Video For Download...