diff --git a/.changeset/famous-oranges-pay.md b/.changeset/famous-oranges-pay.md new file mode 100644 index 000000000..8486fa283 --- /dev/null +++ b/.changeset/famous-oranges-pay.md @@ -0,0 +1,5 @@ +--- +"@langchain/langgraph": patch +--- + +Improve graph execution performance by avoiding unnecessary cloning of checkpoints after every tick diff --git a/libs/langgraph/src/channels/base.ts b/libs/langgraph/src/channels/base.ts index 5031853f4..9fa8ff2ea 100644 --- a/libs/langgraph/src/channels/base.ts +++ b/libs/langgraph/src/channels/base.ts @@ -169,19 +169,12 @@ export function createCheckpoint( } } - const newVersionsSeen = {} as Record>; - for (const k in checkpoint.versions_seen) { - if (!Object.prototype.hasOwnProperty.call(checkpoint.versions_seen, k)) - continue; - newVersionsSeen[k] = { ...checkpoint.versions_seen[k] }; - } - return { v: 4, id: options?.id ?? uuid6(step), ts: new Date().toISOString(), channel_values: values, - channel_versions: { ...checkpoint.channel_versions }, - versions_seen: newVersionsSeen, + channel_versions: checkpoint.channel_versions, + versions_seen: checkpoint.versions_seen, }; }