Files
langgraph-learning/chapter04/04_state_interrupt.ipynb
T

720 lines
78 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2026-08-11T13:36:35.691525Z",
"start_time": "2026-08-11T13:36:35.681924Z"
}
},
"source": [
"from typing import TypedDict\n",
"from rich import print as rp\n",
"\n",
"\n",
"class OverallState(TypedDict):\n",
" res: str\n",
"\n",
"\n",
"def node_a(state: OverallState):\n",
" print(\"node_a 开始\")\n",
" return {\n",
" \"res\": \"node a运行结束\"\n",
" }\n",
"\n",
"\n",
"def node_b(state: OverallState):\n",
" print(\"node_b 开始\")\n",
" return {\n",
" \"res\": \"node b运行结束\"\n",
" }\n",
"\n",
"\n",
"def node_c(state: OverallState):\n",
" print(\"node_c 开始\")\n",
" return {\n",
" \"res\": \"node c运行结束\"\n",
" }"
],
"outputs": [],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:36:36.049646Z",
"start_time": "2026-08-11T13:36:35.698774Z"
}
},
"cell_type": "code",
"source": [
"from langgraph.graph import StateGraph, START, END\n",
"\n",
"builder = StateGraph(state_schema=OverallState)\n",
"builder.add_node(\"node_a\", node_a)\n",
"builder.add_node(\"node_b\", node_b)\n",
"builder.add_node(\"node_c\", node_c)\n",
"builder.add_edge(START, \"node_a\")\n",
"builder.add_edge(\"node_a\", \"node_b\")\n",
"builder.add_edge(\"node_b\", \"node_c\")\n",
"builder.add_edge(\"node_c\", END)\n",
"\n",
"from langgraph.checkpoint.memory import InMemorySaver\n",
"\n",
"checkpointer = InMemorySaver()\n",
"\n",
"graph = builder.compile(\n",
" checkpointer=checkpointer,\n",
" interrupt_after=[\"node_a\", \"node_b\"],\n",
" interrupt_before=[\"node_a\", \"node_b\"]\n",
")"
],
"id": "80d40ccb3cab4a1a",
"outputs": [],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:36:36.904998Z",
"start_time": "2026-08-11T13:36:36.052231Z"
}
},
"cell_type": "code",
"source": [
"from IPython.display import display\n",
"display(graph)"
],
"id": "770b7adeb2e1709a",
"outputs": [
{
"data": {
"text/plain": [
"<langgraph.graph.state.CompiledStateGraph object at 0x10bc93380>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 3
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:37:53.782233Z",
"start_time": "2026-08-11T13:37:53.754893Z"
}
},
"cell_type": "code",
"source": [
"config={\n",
" \"configurable\":{\n",
" \"thread_id\":\"123456\"\n",
" }\n",
"}\n",
"\n",
"res1=graph.invoke({},config=config)\n",
"print(res1)"
],
"id": "1fce13f46b8328f",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None\n"
]
}
],
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:38:57.227794Z",
"start_time": "2026-08-11T13:38:57.155139Z"
}
},
"cell_type": "code",
"source": "rp(list(graph.get_state_history(config=config)))",
"id": "ca78a2f4c26a1975",
"outputs": [
{
"data": {
"text/plain": [
"\u001B[1m[\u001B[0m\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'node_a'\u001B[0m,\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab61-69f2-8000-67dbde7e71ee'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'loop'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m0\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:37:53.762143+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab5f-6616-bfff-a0da9c108bf9'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\n",
" \u001B[1;35mPregelTask\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mid\u001B[0m=\u001B[32m'05629eea-6f54-a3b6-8990-4a3c8dad1296'\u001B[0m,\n",
" \u001B[33mname\u001B[0m=\u001B[32m'node_a'\u001B[0m,\n",
" \u001B[33mpath\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__pregel_pull'\u001B[0m, \u001B[32m'node_a'\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33merror\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mstate\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mresult\u001B[0m=\u001B[3;35mNone\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__start__'\u001B[0m,\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab5f-6616-bfff-a0da9c108bf9'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'input'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m-1\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:37:53.761225+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\n",
" \u001B[1;35mPregelTask\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mid\u001B[0m=\u001B[32m'c3e85fa9-5a80-658e-8d10-b4a6dbabaffd'\u001B[0m,\n",
" \u001B[33mname\u001B[0m=\u001B[32m'__start__'\u001B[0m,\n",
" \u001B[33mpath\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__pregel_pull'\u001B[0m, \u001B[32m'__start__'\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33merror\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mstate\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mresult\u001B[0m=\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m\n",
"\u001B[1m]\u001B[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">[</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'node_a'</span>,<span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab61-69f2-8000-67dbde7e71ee'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'loop'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:37:53.762143+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab5f-6616-bfff-a0da9c108bf9'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">PregelTask</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">id</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'05629eea-6f54-a3b6-8990-4a3c8dad1296'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">name</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'node_a'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">path</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__pregel_pull'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'node_a'</span><span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">error</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">state</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">result</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__start__'</span>,<span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab5f-6616-bfff-a0da9c108bf9'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'input'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">-1</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:37:53.761225+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">PregelTask</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">id</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'c3e85fa9-5a80-658e-8d10-b4a6dbabaffd'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">name</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'__start__'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">path</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__pregel_pull'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'__start__'</span><span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">error</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">state</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">result</span>=<span style=\"font-weight: bold\">{}</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>\n",
"<span style=\"font-weight: bold\">]</span>\n",
"</pre>\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 6
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:39:50.473448Z",
"start_time": "2026-08-11T13:39:50.452125Z"
}
},
"cell_type": "code",
"source": [
"res2=graph.invoke(None,config=config)\n",
"print(res2)"
],
"id": "9c559c2304dd84c9",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"node_a 开始\n",
"{'res': 'node a运行结束'}\n"
]
}
],
"execution_count": 7
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:40:02.988125Z",
"start_time": "2026-08-11T13:40:02.964223Z"
}
},
"cell_type": "code",
"source": [
"res3=graph.invoke(None,config=config)\n",
"print(res3)"
],
"id": "f55ecf68ecf7cc5",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"node_b 开始\n",
"{'res': 'node b运行结束'}\n"
]
}
],
"execution_count": 8
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:40:11.848406Z",
"start_time": "2026-08-11T13:40:11.818220Z"
}
},
"cell_type": "code",
"source": [
"res3=graph.invoke(None,config=config)\n",
"print(res3)"
],
"id": "df6d5b70adf40632",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"node_c 开始\n",
"{'res': 'node c运行结束'}\n"
]
}
],
"execution_count": 9
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:40:25.449655Z",
"start_time": "2026-08-11T13:40:25.428945Z"
}
},
"cell_type": "code",
"source": [
"res4=graph.invoke(None,config=config)\n",
"print(res4)"
],
"id": "c00d45e5f62ccf45",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'res': 'node c运行结束'}\n"
]
}
],
"execution_count": 11
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-08-11T13:40:39.970941Z",
"start_time": "2026-08-11T13:40:39.941565Z"
}
},
"cell_type": "code",
"source": "rp(list(graph.get_state_history(config=config)))",
"id": "a43ecef7aabeb280",
"outputs": [
{
"data": {
"text/plain": [
"\u001B[1m[\u001B[0m\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'res'\u001B[0m: \u001B[32m'node c运行结束'\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f1958a2-d00a-6060-8003-2deaf576350d'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'loop'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m3\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:40:11.823714+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f1958a2-7b97-6d8e-8002-246a78f29696'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'res'\u001B[0m: \u001B[32m'node b运行结束'\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'node_c'\u001B[0m,\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f1958a2-7b97-6d8e-8002-246a78f29696'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'loop'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m2\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:40:02.968906+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f1958a2-0443-6724-8001-9e535ac3c137'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\n",
" \u001B[1;35mPregelTask\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mid\u001B[0m=\u001B[32m'223039b4-0f0a-8424-45bd-a122bd68d9f8'\u001B[0m,\n",
" \u001B[33mname\u001B[0m=\u001B[32m'node_c'\u001B[0m,\n",
" \u001B[33mpath\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__pregel_pull'\u001B[0m, \u001B[32m'node_c'\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33merror\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mstate\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mresult\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'res'\u001B[0m: \u001B[32m'node c运行结束'\u001B[0m\u001B[1m}\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'res'\u001B[0m: \u001B[32m'node a运行结束'\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'node_b'\u001B[0m,\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f1958a2-0443-6724-8001-9e535ac3c137'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'loop'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m1\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:39:50.456283+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab61-69f2-8000-67dbde7e71ee'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\n",
" \u001B[1;35mPregelTask\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mid\u001B[0m=\u001B[32m'a8933cc9-c374-1e96-6aee-ea35763af4c2'\u001B[0m,\n",
" \u001B[33mname\u001B[0m=\u001B[32m'node_b'\u001B[0m,\n",
" \u001B[33mpath\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__pregel_pull'\u001B[0m, \u001B[32m'node_b'\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33merror\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mstate\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mresult\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'res'\u001B[0m: \u001B[32m'node b运行结束'\u001B[0m\u001B[1m}\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'node_a'\u001B[0m,\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab61-69f2-8000-67dbde7e71ee'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'loop'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m0\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:37:53.762143+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab5f-6616-bfff-a0da9c108bf9'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\n",
" \u001B[1;35mPregelTask\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mid\u001B[0m=\u001B[32m'05629eea-6f54-a3b6-8990-4a3c8dad1296'\u001B[0m,\n",
" \u001B[33mname\u001B[0m=\u001B[32m'node_a'\u001B[0m,\n",
" \u001B[33mpath\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__pregel_pull'\u001B[0m, \u001B[32m'node_a'\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33merror\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mstate\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mresult\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'res'\u001B[0m: \u001B[32m'node a运行结束'\u001B[0m\u001B[1m}\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1;35mStateSnapshot\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mvalues\u001B[0m=\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mnext\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__start__'\u001B[0m,\u001B[1m)\u001B[0m,\n",
" \u001B[33mconfig\u001B[0m=\u001B[1m{\u001B[0m\n",
" \u001B[32m'configurable'\u001B[0m: \u001B[1m{\u001B[0m\n",
" \u001B[32m'thread_id'\u001B[0m: \u001B[32m'123456'\u001B[0m,\n",
" \u001B[32m'checkpoint_ns'\u001B[0m: \u001B[32m''\u001B[0m,\n",
" \u001B[32m'checkpoint_id'\u001B[0m: \u001B[32m'1f19589d-ab5f-6616-bfff-a0da9c108bf9'\u001B[0m\n",
" \u001B[1m}\u001B[0m\n",
" \u001B[1m}\u001B[0m,\n",
" \u001B[33mmetadata\u001B[0m=\u001B[1m{\u001B[0m\u001B[32m'source'\u001B[0m: \u001B[32m'input'\u001B[0m, \u001B[32m'step'\u001B[0m: \u001B[1;36m-1\u001B[0m, \u001B[32m'parents'\u001B[0m: \u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m}\u001B[0m,\n",
" \u001B[33mcreated_at\u001B[0m=\u001B[32m'2026-08-11T13:37:53.761225+00:00'\u001B[0m,\n",
" \u001B[33mparent_config\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mtasks\u001B[0m=\u001B[1m(\u001B[0m\n",
" \u001B[1;35mPregelTask\u001B[0m\u001B[1m(\u001B[0m\n",
" \u001B[33mid\u001B[0m=\u001B[32m'c3e85fa9-5a80-658e-8d10-b4a6dbabaffd'\u001B[0m,\n",
" \u001B[33mname\u001B[0m=\u001B[32m'__start__'\u001B[0m,\n",
" \u001B[33mpath\u001B[0m=\u001B[1m(\u001B[0m\u001B[32m'__pregel_pull'\u001B[0m, \u001B[32m'__start__'\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33merror\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m,\n",
" \u001B[33mstate\u001B[0m=\u001B[3;35mNone\u001B[0m,\n",
" \u001B[33mresult\u001B[0m=\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[1m)\u001B[0m,\n",
" \u001B[33minterrupts\u001B[0m=\u001B[1m(\u001B[0m\u001B[1m)\u001B[0m\n",
" \u001B[1m)\u001B[0m\n",
"\u001B[1m]\u001B[0m\n"
],
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">[</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'res'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'node c运行结束'</span><span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f1958a2-d00a-6060-8003-2deaf576350d'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'loop'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:40:11.823714+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f1958a2-7b97-6d8e-8002-246a78f29696'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'res'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'node b运行结束'</span><span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'node_c'</span>,<span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f1958a2-7b97-6d8e-8002-246a78f29696'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'loop'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:40:02.968906+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f1958a2-0443-6724-8001-9e535ac3c137'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">PregelTask</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">id</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'223039b4-0f0a-8424-45bd-a122bd68d9f8'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">name</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'node_c'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">path</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__pregel_pull'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'node_c'</span><span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">error</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">state</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">result</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'res'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'node c运行结束'</span><span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'res'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'node a运行结束'</span><span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'node_b'</span>,<span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f1958a2-0443-6724-8001-9e535ac3c137'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'loop'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">1</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:39:50.456283+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab61-69f2-8000-67dbde7e71ee'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">PregelTask</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">id</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'a8933cc9-c374-1e96-6aee-ea35763af4c2'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">name</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'node_b'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">path</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__pregel_pull'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'node_b'</span><span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">error</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">state</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">result</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'res'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'node b运行结束'</span><span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'node_a'</span>,<span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab61-69f2-8000-67dbde7e71ee'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'loop'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:37:53.762143+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab5f-6616-bfff-a0da9c108bf9'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">PregelTask</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">id</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'05629eea-6f54-a3b6-8990-4a3c8dad1296'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">name</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'node_a'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">path</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__pregel_pull'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'node_a'</span><span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">error</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">state</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">result</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'res'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'node a运行结束'</span><span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">StateSnapshot</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">values</span>=<span style=\"font-weight: bold\">{}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">next</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__start__'</span>,<span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">config</span>=<span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'configurable'</span>: <span style=\"font-weight: bold\">{</span>\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'thread_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'123456'</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_ns'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">''</span>,\n",
" <span style=\"color: #008000; text-decoration-color: #008000\">'checkpoint_id'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'1f19589d-ab5f-6616-bfff-a0da9c108bf9'</span>\n",
" <span style=\"font-weight: bold\">}</span>\n",
" <span style=\"font-weight: bold\">}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">metadata</span>=<span style=\"font-weight: bold\">{</span><span style=\"color: #008000; text-decoration-color: #008000\">'source'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'input'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'step'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">-1</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'parents'</span>: <span style=\"font-weight: bold\">{}}</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">created_at</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'2026-08-11T13:37:53.761225+00:00'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">parent_config</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">tasks</span>=<span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">PregelTask</span><span style=\"font-weight: bold\">(</span>\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">id</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'c3e85fa9-5a80-658e-8d10-b4a6dbabaffd'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">name</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'__start__'</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">path</span>=<span style=\"font-weight: bold\">(</span><span style=\"color: #008000; text-decoration-color: #008000\">'__pregel_pull'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'__start__'</span><span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">error</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">state</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">result</span>=<span style=\"font-weight: bold\">{}</span>\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"font-weight: bold\">)</span>,\n",
" <span style=\"color: #808000; text-decoration-color: #808000\">interrupts</span>=<span style=\"font-weight: bold\">()</span>\n",
" <span style=\"font-weight: bold\">)</span>\n",
"<span style=\"font-weight: bold\">]</span>\n",
"</pre>\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 12
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}