AI创想
标题:
LangGraph 父子图模式详解
[打印本页]
作者:
AI小编
时间:
昨天 23:35
标题:
LangGraph 父子图模式详解
作者:CSDN博客
LangGraph 父子图模式详解
概述
在LangGraph中,父子图模式是一种强大的架构模式,允许构建复杂的、模块化的图结构。当父图和子图具有不同的状态模式时,这种模式特别有用。
基本概念
父图与子图
父图
:包含子图的主要图结构
子图
:被父图调用的独立图结构
状态模式
:每个图定义自己的状态结构,可能与其他图不同
状态模式差异
# 子图的状态模式 - 使用自定义的TypedDictclassSubgraphMessagesState(TypedDict):
subgraph_messages: Annotated[list[AnyMessage], add_messages]# 父图的状态模式 - 使用MessagesStateclassParentState(MessagesState):pass
复制代码
完整示例
1. 导入必要的模块
from typing_extensions import TypedDict, Annotated
from langchain_core.messages import AnyMessage
from langgraph.graph import StateGraph, MessagesState, START
from langgraph.graph.message import add_messages
from langchain.chat_models import init_chat_model
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
model = init_chat_model("deepseek-chat",
api_key=os.environ.get("DEEPSEEK_API_KEY"))
复制代码
2. 定义子图
# 子图的状态模式classSubgraphMessagesState(TypedDict):
subgraph_messages: Annotated[list[AnyMessage], add_messages]# 子图的处理函数defcall_model(state: SubgraphMessagesState):print("=== 子图被调用 ===")print(f"子图接收到的消息: {
state['subgraph_messages']}")
response = model.invoke(state["subgraph_messages"])print(f"子图生成的响应: {
response.content}")return{
"subgraph_messages": response}# 创建子图
subgraph_builder = StateGraph(SubgraphMessagesState)
subgraph_builder.add_node("model_node", call_model)
subgraph_builder.add_edge(START,"model_node")
subgraph = subgraph_builder.compile()
复制代码
3. 定义父图
# 父图的状态模式c
复制代码
原文地址:https://blog.csdn.net/Cheer_RIO/article/details/151192412
欢迎光临 AI创想 (https://www.llms-ai.com/)
Powered by Discuz! X3.4