pypi langgraph-prebuilt 0.5.0

latest releases: 1.1.0, 1.1.0a2, 1.1.0a1...
11 months ago

LangGraph 0.5 – the “Getting-Ready-for-1.0” release 🎉

TL;DR – 0.5 is not a radical rewrite, but a scrub-down and tune-up of the LangGraph core.

APIs are a little stricter, you have more control over streaming, checkpoints are lighter, etc. 99 % of users can upgrade with nothing more than a pip install --upgrade langgraph==0.5.*.


Why 0.5?

The team’s next big milestone is a 1.0 release in a few months.

To get there we needed to:

  • lock in the few API surfaces that still felt “fuzzy”
  • prune internal code paths that made distributed execution harder
  • land long-queued performance work

0.5 is that housekeeping release.


Headline changes

1. A leaner, stricter StateGraph

  1. state_schema is now mandatory.

    “Untyped” graphs were never shown in the docs and produced surprising runtime errors. Requiring an explicit schema fixes that class of bugs and improves static analysis.

  2. input/outputinput_schema/output_schema

    The old names still work but raise a deprecation warning.

    graph = StateGraph(
        state_schema=MyState,
        input_schema=UserQuery,
        output_schema=AssistantResponse,
    )
  3. New NodeBuilder utility

    A simpler, declarative way to create nodes and attach them to channels. The old Channel.subscribe_to helper keeps working but will be removed in 1.0.

2. Smarter streaming modes

  • stream_mode="debug" is now an alias for the pair["tasks", "checkpoints"]. You can now turn them on individually:
graph.stream(stream_mode="tasks")        # only task-level updates
graph.stream(stream_mode="checkpoints")  # only checkpoint deltas

This makes it cheaper to subscribe only to the information you need.

3. Checkpointing overhaul

  • Smaller blobs & faster restores
    Redundant keys have been dropped and per-task writes are stored directly.
  • Seamless migrations
    Legacy “pending _sends” data is auto-migrated the first time it is loaded. Custom checkpointers continue to work unchanged.

4. Better serialization

  • JsonPlusSerializer now handles NumPy arrays stored in your state (including Fortran-ordered ones) without falling back to pickle.

Minor breaking changes you might notice

  1. state_schema required – add it if you were passing only input and output schemas instead (very rare).
  2. input / output renaming – rename to input_schema / output_schema.
  3. Subclassing internals – if you subclassed PregelNode and Runnable, drop the latter.

Nothing else should require code changes.


How to upgrade

pip install -U "langgraph>=0.5"

If you maintain a plugin / custom checkpointer, run your test suite once; the public interfaces are untouched.


What’s next?

We’re hard at work on LangGraph 1.0, chime in here with any comments, feedback or questions, we want to hear from everyone.

Detailed Changelog

  • feat: crons sorting sdk (#5197)
  • feat(langgraph): task masquerading with update state
  • Add print_mode= arg to invoke/stream (#5201)
  • Fix bug where Command(update=) could be ignored if there was a 2nd interrupt after it
  • Reduce extraneous keys in checkpoint.metadata
  • If FuturesDict callback has been GCed, don't call it
  • Add migration for pending_sends (#5106)
  • Introduce "tasks" and "checkpoints" stream modes
  • Add migration for pending_sends
  • Restore compatibility with custom checkpointer classes created in prior versions
  • Revert "Remove UntrackedValue channel"
  • Revert "Remove MessageGraph (#4875)"
  • fix(langgraph): remove deprecated output usage in favor of output_schema (#5095)
  • refactor(langgraph): Remove PregelNode's inheritance from Runnable (#5093)
  • Remove support for node reading a single managed value
  • PregelLoop: Simplify tick() method (#5080)
  • serialize/deserialize pandas with pickle fallback (#5057)
  • Remove code paths no longer needed
  • Avoid saving checkpoints for subgraphs when checkpoint_during=False (#5051)
  • Remove gitmcp badge (#5055)
  • Avoid saving checkpoints for subgraphs when checkpoint_during=False
  • Clean up things for Matt!
  • Support numpy array serialization in JsonPlusSerializer (#5035)
  • Update ormsgpack (#5034)
  • deprecate input and output in favor of input_schema and output_schema (#4983)
  • using StateT as default for InputT
  • lint: use pep 604 union syntax and pep 585 generic syntax (#4963)
  • docs: remove references to StateGraph(dict) (#4964)
  • rename retry -> retry_policy (#4957)
  • Fix step_timeout causing ParentCommand/GraphInterrupt exception to bubble up
  • docs: fix a grammar issue in multiple files (#4935)
  • Make it possible to run test command without docker installed (#4948)
  • Fix async callback manager tag handling (#4949)
  • Pass tags when configuring async callback manager
  • Allow same-name channels and nodes in StateGraph (#4944)
  • Make it possible to run test command without docker installed
  • docs: fix ensure_config docstring
  • Allow same-name channels and nodes in StateGraph
  • Improve type checking on graph init and invoke/stream (#4932)
  • docs: fix a grammar issue in multiple files
  • Fix makefile command file for dev server - pidfile was always empty
  • Fix Command(graph=PARENT) when used together w checkpointer=True
  • Remove unused deprecation decorator/warning (#4917)
  • Require state_schema in StateGraph.__init__ (#4897)
  • Remove add_conditional_edge(..., then=) (#4893)
  • Avoid repeated runtime calls to get_type_hints
  • Remove MessageGraph (#4875)
  • Remove non-state Graph
  • Remove UntrackedValue channel
  • Remove UntrackedValue channel (#4859)
  • Flip default for checkpoint_during
  • Remove Channel node builder
  • Update managed value usage in local_read (#4854)
  • Modify stream mode messages and custom to respect subgraphs=False (#4843)
  • Remove Checkpoint.writes (#4822)
  • Remove Checkpoint.pending_sends (#4820)
  • Pregel: Add NodeBuilder class to replace Channel.subscribe_to (#4819)
  • Remove dict subclasses used for values/updates stream chunks (#4816)
  • Remove old checkpoint test fixtures (#4814)
  • Remove postgres shallow checkpointer (#4813)
  • Remove ChannelsManager, ManagedValues are now static classes and never instantiated (#4812)
  • Remove Context channel / managed value, Remove SharedValue (#4857)
  • Pregel: Add NodeBuilder class to replace Channel.subscribe_to
  • Remove old checkpoint test fixtures
  • Remove postgres shallow checkpointer
  • Remove ChannelsManager, ManagedValues are now static classes and never instantiated
  • Remove Context channel / managed value, Remove SharedValue

Don't miss a new langgraph-prebuilt release

NewReleases is sending notifications on new releases.