Bumps the all-dependencies group with 3 updates in the /libs/langgraph directory: [langchain-core](https://github.com/langchain-ai/langchain), [redis](https://github.com/redis/redis-py) and [ruff](https://github.com/astral-sh/ruff). Updates `langchain-core` from 1.2.13 to 1.2.16 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langchain/releases">langchain-core's releases</a>.</em></p> <blockquote> <h2>langchain-core==1.2.16</h2> <p>Changes since langchain-core==1.2.15</p> <p>release(core): 1.2.16 (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35439">#35439</a>) fix(core): treat empty tool chunk ids as missing in merge (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35414">#35414</a>)</p> <h2>langchain-core==1.2.15</h2> <p>Changes since langchain-core==1.2.14</p> <p>fix(core): improve error message for non-JSON-serializable tool schemas (<a href="https://redirect.github.com/langchain-ai/langchain/issues/34376">#34376</a>) fix(core): improve typing/docs for on_chat_model_start to clarify required positional args (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35324">#35324</a>) perf(core): defer specific <code>langsmith</code> imports to reduce import time (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35298">#35298</a>) revert: add ChatAnthropicBedrockWrapper (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35371">#35371</a>) release(core): 1.2.15 (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35367">#35367</a>) fix(anthropic): replace retired model IDs in tests and docstrings (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35365">#35365</a>) feat(anthropic): add ChatAnthropicBedrock wrapper (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35091">#35091</a>) style: fix some ruff noqa (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35321">#35321</a>)</p> <h2>langchain-core==1.2.14</h2> <p>Changes since langchain-core==1.2.13</p> <p>release(core): 1.2.14 (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35328">#35328</a>) chore(core): remove <code>langserve</code> from sys info util, add <code>deepagents</code> (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35325">#35325</a>) fix(core): fix merge_lists incorrectly merging parallel tool calls (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35281">#35281</a>) fix(core): accept int temperature in _get_ls_params for LangSmith tracing (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35302">#35302</a>) revert: accept integer temperature values in _get_ls_params (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35319">#35319</a>) fix(core): accept integer temperature values in _get_ls_params (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35317">#35317</a>) docs(core): update load note to be precise (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35309">#35309</a>) fix(core): prevent recursion error when args_schema is dict (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35260">#35260</a>) fix(core): preserve index and timestamp fields when merging (<a href="https://redirect.github.com/langchain-ai/langchain/issues/34731">#34731</a>) docs(core): add security warnings and best practices for deserialization (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35282">#35282</a>) docs: fix docstring inaccuracies and update outdated LangSmith URLs (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35283">#35283</a>) fix(core): correct misleading jinja2 sandboxing comment (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35183">#35183</a>) chore: bump the langchain-deps group across 3 directories with 8 updates (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35257">#35257</a>)</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain-ai/langchain/commit/94a58825d352e15b2f5a132859b08827f7b208fb"><code>94a5882</code></a> release(core): 1.2.16 (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35439">#35439</a>)</li> <li><a href="https://github.com/langchain-ai/langchain/commit/78678534f970a5a01dddfc979594367c58d04b44"><code>7867853</code></a> fix(core): treat empty tool chunk ids as missing in merge (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35414">#35414</a>)</li> <li><a href="https://github.com/langchain-ai/langchain/commit/4ffb584ddf09440184dda63d11187b0bdd2b63b2"><code>4ffb584</code></a> release(anthropic): 1.3.4 (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35418">#35418</a>)</li> <li><a href="https://github.com/langchain-ai/langchain/commit/cdb9742511d57b8eb3d37f93d115ae9b4d60dba4"><code>cdb9742</code></a> fix(anthropic): filter out common OpenAI Responses block types (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35417">#35417</a>)</li> <li><a href="https://github.com/langchain-ai/langchain/commit/0b975d4d1ba532d4da16af222824951aeabba9d6"><code>0b975d4</code></a> chore: bump the other-deps group across 3 directories with 2 updates (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35407">#35407</a>)</li> <li><a href="https://github.com/langchain-ai/langchain/commit/2d1492a8643ec260e998f64001784249f7da80cf"><code>2d1492a</code></a> fix(core): improve error message for non-JSON-serializable tool schemas (<a href="https://redirect.github.com/langchain-ai/langchain/issues/34376">#34376</a>)</li> <li><a href="https://github.com/langchain-ai/langchain/commit/d6e46bb4b0813bdfe1f6670380b45ead550636c6"><code>d6e46bb</code></a> fix(core): improve typing/docs for on_chat_model_start to clarify required po...</li> <li><a href="https://github.com/langchain-ai/langchain/commit/875c3c573d90484a49493f09d57828cfca3f189a"><code>875c3c5</code></a> chore: bump google-cloud-aiplatform from 1.127.0 to 1.133.0 in /libs/langchai...</li> <li><a href="https://github.com/langchain-ai/langchain/commit/32725b3d9b869fbfd955ce5f21dd1ce405305b01"><code>32725b3</code></a> chore: bump google-cloud-aiplatform from 1.117.0 to 1.133.0 in /libs/langchai...</li> <li><a href="https://github.com/langchain-ai/langchain/commit/2fa460d325d0500069232a2f27be0c40f95c9f28"><code>2fa460d</code></a> fix(anthropic): update integration tests (<a href="https://redirect.github.com/langchain-ai/langchain/issues/35396">#35396</a>)</li> <li>Additional commits viewable in <a href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.2.13...langchain-core==1.2.16">compare view</a></li> </ul> </details> <br /> Updates `redis` from 7.2.0 to 7.2.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/redis/redis-py/releases">redis's releases</a>.</em></p> <blockquote> <h2>7.2.1</h2> <h1>Changes</h1> <h2>🐛 Bug Fixes</h2> <ul> <li>Handle connection attributes conditionally for metrics and set connection data on exceptions in cluster error handling (<a href="https://redirect.github.com/redis/redis-py/issues/3964">#3964</a>)</li> </ul> <h2>⚠️ Deprecations</h2> <ul> <li>Removed batch_size and consumer_name attributes from OTel metrics (<a href="https://redirect.github.com/redis/redis-py/issues/3978">#3978</a>)</li> </ul> <h2>🧰 Maintenance</h2> <ul> <li>Fixing error handling of connection buffer purging of closed connections. Enabling troubleshooting logging for maintenance notifications e2e tests. (<a href="https://redirect.github.com/redis/redis-py/issues/3971">#3971</a>)</li> <li>Fix protocol validation: replace finally with else and store parsed int (<a href="https://redirect.github.com/redis/redis-py/issues/3965">#3965</a>)</li> <li>Return copies from _get_free/in_use_connections and fix async _mock (<a href="https://redirect.github.com/redis/redis-py/issues/3967">#3967</a>)</li> <li>Add missing shard channel message types to async PubSub (<a href="https://redirect.github.com/redis/redis-py/issues/3966">#3966</a>)</li> <li>Fix issues with ClusterPipeline connection management (<a href="https://redirect.github.com/redis/redis-py/issues/3804">#3804</a>)</li> <li>fix(pubsub): avoid UnicodeDecodeError on reconnect with binary channel names (<a href="https://redirect.github.com/redis/redis-py/issues/3944">#3944</a>)</li> <li>Hold references to ClusterNode disconnect task (<a href="https://redirect.github.com/redis/redis-py/issues/3826">#3826</a>)</li> <li>remove remaining imports of typing_extensions (<a href="https://redirect.github.com/redis/redis-py/issues/3873">#3873</a>)</li> </ul> <p>We'd like to thank all the contributors who worked on this release! <a href="https://github.com/dotlambda"><code>@dotlambda</code></a> <a href="https://github.com/rhoboro"><code>@rhoboro</code></a> <a href="https://github.com/skylarkoo7"><code>@skylarkoo7</code></a> <a href="https://github.com/praboud"><code>@praboud</code></a> <a href="https://github.com/bysiber"><code>@bysiber</code></a> <a href="https://github.com/vladvildanov"><code>@vladvildanov</code></a> <a href="https://github.com/petyaslavova"><code>@petyaslavova</code></a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/redis/redis-py/commit/56859cf9cc635bb25b4911a7f1653a3b64514844"><code>56859cf</code></a> Updating lib version to 7.2.1</li> <li><a href="https://github.com/redis/redis-py/commit/c671fd9defcd725730dacf8a2976eaedb874bf13"><code>c671fd9</code></a> remove remaining imports of typing_extensions (<a href="https://redirect.github.com/redis/redis-py/issues/3873">#3873</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/e2037966e0d29332991abf4d5d18b712619d7521"><code>e203796</code></a> Hold references to ClusterNode disconnect task (<a href="https://redirect.github.com/redis/redis-py/issues/3826">#3826</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/a21f768a8f4e70da8056c10a998f852ed8be10f3"><code>a21f768</code></a> Removed batch_size and consumer_name attributes from OTel metrics (<a href="https://redirect.github.com/redis/redis-py/issues/3978">#3978</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/209811422bc3f933e912dab19adceb17dcae9368"><code>2098114</code></a> fix(pubsub): avoid UnicodeDecodeError on reconnect with binary channel names ...</li> <li><a href="https://github.com/redis/redis-py/commit/f02c66b88fc89f582e3ecca3407594df8970f60f"><code>f02c66b</code></a> Fix issues with ClusterPipeline connection management (<a href="https://redirect.github.com/redis/redis-py/issues/3804">#3804</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/1958065662439ad52e3bf8fec5cabb60fb5c40a8"><code>1958065</code></a> Add missing shard channel message types to async PubSub (<a href="https://redirect.github.com/redis/redis-py/issues/3966">#3966</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/abc519d9f3eadec9637ae2122b3d11a6b63f50c9"><code>abc519d</code></a> Return copies from _get_free/in_use_connections and fix async _mock (<a href="https://redirect.github.com/redis/redis-py/issues/3967">#3967</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/bb2b6f35515624d17a4ed2f209dc88ee847c5421"><code>bb2b6f3</code></a> Fix protocol validation: replace finally with else and store parsed int (<a href="https://redirect.github.com/redis/redis-py/issues/3965">#3965</a>)</li> <li><a href="https://github.com/redis/redis-py/commit/631c053dcd6f881a0bc19ef7777d61c4f1b1bfad"><code>631c053</code></a> Fixing error handling of connection buffer purging of closed connecton. Enabl...</li> <li>Additional commits viewable in <a href="https://github.com/redis/redis-py/compare/v7.2.0...v7.2.1">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.15.1 to 0.15.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.4</h2> <h2>Release Notes</h2> <p>Released on 2026-02-26.</p> <p>This is a follow-up release to 0.15.3 that resolves a panic when the new rule <code>PLR1712</code> was enabled with any rule that analyzes definitions, such as many of the <code>ANN</code> or <code>D</code> rules.</p> <h3>Bug fixes</h3> <ul> <li>Fix panic on access to definitions after analyzing definitions (<a href="https://redirect.github.com/astral-sh/ruff/pull/23588">#23588</a>)</li> <li>[<code>pyflakes</code>] Suppress false positive in <code>F821</code> for names used before <code>del</code> in stub files (<a href="https://redirect.github.com/astral-sh/ruff/pull/23550">#23550</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Clarify first-party import detection in Ruff (<a href="https://redirect.github.com/astral-sh/ruff/pull/23591">#23591</a>)</li> <li>Fix incorrect <code>import-heading</code> example (<a href="https://redirect.github.com/astral-sh/ruff/pull/23568">#23568</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/stakeswky"><code>@stakeswky</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/thejcannon"><code>@thejcannon</code></a></li> <li><a href="https://github.com/GeObts"><code>@GeObts</code></a></li> </ul> <h2>Install ruff 0.15.4</h2> <h3>Install prebuilt binaries via shell script</h3> <pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.sh | sh </code></pre> <h3>Install prebuilt binaries via powershell script</h3> <pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-installer.ps1 | iex" </code></pre> <h2>Download ruff 0.15.4</h2> <table> <thead> <tr> <th>File</th> <th>Platform</th> <th>Checksum</th> </tr> </thead> <tbody> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-apple-darwin.tar.gz">ruff-aarch64-apple-darwin.tar.gz</a></td> <td>Apple Silicon macOS</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-apple-darwin.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-apple-darwin.tar.gz">ruff-x86_64-apple-darwin.tar.gz</a></td> <td>Intel macOS</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-apple-darwin.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-pc-windows-msvc.zip">ruff-aarch64-pc-windows-msvc.zip</a></td> <td>ARM64 Windows</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-pc-windows-msvc.zip">ruff-i686-pc-windows-msvc.zip</a></td> <td>x86 Windows</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-pc-windows-msvc.zip">ruff-x86_64-pc-windows-msvc.zip</a></td> <td>x64 Windows</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz">ruff-aarch64-unknown-linux-gnu.tar.gz</a></td> <td>ARM64 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz">ruff-i686-unknown-linux-gnu.tar.gz</a></td> <td>x86 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-i686-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-unknown-linux-gnu.tar.gz">ruff-powerpc64-unknown-linux-gnu.tar.gz</a></td> <td>PPC64 Linux</td> <td><a href="https://github.com/astral-sh/ruff/releases/download/0.15.4/ruff-powerpc64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> </tbody> </table> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.4</h2> <p>Released on 2026-02-26.</p> <p>This is a follow-up release to 0.15.3 that resolves a panic when the new rule <code>PLR1712</code> was enabled with any rule that analyzes definitions, such as many of the <code>ANN</code> or <code>D</code> rules.</p> <h3>Bug fixes</h3> <ul> <li>Fix panic on access to definitions after analyzing definitions (<a href="https://redirect.github.com/astral-sh/ruff/pull/23588">#23588</a>)</li> <li>[<code>pyflakes</code>] Suppress false positive in <code>F821</code> for names used before <code>del</code> in stub files (<a href="https://redirect.github.com/astral-sh/ruff/pull/23550">#23550</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Clarify first-party import detection in Ruff (<a href="https://redirect.github.com/astral-sh/ruff/pull/23591">#23591</a>)</li> <li>Fix incorrect <code>import-heading</code> example (<a href="https://redirect.github.com/astral-sh/ruff/pull/23568">#23568</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/stakeswky"><code>@stakeswky</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/thejcannon"><code>@thejcannon</code></a></li> <li><a href="https://github.com/GeObts"><code>@GeObts</code></a></li> </ul> <h2>0.15.3</h2> <p>Released on 2026-02-26.</p> <h3>Preview features</h3> <ul> <li> <p>Drop explicit support for <code>.qmd</code> file extension (<a href="https://redirect.github.com/astral-sh/ruff/pull/23572">#23572</a>)</p> <p>This can now be enabled instead by setting the <a href="https://docs.astral.sh/ruff/settings/#extension"><code>extension</code></a> option:</p> <pre lang="toml"><code># ruff.toml extension = { qmd = "markdown" } <h1>pyproject.toml</h1> <p>[tool.ruff] extension = { qmd = "markdown" } </code></pre></p> </li> <li> <p>Include configured extensions in file discovery (<a href="https://redirect.github.com/astral-sh/ruff/pull/23400">#23400</a>)</p> </li> <li> <p>[<code>flake8-bandit</code>] Allow suspicious imports in <code>TYPE_CHECKING</code> blocks (<code>S401</code>-<code>S415</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/23441">#23441</a>)</p> </li> <li> <p>[<code>flake8-bugbear</code>] Allow <code>B901</code> in pytest hook wrappers (<a href="https://redirect.github.com/astral-sh/ruff/pull/21931">#21931</a>)</p> </li> <li> <p>[<code>flake8-import-conventions</code>] Add missing conventions from upstream (<code>ICN001</code>, <code>ICN002</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/21373">#21373</a>)</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/f14edd8661e2803254f89265548c7487f47a09f6"><code>f14edd8</code></a> Bump 0.15.4 (<a href="https://redirect.github.com/astral-sh/ruff/issues/23595">#23595</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/fd09d370076ab585444fd39f0fee79bf29280b68"><code>fd09d37</code></a> Fix panic on access to definitions after analyzing definitions (<a href="https://redirect.github.com/astral-sh/ruff/issues/23588">#23588</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/81d655fadce087b792e524ed1964e9bcc31b73cd"><code>81d655f</code></a> [<code>pyflakes</code>] suppress false positive in <code>F821</code> for names used before <code>del</code> in...</li> <li><a href="https://github.com/astral-sh/ruff/commit/625b4f5a672d1baaa6f25e0999ca428f3f2522f1"><code>625b4f5</code></a> [ruff] docs: Clarify first-party import detection in Ruff (<a href="https://redirect.github.com/astral-sh/ruff/issues/23591">#23591</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/60facfa0bc02689637e25237f0df5abfc2f27054"><code>60facfa</code></a> one word typo fix in a <code>while_loop.md</code> test case (<a href="https://redirect.github.com/astral-sh/ruff/issues/23589">#23589</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/fbb9fa75cc1915973a739da0ec469094176bfdc6"><code>fbb9fa7</code></a> docs: fix incorrect import-heading example (<a href="https://redirect.github.com/astral-sh/ruff/issues/23568">#23568</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/5bc49a941279c9100ff834edae1cb63053aeec93"><code>5bc49a9</code></a> Increase the ruleset size to 16 bits (<a href="https://redirect.github.com/astral-sh/ruff/issues/23586">#23586</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/a62ba8c6e2bac0b899d90fd30a1b26c07aac44bb"><code>a62ba8c</code></a> [ty] Fix overloaded callable assignability for unary Callable targets (<a href="https://redirect.github.com/astral-sh/ruff/issues/23277">#23277</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/e5f2f36a3f49b45fd7506d42b12c495c2517e936"><code>e5f2f36</code></a> Bump 0.15.3 (<a href="https://redirect.github.com/astral-sh/ruff/issues/23585">#23585</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/0e19fc9a61477e71abc4eb76f05a129b6b9ab873"><code>0e19fc9</code></a> [ty] defer calculating conjunctions in narrowing constraints (<a href="https://redirect.github.com/astral-sh/ruff/issues/23552">#23552</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.1...0.15.4">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Trusted by companies shaping the future of agents – including Klarna, Replit, Elastic, and more – LangGraph is a low-level orchestration framework for building, managing, and deploying long-running, stateful agents.
Get started
Install LangGraph:
pip install -U langgraph
Create a simple workflow:
from langgraph.graph import START, StateGraph
from typing_extensions import TypedDict
class State(TypedDict):
text: str
def node_a(state: State) -> dict:
return {"text": state["text"] + "a"}
def node_b(state: State) -> dict:
return {"text": state["text"] + "b"}
graph = StateGraph(State)
graph.add_node("node_a", node_a)
graph.add_node("node_b", node_b)
graph.add_edge(START, "node_a")
graph.add_edge("node_a", "node_b")
print(graph.compile().invoke({"text": ""}))
# {'text': 'ab'}
Get started with the LangGraph Quickstart.
To quickly build agents with LangChain's create_agent (built on LangGraph), see the LangChain Agents documentation.
Core benefits
LangGraph provides low-level supporting infrastructure for any long-running, stateful workflow or agent. LangGraph does not abstract prompts or architecture, and provides the following central benefits:
- Durable execution: Build agents that persist through failures and can run for extended periods, automatically resuming from exactly where they left off.
- Human-in-the-loop: Seamlessly incorporate human oversight by inspecting and modifying agent state at any point during execution.
- Comprehensive memory: Create truly stateful agents with both short-term working memory for ongoing reasoning and long-term persistent memory across sessions.
- Debugging with LangSmith: Gain deep visibility into complex agent behavior with visualization tools that trace execution paths, capture state transitions, and provide detailed runtime metrics.
- Production-ready deployment: Deploy sophisticated agent systems confidently with scalable infrastructure designed to handle the unique challenges of stateful, long-running workflows.
LangGraph’s ecosystem
While LangGraph can be used standalone, it also integrates seamlessly with any LangChain product, giving developers a full suite of tools for building agents. To improve your LLM application development, pair LangGraph with:
- LangSmith — Helpful for agent evals and observability. Debug poor-performing LLM app runs, evaluate agent trajectories, gain visibility in production, and improve performance over time.
- LangSmith Deployment — Deploy and scale agents effortlessly with a purpose-built deployment platform for long running, stateful workflows. Discover, reuse, configure, and share agents across teams — and iterate quickly with visual prototyping in LangGraph Studio.
- LangChain – Provides integrations and composable components to streamline LLM application development.
Note
Looking for the JS version of LangGraph? See the JS repo and the JS docs.
Additional resources
- Guides: Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.).
- Reference: Detailed reference on core classes, methods, how to use the graph and checkpointing APIs, and higher-level prebuilt components.
- Examples: Guided examples on getting started with LangGraph.
- LangChain Forum: Connect with the community and share all of your technical questions, ideas, and feedback.
- LangChain Academy: Learn the basics of LangGraph in our free, structured course.
- Case studies: Hear how industry leaders use LangGraph to ship AI applications at scale.
Acknowledgements
LangGraph is inspired by Pregel and Apache Beam. The public interface draws inspiration from NetworkX. LangGraph is built by LangChain Inc, the creators of LangChain, but can be used without LangChain.