使用LangGraph构建智能体简单的思路

步骤一:将你的工作流程分解成一个个独立的步骤。

确定流程中的各个步骤。每个步骤都将成为一个节点(一个执行特定操作的函数)。然后,绘制这些步骤之间的连接图。

步骤二:明确每个步骤需要做什么

对于图中的每个节点,确定它代表什么类型的操作以及它需要什么上下文才能正常工作。

1、LLM处理:需要理解、分析、生成文本或做出推理决策

2、数据流向:需要从外部来源检索的信息

3、执行流程:需要执行外部的操作

4、人工干涉:需要人工干预的步骤

步骤三:设计状态

状态是智能体中所有节点均可访问的共享记忆

1、它是否需要在多个步骤之间持久存在?如果是,就放进状态字典中

2、它是否可以从其他数据推导出来?如果是,则在需要时计算它,而不是将其存储在 状态中

状态仅包含原始数据——不包含提示模板、格式化字符串或任何指令。分类输出直接来自 LLM,并以单个字典的形式存储。(根据实用主义来看,这个是全图共享但是使用还是相关节点或边)

步骤 4:构建节点
将每个步骤实现为一个函数。LangGraph 中的一个节点就是一个 Python 函数,它接收当前状态并返回更新后的状态。

误类型谁来修复策略适用场景
临时性错误(网络问题、速率限制)系统(自动)重试策略通常重试即可解决的临时故障
LLM 可恢复的错误(工具调用失败、解析问题)LLM将错误信息存入 State 并循环返回LLM 能够看到错误并调整自己的处理方式
用户可修复的错误(信息缺失、指令不清晰)人类使用 interrupt() 暂停执行需要用户提供额外信息才能继续
重试用尽后的可恢复失败开发者error_handler在重试全部失败后,执行补偿/恢复分支逻辑
意外错误开发者冒泡未知问题,需要调试介入

1、临时性错误:可通过添加重试策略,自动重试网络问题和速率限制问题。

2、LLM可恢复错误:将错误存储在状态中并循环返回,以便 LLM 可以查看哪里出了问题并重试

3、用户可介入错误:必要时暂停并从用户处收集信息

4、重试用尽错误:运行恢复功能,更新状态并路由到补偿分支

5、意外错误:冒泡调试

步骤五:将他们组合在一起

构建graph

需注意节点颗粒度权衡

1、考虑隔离外部服务

2、中间节点可见

3、不同的故障模型

4、可用性、测试性,要注意重用性

发表评论