importos from dotenv import load_dotenv from langgraph.graphimport StateGraph, START, END, MessagesState from langchain_openai import ChatOpenAI from langchain_core.messagesimport SystemMessage, HumanMessage
for user_input in test_inputs: print(f"\n用户: {user_input}")
result = graph.invoke({"messages": [HumanMessage(content=user_input)]}) print(f"助手: {result['messages'][-1].content[:100]}...") print("-" * 50)
importos from dotenv import load_dotenv from langgraph.graphimport StateGraph, MessagesState, START, END from langchain_openai import ChatOpenAI from langchain_core.messagesimport SystemMessage, HumanMessage
importos from dotenv import load_dotenv from langgraph.graphimport StateGraph, MessagesState, START, END from langgraph.prebuiltimport ToolNode, tools_condition from langchain_openai import ChatOpenAI from langchain_core.toolsimport tool from langchain_core.messagesimport HumanMessage import ast importoperator
importos from dotenv import load_dotenv from langgraph.graphimport StateGraph, MessagesState, START, END from langgraph.typesimport Command, interrupt from langgraph.checkpoint.memoryimport MemorySaver from langchain_core.messagesimport HumanMessage
importos from dotenv import load_dotenv from langgraph.graphimport StateGraph, MessagesState, START, END from langchain_openai import ChatOpenAI from langchain_core.messagesimport SystemMessage, HumanMessage
# 错误:直接修改 state 对象def bad_node(state):
state["messages"].append(...)# 不要直接修改return state
# 正确:返回需要更新的字段def good_node(state):return{"messages":[new_message]}# 只返回变更字段
Q2:如何在节点之间传递临时数据?
将临时数据加入 State 定义,或使用下划线前缀约定为内部字段:
from typing importTypedDictclassPublicState(TypedDict):
messages: list # 对外暴露classPrivateState(TypedDict):
messages: list
_internal_cache: dict # 以下划线开头约定为内部使用