LangGraph高级技巧:图结构应用程序删除消息的使用技巧
一、消息删除的重要性
在图结构应用中,消息的累积可能会导致性能问题和不必要的复杂性。因此,适时删除不再需要的消息是很有必要的。LangGraph提供了几种方法来实现这一目标。
二、使用delete_messages函数
LangGraph提供了delete_messages
函数,它可以根据指定的条件删除消息。这个函数可以在图的节点中使用,特别是在处理完某些消息后。
from langgraph.prebuilt import ToolMessage def process_and_delete(state): # 处理消息的逻辑 # ... # 删除已处理的消息 state = delete_messages(state, lambda x: isinstance(x, ToolMessage)) return state # 在图结构中使用 graph = Graph() graph.add_node("process_and_delete", process_and_delete) # ...
三、消息过滤技巧
除了直接删除消息,我们还可以使用过滤技巧来控制消息的流动:
3.1 使用条件边
graph.add_conditional_edge( "node_a", "node_b", condition=lambda x: not isinstance(x, ToolMessage) )
3.2 在节点函数中进行过滤
def filter_messages(state): filtered_messages = [msg for msg in state['messages'] if not isinstance(msg, ToolMessage)] return {"messages": filtered_messages} graph.add_node("filter", filter_messages)
四、消息修剪策略
在长时间运行的应用中,可能需要定期修剪消息以保持性能:
4.1 基于时间的修剪
from datetime import datetime, timedelta def prune_old_messages(state): current_time = datetime.now() recent_messages = [ msg for msg in state['messages'] if current_time - msg.timestamp < timedelta(hours=1) ] return {"messages": recent_messages} graph.add_node("prune", prune_old_messages)
4.2 基于数量的修剪
def keep_latest_messages(state, max_messages=50): return {"messages": state['messages'][-max_messages:]} graph.add_node("prune", lambda s: keep_latest_messages(s, max_messages=100))
五、实际应用案例:智能客服系统
考虑一个智能客服系统,它需要处理用户查询,但同时要保持对话的简洁性:
from langgraph.prebuilt import ToolMessage, HumanMessage def process_query(state): # 处理用户查询 # ... return state def summarize_and_prune(state): # 总结对话 summary = summarize_conversation(state['messages']) # 保留最新的人类消息和总结 new_messages = [msg for msg in state['messages'] if isinstance(msg, HumanMessage)][-3:] new_messages.append(ToolMessage(content=summary)) return {"messages": new_messages} graph = Graph() graph.add_node("process_query", process_query) graph.add_node("summarize_and_prune", summarize_and_prune) graph.add_edge("process_query", "summarize_and_prune") graph.add_edge("summarize_and_prune", "process_query")
总结
通过合理使用LangGraph提供的消息删除和过滤功能,我们可以有效地管理图结构应用中的消息流。这不仅可以提高应用的性能,还能使对话更加清晰和有针对性。在实际应用中,根据具体需求选择适当的消息管理策略至关重要。
分类:
LangGraph 开发教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)