CSDN_Ander 2026-01-30 16:10 采纳率: 0%
浏览 2

关于#人工智能#的问题:langgraph出现了"后面节点才会往state里面添加的值,出现在前面节点的channel_values里面"的情况

langgraph出现了"后面节点才会往state里面添加的值,出现在前面节点的channel_values里面"的情况。
历史记录是使用checkpointer.list(config=config)拿到的
期望:

{'context': {'1': '10000', 'messages': [10000]}
{'context': {'1': '10000', 'znode1': 'znode1', 'messages': [10000]}
{'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2'}, 'messages': [10000]}
{'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3'}, 'messages': [10000]}
{'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1'}, 'messages': [10000]}
{'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2'}, 'messages': [10000]}

实际:

pending_writes [('00000000-0000-0000-0000-000000000000', '__resume__', {'context': {'1': '2'}})]
metadata {'step': 4, 'source': 'loop', 'parents': {}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7f1e-6965-8004-d5e4074f2535', 'ts': '2026-01-30T03:39:28.773770+00:00', 'versions_seen': {'node': {'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}, 'node1': {'branch:to:node1': '00000000000000000000000000000003.0.7730355082706724'}, 'node2': {'branch:to:node2': '00000000000000000000000000000004.0.8186357539909423'}, 'node3': {'branch:to:node3': '00000000000000000000000000000005.0.6384787495086819'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.17522916265836352'}, '__interrupt__': {'context': '00000000000000000000000000000002.0.8939590576409355', 'messages': '00000000000000000000000000000002.0.8939590576409355', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}}, 'channel_values': {'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000006.0.16843429954895184', 'messages': '00000000000000000000000000000006.0.16843429954895184', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000003.0.7730355082706724', 'branch:to:node1': '00000000000000000000000000000004.0.8186357539909423', 'branch:to:node2': '00000000000000000000000000000005.0.6384787495086819', 'branch:to:node3': '00000000000000000000000000000006.0.16843429954895184'}, 'updated_channels': ['context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1e-6965-8004-d5e4074f2535'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1e-6964-8003-ae2ce813a4a7'}}
channel_values {'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}

pending_writes [('bbbe71ae-fdb1-6d91-e5e1-c816188fe4e7', 'messages', [10000]), ('bbbe71ae-fdb1-6d91-e5e1-c816188fe4e7', 'context', {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'})]
metadata {'step': 3, 'source': 'loop', 'parents': {}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7f1e-6964-8003-ae2ce813a4a7', 'ts': '2026-01-30T03:39:28.772765+00:00', 'versions_seen': {'node': {'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}, 'node1': {'branch:to:node1': '00000000000000000000000000000003.0.7730355082706724'}, 'node2': {'branch:to:node2': '00000000000000000000000000000004.0.8186357539909423'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.17522916265836352'}, '__interrupt__': {'context': '00000000000000000000000000000002.0.8939590576409355', 'messages': '00000000000000000000000000000002.0.8939590576409355', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}}, 'channel_values': {'branch:to:node3': None, 'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000005.0.6384787495086819', 'messages': '00000000000000000000000000000005.0.6384787495086819', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000003.0.7730355082706724', 'branch:to:node1': '00000000000000000000000000000004.0.8186357539909423', 'branch:to:node2': '00000000000000000000000000000005.0.6384787495086819', 'branch:to:node3': '00000000000000000000000000000005.0.6384787495086819'}, 'updated_channels': ['branch:to:node3', 'context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1e-6964-8003-ae2ce813a4a7'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1c-6229-8002-a51d44453e49'}}
channel_values {'branch:to:node3': None, 'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}

pending_writes [('5dbc9a64-89ec-9afa-352f-46f7594572a3', 'messages', [10000]), ('5dbc9a64-89ec-9afa-352f-46f7594572a3', 'context', {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}), ('5dbc9a64-89ec-9afa-352f-46f7594572a3', 'branch:to:node3', None)]
metadata {'step': 2, 'source': 'loop', 'parents': {}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7f1c-6229-8002-a51d44453e49', 'ts': '2026-01-30T03:39:28.772765+00:00', 'versions_seen': {'node': {'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}, 'node1': {'branch:to:node1': '00000000000000000000000000000003.0.7730355082706724'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.17522916265836352'}, '__interrupt__': {'context': '00000000000000000000000000000002.0.8939590576409355', 'messages': '00000000000000000000000000000002.0.8939590576409355', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}}, 'channel_values': {'branch:to:node2': None, 'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000004.0.8186357539909423', 'messages': '00000000000000000000000000000004.0.8186357539909423', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000003.0.7730355082706724', 'branch:to:node1': '00000000000000000000000000000004.0.8186357539909423', 'branch:to:node2': '00000000000000000000000000000004.0.8186357539909423'}, 'updated_channels': ['branch:to:node2', 'context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1c-6229-8002-a51d44453e49'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1a-6e8a-8001-5fbd38b7df27'}}
channel_values {'branch:to:node2': None, 'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}

pending_writes [('ec0283fd-b0f1-b518-2566-7b6df654ef2c', 'messages', [10000]), ('ec0283fd-b0f1-b518-2566-7b6df654ef2c', 'context', {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}), ('ec0283fd-b0f1-b518-2566-7b6df654ef2c', 'branch:to:node2', None)]
metadata {'step': 1, 'source': 'loop', 'parents': {}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7f1a-6e8a-8001-5fbd38b7df27', 'ts': '2026-01-30T03:39:28.772263+00:00', 'versions_seen': {'node': {'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.17522916265836352'}, '__interrupt__': {'context': '00000000000000000000000000000002.0.8939590576409355', 'messages': '00000000000000000000000000000002.0.8939590576409355', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}}, 'channel_values': {'branch:to:node1': None, 'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000003.0.7730355082706724', 'messages': '00000000000000000000000000000003.0.7730355082706724', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000003.0.7730355082706724', 'branch:to:node1': '00000000000000000000000000000003.0.7730355082706724'}, 'updated_channels': ['branch:to:node1', 'context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7f1a-6e8a-8001-5fbd38b7df27'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
channel_values {'branch:to:node1': None, 'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3', 'node1': 'node1', 'node2': 'node2', 'node3': 'node3'}, 'messages': [10000]}

pending_writes []
metadata {'step': 3, 'source': 'loop', 'parents': {'': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7d3d-670e-8003-51cdea1832b7', 'ts': '2026-01-30T03:39:28.576692+00:00', 'versions_seen': {'node1': {'branch:to:node1': '00000000000000000000000000000002.0.12993881086224668'}, 'node2': {'branch:to:node2': '00000000000000000000000000000003.0.49432487345868337'}, 'node3': {'branch:to:node3': '00000000000000000000000000000004.0.74410538010948'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.23633861124261668'}, '__interrupt__': {'context': '00000000000000000000000000000003.0.49432487345868337', 'messages': '00000000000000000000000000000003.0.49432487345868337', '__start__': '00000000000000000000000000000002.0.12993881086224668', 'branch:to:node1': '00000000000000000000000000000003.0.49432487345868337', 'branch:to:node2': '00000000000000000000000000000003.0.49432487345868337'}}, 'channel_values': {'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000005.0.5490803269063207', 'messages': '00000000000000000000000000000005.0.5490803269063207', '__start__': '00000000000000000000000000000002.0.12993881086224668', 'branch:to:node1': '00000000000000000000000000000003.0.49432487345868337', 'branch:to:node2': '00000000000000000000000000000004.0.74410538010948', 'branch:to:node3': '00000000000000000000000000000005.0.5490803269063207'}, 'updated_channels': ['context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-7d3d-670e-8003-51cdea1832b7'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-7d37-6ecf-8002-61072fab40f5'}}
channel_values {'context': {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3'}, 'messages': [10000]}

pending_writes [('b24bd6c3-f46d-75d4-902a-7c69dc926ad0', 'messages', [10000]), ('b24bd6c3-f46d-75d4-902a-7c69dc926ad0', 'context', {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3'})]
metadata {'step': 2, 'source': 'loop', 'parents': {'': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7d37-6ecf-8002-61072fab40f5', 'ts': '2026-01-30T03:39:28.574433+00:00', 'versions_seen': {'node1': {'branch:to:node1': '00000000000000000000000000000002.0.12993881086224668'}, 'node2': {'branch:to:node2': '00000000000000000000000000000003.0.49432487345868337'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.23633861124261668'}, '__interrupt__': {'context': '00000000000000000000000000000003.0.49432487345868337', 'messages': '00000000000000000000000000000003.0.49432487345868337', '__start__': '00000000000000000000000000000002.0.12993881086224668', 'branch:to:node1': '00000000000000000000000000000003.0.49432487345868337', 'branch:to:node2': '00000000000000000000000000000003.0.49432487345868337'}}, 'channel_values': {'branch:to:node3': None, 'context': {'1': '10000', 'znode1': 'znode1'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000003.0.49432487345868337', 'messages': '00000000000000000000000000000003.0.49432487345868337', '__start__': '00000000000000000000000000000002.0.12993881086224668', 'branch:to:node1': '00000000000000000000000000000003.0.49432487345868337', 'branch:to:node2': '00000000000000000000000000000004.0.74410538010948', 'branch:to:node3': '00000000000000000000000000000004.0.74410538010948'}, 'updated_channels': ['branch:to:node3']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-7d37-6ecf-8002-61072fab40f5'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-79b1-6f1e-8001-d08cf18b7794'}}
channel_values {'branch:to:node3': None, 'context': {'1': '10000', 'znode1': 'znode1'}, 'messages': [10000]}

pending_writes [('17adce71-0dbc-0528-caf0-e1b2cfc591df', '__resume__', [{'user_input': {'1': '2'}}]), ('17adce71-0dbc-0528-caf0-e1b2cfc591df', 'branch:to:node3', None)]
metadata {'step': 1, 'source': 'loop', 'parents': {'': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
checkpoint {'v': 4, 'id': '1f0fd8d4-79b1-6f1e-8001-d08cf18b7794', 'ts': '2026-01-30T03:39:28.204982+00:00', 'versions_seen': {'node1': {'branch:to:node1': '00000000000000000000000000000002.0.12993881086224668'}, '__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.23633861124261668'}}, 'channel_values': {'branch:to:node2': None, 'context': {'1': '10000', 'znode1': 'znode1'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000003.0.49432487345868337', 'messages': '00000000000000000000000000000003.0.49432487345868337', '__start__': '00000000000000000000000000000002.0.12993881086224668', 'branch:to:node1': '00000000000000000000000000000003.0.49432487345868337', 'branch:to:node2': '00000000000000000000000000000003.0.49432487345868337'}, 'updated_channels': ['branch:to:node2', 'context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-79b1-6f1e-8001-d08cf18b7794'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-79ad-60fd-8000-bd54457daa75'}}
channel_values {'branch:to:node2': None, 'context': {'1': '10000', 'znode1': 'znode1'}, 'messages': [10000]}

pending_writes [('e78b518c-3502-f7aa-dfa7-a332524a3dbd', 'messages', [10000]), ('e78b518c-3502-f7aa-dfa7-a332524a3dbd', 'context', {'1': '10000', 'znode1': 'znode1'}), ('e78b518c-3502-f7aa-dfa7-a332524a3dbd', 'branch:to:node2', None)]
metadata {'step': 0, 'source': 'loop', 'parents': {'': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
checkpoint {'v': 4, 'id': '1f0fd8d4-79ad-60fd-8000-bd54457daa75', 'ts': '2026-01-30T03:39:28.202982+00:00', 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.23633861124261668'}}, 'channel_values': {'branch:to:node1': None, 'context': {'1': '10000', 'znode1': 'znode1'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000002.0.12993881086224668', 'messages': '00000000000000000000000000000002.0.12993881086224668', '__start__': '00000000000000000000000000000002.0.12993881086224668', 'branch:to:node1': '00000000000000000000000000000002.0.12993881086224668'}, 'updated_channels': ['branch:to:node1', 'context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-79ad-60fd-8000-bd54457daa75'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-79a5-6b4a-bfff-d09e1a71285b'}}
channel_values {'branch:to:node1': None, 'context': {'1': '10000', 'znode1': 'znode1'}, 'messages': [10000]}

pending_writes [('54b6911d-e6d4-4fb6-26b8-7cab816b3e45', 'messages', [10000]), ('54b6911d-e6d4-4fb6-26b8-7cab816b3e45', 'context', {'1': '10000', 'znode1': 'znode1'}), ('54b6911d-e6d4-4fb6-26b8-7cab816b3e45', 'branch:to:node1', None)]
metadata {'step': -1, 'source': 'input', 'parents': {'': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
checkpoint {'v': 4, 'id': '1f0fd8d4-79a5-6b4a-bfff-d09e1a71285b', 'ts': '2026-01-30T03:39:28.199969+00:00', 'versions_seen': {'__input__': {}}, 'channel_values': {'__start__': {'messages': [10000], 'context': {'1': '10000', 'znode1': 'znode1'}}}, 'channel_versions': {'__start__': '00000000000000000000000000000001.0.23633861124261668'}, 'updated_channels': ['__start__']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': 'node:5cfdc93d-645c-5552-8e83-96af36e3ff76', 'checkpoint_id': '1f0fd8d4-79a5-6b4a-bfff-d09e1a71285b'}}
parent_config None
channel_values {'__start__': {'messages': [10000], 'context': {'1': '10000', 'znode1': 'znode1'}}}

pending_writes [('00000000-0000-0000-0000-000000000000', '__resume__', {'user_input': {'1': '2'}}), ('5cfdc93d-645c-5552-8e83-96af36e3ff76', 'messages', [10000]), ('5cfdc93d-645c-5552-8e83-96af36e3ff76', 'context', {'1': '10000', 'znode1': 'znode1', 'znode2': 'znode2', 'znode3': 'znode3'}), ('5cfdc93d-645c-5552-8e83-96af36e3ff76', 'branch:to:node1', None)]
metadata {'step': 0, 'source': 'loop', 'parents': {}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7859-6d72-8000-b4739801b2f7', 'ts': '2026-01-30T03:39:28.064037+00:00', 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.17522916265836352'}}, 'channel_values': {'branch:to:node': None, 'context': {'1': '10000'}, 'messages': [10000]}, 'channel_versions': {'context': '00000000000000000000000000000002.0.8939590576409355', 'messages': '00000000000000000000000000000002.0.8939590576409355', '__start__': '00000000000000000000000000000002.0.8939590576409355', 'branch:to:node': '00000000000000000000000000000002.0.8939590576409355'}, 'updated_channels': ['branch:to:node', 'context', 'messages']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7859-6d72-8000-b4739801b2f7'}}
parent_config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7857-6641-bfff-66f700d06df7'}}
channel_values {'branch:to:node': None, 'context': {'1': '10000'}, 'messages': [10000]}

pending_writes [('298e89b9-0e47-dbfc-e9fd-e71435be9f05', 'context', {'1': '10000'}), ('298e89b9-0e47-dbfc-e9fd-e71435be9f05', 'messages', [10000]), ('298e89b9-0e47-dbfc-e9fd-e71435be9f05', 'branch:to:node', None)]
metadata {'step': -1, 'source': 'input', 'parents': {}}
checkpoint {'v': 4, 'id': '1f0fd8d4-7857-6641-bfff-66f700d06df7', 'ts': '2026-01-30T03:39:28.063033+00:00', 'versions_seen': {'__input__': {}}, 'channel_values': {'__start__': {'context': {'1': '10000'}, 'messages': [10000]}}, 'channel_versions': {'__start__': '00000000000000000000000000000001.0.17522916265836352'}, 'updated_channels': ['__start__']}
config {'configurable': {'thread_id': 'task_agent_4', 'checkpoint_ns': '', 'checkpoint_id': '1f0fd8d4-7857-6641-bfff-66f700d06df7'}}
parent_config None
channel_values {'__start__': {'context': {'1': '10000'}, 'messages': [10000]}}

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-01-30 16:12
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你提到的问题是关于 LangGraph 中状态(state)和通道值(channel_values)的同步问题,具体表现为“后面节点才会往 state 里添加的值,出现在前面节点的 channel_values 里面”。这说明在某些情况下,channel_values 的更新顺序与实际执行流程不一致,导致数据被错误地传递或覆盖。


    🧠 问题分析

    从你提供的日志来看:

    • pending_writes 显示了即将写入的状态信息。
    • channel_values 包含了多个节点(如 znode1, znode2, node1, node2)的数据。
    • 但有些值(比如 node3)似乎没有正确地出现在所有检查点中。

    这种情况通常发生在以下几种场景中:

    1. 并行执行逻辑问题:如果多个节点并行执行,而它们的输出未正确合并到 state 中,可能导致部分值被遗漏。
    2. checkpoint 处理不一致:如果在某个 checkpoint 中,channel_values 没有包含最新的状态更新,就会出现“后面节点的值出现在前面节点”的现象。
    3. 状态合并逻辑错误:当使用 langgraphStateGraph 时,如果没有正确实现 update_statemerge 函数,可能导致状态未被正确合并。

    ✅ 期望结果 vs 实际情况

    期望:

    {
      "context": {"1": "10000", "messages": [10000]},
      "znode1": "znode1",
      "znode2": "znode2",
      "znode3": "znode3",
      "node1": "node1",
      "node2": "node2"
    }
    

    实际情况:

    {
      "context": {"1": "10000", "znode1": "znode1", "znode2": "znode2", "znode3": "znode3"},
      "messages": [10000]
    }
    

    可以看到,node1, node2 等字段缺失,说明这些节点的输出没有被正确合并到 channel_values 中。


    🔧 解决方案

    为了确保每个节点的输出都被正确记录到 channel_values 中,可以按照以下步骤进行排查和修复:

    1. 确认节点的输出是否正确

    确保每个节点的函数返回了正确的状态值。例如:

    from langgraph import StateGraph, START, END
    
    class MyState(TypedDict):
        context: dict
        messages: list[str]
    
    def node1(state: MyState) -> MyState:
        # 假设 node1 返回了 'node1' 的值
        return {
            **state,
            "node1": "node1"
        }
    
    def node2(state: MyState) -> MyState:
        return {
            **state,
            "node2": "node2"
        }
    

    注意:如果你使用的是 langgraphNode API,要确保 return 正确地将值写入 state。

    2. 检查 StateGraph 的定义

    确保你在定义 StateGraph 时,所有节点都正确连接,并且使用了 add_node() 方法添加。

    workflow = StateGraph(MyState)
    
    workflow.add_node("node1", node1)
    workflow.add_node("node2", node2)
    workflow.add_node("node3", node3)
    
    # 添加边
    workflow.add_edge("node1", "node2")
    workflow.add_edge("node2", "node3")
    
    # 设置入口点
    workflow.set_entry_point("node1")
    
    # 构建图
    app = workflow.compile()
    

    3. 确保 channel_values 被正确更新

    在使用 checkpointer 时,确保每次调用 app.invoke()app.get_state() 后,状态被正确保存和读取。

    from langgraph.checkpoint.sqlite import SqliteSaver
    
    # 创建 checkpointer
    checkpointer = SqliteSaver.from_conn_string(":memory:")
    
    # 编译应用
    app = workflow.compile(checkpointer=checkpointer)
    

    4. 手动验证状态

    在调用 app.invoke() 后,手动获取状态以验证是否包含了所有预期的字段。

    config = {"configurable": {"thread_id": "task_agent_4"}}
    state = app.get_state(config)
    print(state.values)  # 打印当前状态
    

    5. 调试 channel_values 的更新逻辑

    如果状态仍然不完整,可以尝试打印 channel_valueschannel_versions 来查看更新是否按预期发生。

    print("Channel Values:", state.values["channel_values"])
    print("Channel Versions:", state.values["channel_versions"])
    

    🧪 示例修改代码(关键部分)

    假设你有一个类似如下结构的 StateGraph

    from langgraph import StateGraph, START, END
    from typing import TypedDict, List
    
    class MyState(TypedDict):
        context: dict
        messages: List[str]
    
    def node1(state: MyState) -> MyState:
        return {
            **state,
            "node1": "node1"
        }
    
    def node2(state: MyState) -> MyState:
        return {
            **state,
            "node2": "node2"
        }
    
    def node3(state: MyState) -> MyState:
        return {
            **state,
            "node3": "node3"
        }
    
    workflow = StateGraph(MyState)
    workflow.add_node("node1", node1)
    workflow.add_node("node2", node2)
    workflow.add_node("node3", node3)
    
    workflow.add_edge("node1", "node2")
    workflow.add_edge("node2", "node3")
    
    workflow.set_entry_point("node1")
    app = workflow.compile()
    

    然后,你可以通过以下方式调用它并检查状态:

    config = {"configurable": {"thread_id": "task_agent_4"}}
    result = app.invoke({"context": {"1": "10000"}, "messages": [10000]}, config=config)
    state = app.get_state(config)
    print("Final State:", state.values)
    

    ⚠️ 注意事项

    • 如果你的节点是并行执行的,需要确保它们的输出被正确合并到同一个 state 中。
    • 如果你使用了 parallelmap,请检查是否对每个子节点的输出进行了合并。
    • langgraph 中,channel_values 是基于 state 的,因此确保每个节点都正确地更新了 state。

    ✅ 总结

    | 步骤 | 说明 | |------|------| | 1 | 确保每个节点的输出正确 | | 2 | 检查 StateGraph 定义是否正确 | | 3 | 确保 checkpointer 正确配置 | | 4 | 手动验证 channel_values | | 5 | 调试状态更新逻辑 |

    如果你能提供完整的代码片段或更详细的上下文,我可以进一步帮你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月30日