一
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):
n1: str
def node1(state: State) -> dict:
return {
"n1": "1111"
}
def node2(state: State) -> dict:
return {
"n2": "2222"
}
graph = (
StateGraph(State)
.add_node(node1)
.add_node(node2)
.add_edge(START, "node1")
.add_edge(START, "node2")
).compile()
display.display(graph)
rprint(graph)
二
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
import random
def node3(state: State) -> dict:
return {
"n2": "33"
}
def node4(state: State) -> dict:
return {
"n2": "444"
}
def node5(state: State) -> dict:
return {
"n2": "55"
}
def route(state: State) -> dict:
if random.random() >0.5:
return node1
else:
return node2
def route2(state: State) -> dict:
if random.random() >0.5:
return node4
else:
return node5
builder=StateGraph(State)
builder.add_node(node1)
builder.add_node(node2)
builder.add_node(node3)
builder.add_node(node4)
builder.add_node(node5)
builder.add_conditional_edges(
source=START,
path=route,
path_map={
"node1": "node1",
"node2": "node2"
}
)
builder.add_edge("node1","node3")
builder.add_edge("node2","node3")
builder.add_conditional_edges(
source="node3",
path=route2,
path_map={
"node4": "node4",
"node5": "node5"
}
)
builder.add_edge("node4",END)
builder.add_edge("node5",END)
graph=builder.compile()
display.display(graph)
三
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):
logs: Annotated[list[str],add_messages]
list: Annotated[list[AnyNode], operator.add]
cur_id: str
def node1(state: State) -> dict:
return {
"logs": ["node1 运行完毕"],
"list": ["11111"],
"cur_id": "9999-"
}
def node2(state: State) -> dict:
return {
"logs": ["node2 运行完毕"],
"list": ["22222"],
"cur_id": "7777-"
}
graph =(
StateGraph(State)
.add_node(node1)
.add_node(node2)
.add_edge(START, "node1")
.add_edge("node1", "node2")
.compile()
)
display.display(graph)
res=graph.invoke({"logs":"222"})
rprint(res)