Day 2: 从LangChain到LangGraph - 图形编程大师之路
1. 从LangChain到LangGraph
1.1 LangChain简介
LangChain是一个强大的框架,用于构建基于LLM的应用程序。它提供了丰富的工具和抽象,使得开发者可以更容易地构建复杂的AI应用。
1.2 为什么需要LangGraph?
- 更灵活的控制流
- 更好的状态管理
- 更清晰的执行路径
- 更容易实现复杂的对话逻辑
1.3 LangChain与LangGraph的关系
LangGraph是LangChain的扩展,它提供了基于图的工作流管理能力,使得我们可以:
- 定义清晰的执行路径
- 管理状态转换
- 实现条件分支
- 处理循环逻辑
2. LangGraph核心概念
2.1 图形编程基础
- 节点(Node):执行特定任务的单元
- 边(Edge):定义节点之间的连接关系
- 状态(State):在节点之间传递的数据
2.2 状态管理
# 定义状态类型
class GraphState(TypedDict):
messages: List[Dict]
current_stage: str
2.3 节点函数
# 定义节点函数
def process_input(state: GraphState, config: RunnableConfig) -> Command[Literal[GraphConfig.GENERATE_RESPONSE, END]]:
"""处理输入节点"""
messages = state.get("messages", [])
if not messages:
return Command(
update={
"current_stage": "error",
"messages": [AIMessage(content="❌ 错误:没有用户输入")]
},
goto=END
)
user_input = messages[-1].content if messages else ""
# 调用LLM处理输入
system_instructions = PROCESS_INPUT_PROMPT.format(user_input=user_input)
response = model.invoke([
SystemMessage(content=system_instructions),
HumanMessage(content="请处理这个输入")
])
return Command(
update={
"messages": messages + [AIMessage(content=response.content)],
"current_stage": "processing"
},
goto=GraphConfig.GENERATE_RESPONSE
)
2.4 边的连接
# 添加边
builder.add_edge(START, GraphConfig.PROCESS_INPUT)
builder.add_edge(GraphConfig.GENERATE_RESPONSE, END)
3. 环境搭建
3.1 安装必要的包
pip install langgraph langchain-openai python-dotenv
4. 条件路由与流程控制
4.1 条件路由示例
if should_continue:
return Command(
update={
"messages": state.get("messages", []) + [AIMessage(content="对话结束")],
"current_stage": "completed"
},
goto=END
)
else:
return Command(
update={
"messages": state.get("messages", []) + [AIMessage(content=response.content)],
"current_stage": "checking"
},
goto=GraphConfig.GENERATE_RESPONSE
)
6. 实践项目
6.1 基础图示例 (basic_graph.py)
基础图示例展示了 LangGraph 的最基本用法,包含以下核心功能:
- 创建简单的双节点图(输入处理和响应生成)
- 实现基本的消息处理流程
- 理解状态管理和节点间通信
- 使用 TypedDict 定义状态类型
- 实现基本的图构建和编译
6.2 条件路由示例 (conditional_graph.py)
条件路由示例展示了如何在 LangGraph 中实现条件分支:
- 实现基于条件的路由逻辑
- 处理不同的用户输入场景
- 管理复杂的状态转换
- 使用条件检查节点控制流程
- 实现多路径选择
6.3 并行处理示例 (parallel_graph.py)
并行处理示例展示了如何同时处理多个任务:
- 实现并行任务处理
- 提高处理效率
- 处理多个并发请求
- 合并并行任务结果
- 管理并行任务状态
6.4 循环处理示例 (loop_graph.py)
循环处理示例展示了如何实现迭代逻辑:
- 实现循环执行逻辑
- 控制迭代次数
- 管理循环状态
- 处理迭代过程中的状态转换
- 实现循环终止条件
6.5 人机交互示例 (human_interaction_graph.py)
人机交互示例展示了如何实现人机交互流程:
- 实现人机交互流程
- 处理用户输入请求
- 管理对话状态
- 使用中断机制等待用户输入
- 处理交互过程中的状态转换
每个示例都展示了 LangGraph 的不同特性,从基础到进阶,帮助开发者逐步掌握 LangGraph 的核心概念和实际应用。这些示例共同构成了一个完整的学习路径,涵盖了从简单的图构建到复杂的业务逻辑实现。
7. 进阶主题
- 跟踪执行过程
- 调试问题
- 优化性能
8. 总结
通过本课程,我们学习了:
- LangGraph的基本概念和使用方法
- 如何构建和管理图工作流
- 实现条件路由和工具集成
- 处理复杂的状态管理
- 构建实用的AI应用
9. 下一步
- 尝试构建更复杂的图工作流
- 集成更多外部工具
- 优化性能和可靠性
- 探索更多高级特性
...