LangGraph 两种消息变更模式的差异

add_messages和operator.add 产生的数据格式完全不一样,这一点要注意

add_messages

python 复制代码
from typing import TypedDict, Annotated
from langgraph.graph.message import add_messages
from langgraph.graph import MessagesState, StateGraph,START,END
from prompt_toolkit.contrib.regular_languages.regex_parser import AnyNode
from rich import print as rprint
from IPython import display
import operator

class State(TypedDict):
  list: Annotated[list[str],add_messages]
  # list: Annotated[list[str],operator.add]

def node1(state: State) -> dict:
  return {
    "list": ["11111"],
  }
def node2(state: State) -> dict:
  return {
    "list": ["22222"],
  }
graph=(
  StateGraph(State)
  .add_node(node1)
  .add_node(node2)
  .add_edge(START, "node1")
  .add_edge("node1", "node2")
  .add_edge("node2", END)
  .compile()
)
display.display(graph)
res=graph.invoke({"list":["start"]})
rprint(res)
bash 复制代码
{
    'list': [
        HumanMessage(
            content='start',
            additional_kwargs={},
            response_metadata={},
            id='8631c142-2fbc-494b-ad06-f501263bea35'
        ),
        HumanMessage(
            content='11111',
            additional_kwargs={},
            response_metadata={},
            id='e54a1bf7-ae21-49bf-93d4-0bfdee0de247'
        ),
        HumanMessage(
            content='22222',
            additional_kwargs={},
            response_metadata={},
            id='df900c16-adfd-42f7-9c98-ad1384394d7f'
        )
    ]
}

二 operator.add

python 复制代码
from typing import TypedDict, Annotated
from langgraph.graph.message import add_messages
from langgraph.graph import MessagesState, StateGraph,START,END
from prompt_toolkit.contrib.regular_languages.regex_parser import AnyNode
from rich import print as rprint
from IPython import display
import operator

class State(TypedDict):
  # list: Annotated[list[str],add_messages]
  list: Annotated[list[str],operator.add]

def node1(state: State) -> dict:
  return {
    "list": ["11111"],
  }
def node2(state: State) -> dict:
  return {
    "list": ["22222"],
  }
graph=(
  StateGraph(State)
  .add_node(node1)
  .add_node(node2)
  .add_edge(START, "node1")
  .add_edge("node1", "node2")
  .add_edge("node2", END)
  .compile()
)
display.display(graph)
res=graph.invoke({"list":["start"]})
rprint(res)
arduino 复制代码
{'list': ['start', '11111', '22222']}
相关推荐
小王毕业啦1 小时前
2012-2024年 机构投资者实地调研数据 xlsx
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
Dxy12393102162 小时前
Python如何结合AI解决数据分析问题
人工智能·python·数据分析
锋行天下2 小时前
LangGraph简单图结构
人工智能
制造业的搬运工2 小时前
智能家居工控PCB可靠性检测规范与制程管控实践
大数据·网络·人工智能·制造·pcb工艺
蓝羽飞鸟2 小时前
什么是自监督学习
人工智能·深度学习
wing982 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
AI产品测评官2 小时前
从L3寻源智能体到全链路闭环ATS:拆解世纪云猎新一代AI招聘系统架构
人工智能·系统架构
Java成神之路-2 小时前
RAG 工程最优解:意图路由分流架构
人工智能·ai应用开发·springaialibaba
余槐i2 小时前
Firecrawl 实战:将网站转换为大模型可用数据
人工智能·python·工具·firecrawl