开启左侧

LangGraph 父子图模式详解

[复制链接]
AI小编 发表于 昨天 23:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
LangGraph 父子图模式详解

概述

在LangGraph中,父子图模式是一种强大的架构模式,允许构建复杂的、模块化的图结构。当父图和子图具有不同的状态模式时,这种模式特别有用。
基本概念

父图与子图

    父图:包含子图的主要图结构子图:被父图调用的独立图结构状态模式:每个图定义自己的状态结构,可能与其他图不同
状态模式差异
  1. # 子图的状态模式 - 使用自定义的TypedDictclassSubgraphMessagesState(TypedDict):
  2.     subgraph_messages: Annotated[list[AnyMessage], add_messages]# 父图的状态模式 - 使用MessagesStateclassParentState(MessagesState):pass
复制代码
完整示例

1. 导入必要的模块
  1. from typing_extensions import TypedDict, Annotated
  2. from langchain_core.messages import AnyMessage
  3. from langgraph.graph import StateGraph, MessagesState, START
  4. from langgraph.graph.message import add_messages
  5. from langchain.chat_models import init_chat_model
  6. import os
  7. from dotenv import load_dotenv
  8. # 加载环境变量
  9. load_dotenv()
  10. model = init_chat_model("deepseek-chat",
  11.     api_key=os.environ.get("DEEPSEEK_API_KEY"))
复制代码
2. 定义子图
  1. # 子图的状态模式classSubgraphMessagesState(TypedDict):
  2.     subgraph_messages: Annotated[list[AnyMessage], add_messages]# 子图的处理函数defcall_model(state: SubgraphMessagesState):print("=== 子图被调用 ===")print(f"子图接收到的消息: {
  3.      
  4.      state['subgraph_messages']}")
  5.     response = model.invoke(state["subgraph_messages"])print(f"子图生成的响应: {
  6.      
  7.      response.content}")return{
  8.    
  9.    "subgraph_messages": response}# 创建子图
  10. subgraph_builder = StateGraph(SubgraphMessagesState)
  11. subgraph_builder.add_node("model_node", call_model)
  12. subgraph_builder.add_edge(START,"model_node")
  13. subgraph = subgraph_builder.compile()
复制代码
3. 定义父图
  1. # 父图的状态模式c
复制代码
原文地址:https://blog.csdn.net/Cheer_RIO/article/details/151192412
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )