当前位置: 首页 > news >正文

langgraph学习笔记

langgraph 三个元素:状态、节点、边

  • 状态:对话历史记录、上下文数据、内部变量
  • 节点:输入一个状态,输出另一个状态
  • 边:基于当前状态,决定下一步

状态

fromtyping_extensionsimportTypedDictfromtypingimportAnnotatedfromlanggraph.graphimportadd_messagesclassMyState(TypedDict):messages:Annotated[list,add_messages]

定义一个键值对,类型为列表,作用是add_messages(保存历史记录)

流程图

fromlanggraph.graphimportStateGraph graph=StateGraph(MyState)

节点

fromlangchain_openaiimportChatOpenAI llm=ChatOpenAI(model='gpt-4o',api_key="sk",base_url="https://xiaoai.plus/v1")defchatbot(state:MyState):return{'messages':[llm.invoke(state['messages'])]}
graph.add_node('chatbot',chatbot)

add_node添加节点,(名称,函数)

fromlanggraph.constantsimportSTART,END# 表示: 流程从start----> chatbotgraph.add_edge(START,'chatbot')# 表示: 流程从chatbot----> ENDgraph.add_edge('chatbot',END)

构建图

graph=graph.compile()

执行

defloop_graph_invoke(user_input:str):"""循环调用这个流程图,让AI可以一直和用户对话"""result=graph.invoke({'messages':[('user',user_input)]})print('AI机器人: ',result['messages'][-1].content)whileTrue:try:user_input=input('用户: ')ifuser_input.lower()in['q','exit','quit']:print('对话结束,拜拜!')breakelse:loop_graph_invoke(user_input)exceptExceptionase:print(e)

工具节点

fromlanggraph.prebuiltimportToolNode tool_node=ToolNode(tools=tools)graph.add_node('tools',tool_node)

条件边

fromlanggraph.prebuiltimporttools_condition# 根据智能体自动决策是否需要调用工具,graph.add_conditional_edges('agent',tools_condition)

入口节点

# 设置入口节点graph.set_entry_point('agent')

langgraph 记忆能力

持久性检查点,checkpointer、thread_id

fromlanggraph.checkpoint.memoryimportMemorySaver memory_checkpointer=MemorySaver()graph=graph.compile(checkpointer=memory_checkpointer)
thread_id=input('请输入一个sessionId:')config={"configurable":{"thread_id":thread_id}}# 执行这个工作流whileTrue:try:user_input=input('用户: ')ifuser_input.lower()in['q','exit','quit']:print('对话结束,拜拜!')breakelse:loop_graph_invoke(graph,user_input,config)exceptExceptionase:print(e)

调用工具前中断

graph=graph.compile(checkpointer=memory_checkpointer,interrupt_before=['tools'])
interrupt_after=["tools"]

查看状态

now_state=graph.get_state(config)print(now_state)

更新状态

graph.update_state(config=config,values={'messages':new_message})
http://www.jsqmd.com/news/733006/

相关文章:

  • 别再被HDF文件搞懵了!手把手教你用MRT批量处理MODIS NDVI数据(附避坑指南)
  • Python量化交易数据获取终极指南:efinance深度解析与实践
  • 保姆级教程:用Python修复GitHub上的NIQE代码,批量计算图片质量指标
  • 2026年5月六西格玛黑带报考条件及高效备考指南推荐 - 众智商学院课程中心
  • 别再死记公式了!用PyTorch手写SENet和CBAM,5分钟搞懂通道与空间注意力
  • 从‘乒乓球染色’到流量分配:一个比喻带你彻底搞懂AB测试中的‘正交’与‘互斥’
  • 统一认证中心CAS登录流程深度解析
  • 从CTF靶场到真实IoT:用Pikachu和CGfsb案例,手把手理解格式化字符串漏洞的实战利用
  • 使用 Taotoken 后 API 调用延迟与账单清晰度实际体验分享
  • 一文搞懂:Spring与Spring Boot的区别——为什么现在都用Spring Boot?
  • OPC到底该怎么启动?3种模式,看完你就懂了
  • Unity游戏上架Google Play必看:AAB+PAD资源加载性能实测与内存优化方案
  • 2026年艺术漆公司实力排行,艺术漆代理/艺术漆加盟/艺术漆代理加盟艺术涂料/艺术漆招商 - 品牌策略师
  • Node.js fs模块实战:从回调地狱到Promise/Stream,手把手教你处理大文件读写
  • 2026年5月阿里云Hermes Agent/OpenClaw搭建解析+百炼token Plan全流程攻略
  • Moonlight-PC深度解析:跨平台游戏串流技术的Java实现方案
  • ATC美国技术陶瓷原厂厂装一级代理分销经销
  • 在 Claude Code 中无缝接入 Taotoken 提供的模型服务
  • 5分钟搞定微信聊天记录解密:WechatDecrypt终极指南
  • Onekey终极教程:3分钟学会免费获取Steam游戏清单的完整方案
  • 《数字内容资产成熟度认证白皮书》深度解读(二):三维模型如何“打分”?——12项指标重塑内容价值评价标尺
  • 如何快速上手PvZ Toolkit:植物大战僵尸终极开源修改器完整指南
  • MiMo V2.5 邀请码 V4B9NJ
  • 手把手教你用Python+OpenCV模拟‘找色’自瞄原理(仅供学习反作弊)
  • 对比直接使用官方 API 通过 Taotoken 聚合接入的成本与便利性
  • 全球即时通讯工具
  • 当家方知柴米贵:资源感知优化如何让 AI 智能体告别“算力浪费”?
  • 从‘龙龙送外卖’到‘最小连通子图’:PTA L2-043题解与一种通用贪心思路
  • 别再让YOLOv7在人群里‘抓瞎’:用CrowdHuman数据集搞定头部、全身、可见身体检测(附完整训练权重)
  • 避开预警坑!2024年计算机/AI领域这些SCI期刊还能投(含CCF推荐、ELSEVIER/WILEY出版社清单)