Commit Graph
16662 Commits
Author SHA1 Message Date
Sydney Runkle 54383cd12c release(langchain): 1.3.17 (#39893)
Patch release of the `langchain` package (langchain_v1): `1.3.16` →
`1.3.17`.

Bumps `version` in `pyproject.toml`, `__version__` in
`langchain/__init__.py`, and the corresponding entry in `uv.lock`.

---

*Prepared with the assistance of an AI agent.*
langchain==1.3.17
2026-08-24 19:37:24 -07:00
0eb47127d2 fix(langchain): frame custom HITL rejection reasons (#39773)
Human-provided HITL rejection reasons now retain enough context for the
model to understand that the tool was rejected rather than executed.

Previously, a custom `RejectDecision.message` replaced all rejection
framing, while the bare-rejection fallback instructed the model not to
retry. `HumanInTheLoopMiddleware` now uses minimal user-rejection
context in both cases without prescribing future model behavior.

## Release note
Human-in-the-loop rejection results now identify the user rejection
without instructing the model whether to retry.

_Developed with AI-agent assistance._

Made by [Open
SWE](https://openswe.vercel.app/agents/3df8f29d-d7d4-5296-9369-26755096058d)

---------

Co-authored-by: Harrison Chase <11986836+hwchase17@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-24 19:31:39 -07:00
69505d861b chore(deps): bump minor and patch dependencies (#39869)
Bumps the minor-and-patch group with 15 updates in the /libs/core
directory:

| Package | From | To |
| --- | --- | --- |
| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18`
| `0.11.1` |
| [typing-extensions](https://github.com/python/typing_extensions) |
`4.15.0` | `4.16.0` |
| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.3` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4`
|
| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.16.0` |
`0.17.0` |
| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) |
`0.0.17` | `0.0.18` |
| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.16.4` |
| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |
| [types-requests](https://github.com/python/typeshed) |
`2.32.4.20260107` | `2.33.0.20260712` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |
| [syrupy](https://github.com/syrupy-project/syrupy) | `5.1.0` | `5.5.3`
|
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) |
`1.3.0` | `1.4.0` |
| [responses](https://github.com/getsentry/responses) | `0.26.0` |
`0.26.2` |
| [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0`
| `0.8.1` |
| [blockbuster](https://github.com/cbornet/blockbuster) | `1.5.26` |
`1.5.27` |

Bumps the minor-and-patch group with 37 updates in the /libs/langchain
directory:

| Package | From | To |
| --- | --- | --- |
| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18`
| `0.11.1` |
| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.3` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4`
|
| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.16.4` |
| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |
| [types-requests](https://github.com/python/typeshed) |
`2.32.4.20260107` | `2.33.0.20260712` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |
| [syrupy](https://github.com/syrupy-project/syrupy) | `5.1.0` | `5.5.3`
|
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) |
`1.3.0` | `1.4.0` |
| [responses](https://github.com/getsentry/responses) | `0.26.0` |
`0.26.2` |
| [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0`
| `0.8.1` |
| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` |
`2.0.52` |
| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |
|
[langchain-community](https://github.com/langchain-ai/langchain-community)
| `0.4.1` | `0.4.2` |
| [langchain-anthropic](https://github.com/langchain-ai/langchain) |
`1.4.6` | `1.6.1` |
| [langchain-azure-ai](https://github.com/langchain-ai/langchain-azure)
| `1.2.3` | `1.2.8` |
| [langchain-cohere](https://github.com/langchain-ai/langchain-cohere) |
`0.5.1` | `0.6.0` |
|
[langchain-google-vertexai](https://github.com/langchain-ai/langchain-google)
| `3.2.3` | `3.2.4` |
|
[langchain-google-genai](https://github.com/langchain-ai/langchain-google)
| `4.2.1` | `4.3.5` |
| [langchain-fireworks](https://github.com/langchain-ai/langchain) |
`1.1.0` | `1.6.0` |
| [langchain-ollama](https://github.com/langchain-ai/langchain) |
`1.0.1` | `1.1.0` |
|
[langchain-together](https://github.com/langchain-ai/langchain-together)
| `0.0.2.post1` | `0.4.0` |
| [langchain-mistralai](https://github.com/langchain-ai/langchain) |
`1.1.1` | `1.1.6` |
| [langchain-huggingface](https://github.com/langchain-ai/langchain) |
`1.2.1` | `1.2.2` |
| [langchain-groq](https://github.com/langchain-ai/langchain) | `1.1.2`
| `1.1.3` |
| [langchain-aws](https://github.com/langchain-ai/langchain-aws) |
`1.3.1` | `1.7.3` |
| [langchain-deepseek](https://github.com/langchain-ai/langchain) |
`1.0.1` | `1.1.0` |
| [langchain-xai](https://github.com/langchain-ai/langchain) | `1.2.2` |
`1.3.0` |
| [langchain-perplexity](https://github.com/langchain-ai/langchain) |
`1.1.0` | `1.4.0` |
| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` |
`7.1.0` |
| [vcrpy](https://github.com/kevin1024/vcrpy) | `8.2.1` | `8.3.0` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.1.2` | `2.3.0`
|
| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2`
| `1.2.3` |
| [mypy-protobuf](https://github.com/nipunn1313/mypy-protobuf) | `5.0.0`
| `5.1.0` |
| [types-pytz](https://github.com/python/typeshed) | `2026.1.1.20260408`
| `2026.3.1.20260727` |
| [fastapi](https://github.com/fastapi/fastapi) | `0.135.1` | `0.141.1`
|
| [playwright](https://github.com/microsoft/playwright-python) |
`1.58.0` | `1.62.0` |

Bumps the minor-and-patch group with 27 updates in the
/libs/langchain_v1 directory:

| Package | From | To |
| --- | --- | --- |
| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4`
|
| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.16.4` |
| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |
| [syrupy](https://github.com/syrupy-project/syrupy) | `5.1.0` | `5.5.3`
|
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) |
`1.3.0` | `1.4.0` |
| [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0`
| `0.8.1` |
| [blockbuster](https://github.com/cbornet/blockbuster) | `1.5.26` |
`1.5.27` |
|
[langchain-community](https://github.com/langchain-ai/langchain-community)
| `0.4.1` | `0.4.2` |
| [langchain-azure-ai](https://github.com/langchain-ai/langchain-azure)
| `1.0.62` | `1.2.8` |
|
[langchain-google-vertexai](https://github.com/langchain-ai/langchain-google)
| `3.2.3` | `3.2.4` |
|
[langchain-google-genai](https://github.com/langchain-ai/langchain-google)
| `4.2.1` | `4.3.5` |
| [langchain-fireworks](https://github.com/langchain-ai/langchain) |
`1.1.0` | `1.6.0` |
| [langchain-ollama](https://github.com/langchain-ai/langchain) |
`1.0.1` | `1.1.0` |
|
[langchain-together](https://github.com/langchain-ai/langchain-together)
| `0.0.2.post1` | `0.4.0` |
| [langchain-mistralai](https://github.com/langchain-ai/langchain) |
`1.1.1` | `1.1.6` |
| [langchain-huggingface](https://github.com/langchain-ai/langchain) |
`1.2.1` | `1.2.2` |
| [langchain-groq](https://github.com/langchain-ai/langchain) | `1.1.2`
| `1.1.3` |
| [langchain-aws](https://github.com/langchain-ai/langchain-aws) |
`1.3.1` | `1.7.3` |
| [langchain-deepseek](https://github.com/langchain-ai/langchain) |
`1.0.1` | `1.1.0` |
| [langchain-xai](https://github.com/langchain-ai/langchain) | `1.2.2` |
`1.3.0` |
| [langchain-perplexity](https://github.com/langchain-ai/langchain) |
`1.1.0` | `1.4.0` |
| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` |
`7.1.0` |
| [vcrpy](https://github.com/kevin1024/vcrpy) | `8.2.1` | `8.3.0` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.1.2` | `2.3.0`
|
| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2`
| `1.2.3` |
| [langchain-baseten](https://github.com/basetenlabs/langchain-baseten)
| `0.2.0` | `0.2.3` |
Updates `langsmith` from 0.8.18 to 0.11.1

Made by [Open
SWE](https://openswe.vercel.app/agents/9fbadc55-1050-53d9-b978-f64592c56110)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-24 22:31:12 +00:00
71c8902c4b chore: bump the minor-and-patch group across 3 directories with 8 updates (#39863)
Updates compatible minor and patch dependencies across `model-profiles`,
`standard-tests`, and `text-splitters`.

The `text-splitters` lockfile retains spaCy 3.8.13 because 3.8.15 cannot
install on Python 3.14, and retains ty 0.0.64 because 0.0.73 introduces
new diagnostics in existing NLTK and spaCy integrations. The compatible
pytest-socket, Ruff, NLTK, Transformers, and tiktoken updates remain
included.

Made by [Open
SWE](https://openswe.vercel.app/agents/0dfa86b3-bffc-58fa-b47a-d18f508e848f)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-24 15:28:45 -07:00
Eugene Yurtsev 11ab508b3d feat(anthropic): surface gateway response metadata (#39809)
The LangSmith gateway returns resolved provider and model metadata in
response headers. This PR propagates the gateway metadata for tracing
purposes.

<img width="1720" height="1172" alt="image"
src="https://github.com/user-attachments/assets/2ce9906e-919f-4d51-b6ca-dd7d7b49d702"
/>

Created with [Deep Agents
CLI](https://docs.langchain.com/oss/python/deepagents/cli/overview)
using gpt-5.6-terra (provider: openai).
2026-08-24 14:16:41 -04:00
langchain-oss-model-profiles[bot]andmdrxy a2024abe50 chore(model-profiles): refresh model profile data (#39875)
Automated refresh of model profile data for all in-monorepo partner
integrations via `langchain-profiles refresh`.

🤖 Generated by the [`refresh_model_profiles`
workflow](https://github.com/langchain-ai/langchain/blob/master/.github/workflows/refresh_model_profiles.yml).

## Summary of changes

**0 added · 0 removed · 7 changed** across 1 provider(s).

### openrouter

**✏️ 7 changed**
- `deepseek/deepseek-v4-flash-0731`: max output tokens 384,000 → 131,072
- `qwen/qwen3.5-397b-a17b`: max output tokens 65,536 → 262,144
- `qwen/qwen3.6-27b`: max output tokens 262,144 → 81,920
- `thedrummer/unslopnemo-12b`: max output tokens 1,024,000 → 32,768
- `thinkingmachines/inkling-small`: removed structured output
- `undi95/remm-slerp-l2-13b`: max output tokens 6,144 → 4,096
- `~deepseek/deepseek-v4-flash-latest`: max output tokens 262,144 →
1,048,576

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-24 09:18:08 -04:00
dependabot[bot] c4c57d35bf chore: bump the major group across 2 directories with 2 updates (#39864)
Bumps the major group with 1 update in the /libs/standard-tests
directory:
[pytest-codspeed](https://github.com/CodSpeedHQ/pytest-codspeed).
Bumps the major group with 1 update in the /libs/text-splitters
directory:
[sentence-transformers](https://github.com/huggingface/sentence-transformers).

Updates `pytest-codspeed` from 4.3.0 to 5.0.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/releases">pytest-codspeed's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.3</h2>
<h2>What's Changed</h2>
<ul>
<li>chore: move callgrind skip obj API to instrument-hooks by <a
href="https://github.com/not-matthias"><code>@​not-matthias</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/123">CodSpeedHQ/pytest-codspeed#123</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.2...v5.0.3">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.2...v5.0.3</a></p>
<h2>v5.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: skip Python runtime objects in callgrind by <a
href="https://github.com/not-matthias"><code>@​not-matthias</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/122">CodSpeedHQ/pytest-codspeed#122</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.1...v5.0.2">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.1...v5.0.2</a></p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>build: enable free-threaded wheels in cibuildwheel by <a
href="https://github.com/art049"><code>@​art049</code></a> in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/121">CodSpeedHQ/pytest-codspeed#121</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.0...v5.0.1">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.0...v5.0.1</a></p>
<h2>v5.0.0</h2>
<h2>Highlights</h2>
<p>MacOS walltime profiling is now available with the <a
href="https://github.com/CodSpeedHQ/codspeed/releases/tag/v4.16.1">codspeed
cli v4.16.1</a> and above.</p>
<p><code>pytest-codspeed</code> can now be used in free threaded mode.
This has been tested with 3.14t and 3.15t.
For this, we have dropped usage of <code>cffi</code> in favor of the
native extension support.</p>
<h2>What's Changed</h2>
<ul>
<li>chore: bump instrument-hooks by <a
href="https://github.com/not-matthias"><code>@​not-matthias</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/119">CodSpeedHQ/pytest-codspeed#119</a></li>
<li>Remove CFFI in favor of native extension to support free-threaded
mode by <a
href="https://github.com/adriencaccia"><code>@​adriencaccia</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/96">CodSpeedHQ/pytest-codspeed#96</a></li>
<li>feat(hooks): declare native extension free-thread safe by <a
href="https://github.com/art049"><code>@​art049</code></a> in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/120">CodSpeedHQ/pytest-codspeed#120</a></li>
<li>feat: use instrument-hook markers in walltime by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/118">CodSpeedHQ/pytest-codspeed#118</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.5.0...v5.0.0">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.5.0...v5.0.0</a></p>
<h2>v4.5.0</h2>
<h2>What's Changed</h2>
<p>This release adds first support for macOS walltime.</p>
<p>Please note that profiling and other instruments are not yet
available on macOS and will come in a later update.</p>
<ul>
<li>Support macos walltime without profiling in pytest-codspeed by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/117">CodSpeedHQ/pytest-codspeed#117</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.4.0...v4.5.0">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.4.0...v4.5.0</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/blob/master/CHANGELOG.md">pytest-codspeed's
changelog</a>.</em></p>
<blockquote>
<h2>[5.0.3] - 2026-05-22</h2>
<h3><!-- raw HTML omitted -->🏗️ Refactor</h3>
<ul>
<li>Use instrument_hooks_callgrind_add_obj_skip from C API by <a
href="https://github.com/not-matthias"><code>@​not-matthias</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/123">#123</a></li>
</ul>
<h2>[5.0.2] - 2026-05-14</h2>
<h3><!-- raw HTML omitted -->🚀 Features</h3>
<ul>
<li>Skip Python runtime objects in callgrind by <a
href="https://github.com/not-matthias"><code>@​not-matthias</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/122">#122</a></li>
</ul>
<h2>[5.0.1] - 2026-05-13</h2>
<h3><!-- raw HTML omitted -->💼 Other</h3>
<ul>
<li>Enable free-threaded wheels in cibuildwheel (<a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/121">#121</a>)
by <a href="https://github.com/art049"><code>@​art049</code></a> in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/121">#121</a></li>
</ul>
<h2>[5.0.0] - 2026-05-13</h2>
<h3><!-- raw HTML omitted -->🚀 Features</h3>
<ul>
<li>Use instrument_hooks markers in walltime by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a></li>
<li>Declare native extension free-thread safe (<a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/120">#120</a>)
by <a href="https://github.com/art049"><code>@​art049</code></a> in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/120">#120</a></li>
<li>Remove cffi in favor of native extension by <a
href="https://github.com/adriencaccia"><code>@​adriencaccia</code></a></li>
</ul>
<h3><!-- raw HTML omitted -->⚡ Performance</h3>
<ul>
<li>Bind callgrind start/stop directly to avoid extra frame by <a
href="https://github.com/art049"><code>@​art049</code></a> in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/96">#96</a></li>
</ul>
<h3><!-- raw HTML omitted -->⚙️ Internals</h3>
<ul>
<li>Ignore common compilation warnings for instrument-hooks by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/118">#118</a></li>
<li>Use unsigned bash in the macos test by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a></li>
<li>Bump pinned uv version to 0.11.14 by <a
href="https://github.com/art049"><code>@​art049</code></a></li>
<li>Add python 3.15 and 3.15t to test matrix by <a
href="https://github.com/art049"><code>@​art049</code></a></li>
<li>Add 3.14.t in test suite by <a
href="https://github.com/adriencaccia"><code>@​adriencaccia</code></a></li>
<li>Bump instrument-hooks (<a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/119">#119</a>)
by <a
href="https://github.com/not-matthias"><code>@​not-matthias</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/119">#119</a></li>
</ul>
<h2>[4.5.0] - 2026-04-28</h2>
<h3><!-- raw HTML omitted -->⚙️ Internals</h3>
<ul>
<li>Pre-build macos binary by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/117">#117</a></li>
<li>Bump instrument-hooks submodule to use int32_t as pid by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a></li>
<li>Add macos integration test by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a></li>
</ul>
<h2>[4.4.0] - 2026-04-14</h2>
<h3><!-- raw HTML omitted -->🚀 Features</h3>
<ul>
<li>Collect Python toolchain information via instrument hooks
environment API by <a
href="https://github.com/GuillaumeLagrange"><code>@​GuillaumeLagrange</code></a>
in <a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/108">#108</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/b2d12d8e96704c82b449d8668818a754ede45c66"><code>b2d12d8</code></a>
Release v5.0.3 🚀</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/31447b7b6fba4ff9a5bdf5c0d046b7d8936cab5c"><code>31447b7</code></a>
refactor: use instrument_hooks_callgrind_add_obj_skip from C API</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/fc33d2098d7a1296b320b30e9ed14c270ab714b8"><code>fc33d20</code></a>
Release v5.0.2 🚀</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/3bbabe482458518555fa9939902410ae8cf1baa8"><code>3bbabe4</code></a>
feat: skip Python runtime objects in callgrind</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/d4d9dc6ca011bbf6d21640e7c370d3d181f944cf"><code>d4d9dc6</code></a>
Release v5.0.1 🚀</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/ad709a5904ea756c577dcfa91caff67c3cf8777a"><code>ad709a5</code></a>
build: enable free-threaded wheels in cibuildwheel (<a
href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/121">#121</a>)</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/080d620ba846adaf6e1b70b96e525e773438034b"><code>080d620</code></a>
Release v5.0.0 🚀</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/befdebfba2cdebddd84d6377f8d14d72e0ad4086"><code>befdebf</code></a>
chore: ignore common compilation warnings for instrument-hooks</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/ee98055fb69fba4cc62c3822ef3df4c7002352d3"><code>ee98055</code></a>
chore: use unsigned bash in the macos test</li>
<li><a
href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/5a205c8822ca16db400ef25a5d8b51a65c875669"><code>5a205c8</code></a>
feat: use instrument_hooks markers in walltime</li>
<li>Additional commits viewable in <a
href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.3.0...v5.0.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `sentence-transformers` from 5.6.1 to 6.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/huggingface/sentence-transformers/releases">sentence-transformers's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0 - MultiVectorEncoder for ColBERT &amp; late interaction
models, transformers v5, float32 scoring, faster training &amp;
encoding</h2>
<p>This major release introduces Multi-Vector Embedding models, also
known as late interaction or ColBERT-style models, as a fourth model
type alongside <code>SentenceTransformer</code>,
<code>CrossEncoder</code>, and <code>SparseEncoder</code>. Going
forward, you'll be able to use Sentence Transformers for training,
inferencing, and interpreting Multi-Vector Embedding models.</p>
<p>It also modernizes the dependency floors to <code>transformers</code>
v5, fixes a class of silent scoring bugs caused by half precision, and
speeds up both training and encoding.</p>
<p>Install this version with</p>
<pre lang="bash"><code># Training + Inference
pip install sentence-transformers[train]==6.0.0
<h1>Inference only, use one of:</h1>
<p>pip install sentence-transformers==6.0.0
pip install sentence-transformers[onnx-gpu]==6.0.0
pip install sentence-transformers[onnx]==6.0.0
pip install sentence-transformers[openvino]==6.0.0</p>
<h1>Multimodal dependencies (optional):</h1>
<p>pip install sentence-transformers[image]==6.0.0
pip install sentence-transformers[audio]==6.0.0
pip install sentence-transformers[video]==6.0.0</p>
<h1>Or combine as needed:</h1>
<p>pip install sentence-transformers[train,onnx,image]==6.0.0
</code></pre></p>
<blockquote>
<p>[!TIP]
Our <a
href="https://huggingface.co/blog/multi-vector-encoder">Multi-Vector
(Late Interaction) Embedding Models with Sentence Transformers
blogpost</a> is an excellent place to learn about multi-vector models:
loading the various checkpoint formats, encoding and scoring, plugging
them into a search stack, running them on page images, and keeping the
index affordable.</p>
</blockquote>
<blockquote>
<p>[!WARNING]
This is a major release with breaking changes. Upgrading from v5.x to
v6.0 may require code updates. The changes marked 🚨 below are the ones
most likely to affect you, and the <a
href="https://sbert.net/docs/migration_guide.html">Migration Guide</a>
has the full list. If you run into issues when upgrading, feel free to
open <a
href="https://github.com/huggingface/sentence-transformers/issues/new">an
issue</a>.</p>
</blockquote>
<h2>MultiVectorEncoder: ColBERT-style late interaction models (<a
href="https://redirect.github.com/huggingface/sentence-transformers/issues/3794">#3794</a>)</h2>
<p>Sentence Transformers v6.0 introduces
<code>MultiVectorEncoder</code>, for ColBERT-style late interaction
retrieval. Where a regular embedding model compresses a whole text into
one vector, a multi-vector model keeps <strong>one vector per
token</strong> and scores query against document with the MaxSim
operator. That preserves token-level matching information that a single
vector has to average away, which usually means stronger retrieval at
the cost of a bigger index. It is also the state of the art for visual
document retrieval, where a text query is matched against page images
directly, with no OCR step in between.</p>
<p>Any <a href="https://github.com/lightonai/pylate">PyLate</a>
checkpoint and any <a
href="https://github.com/stanford-futuredata/ColBERT">Stanford-NLP
ColBERT</a> checkpoint loads straight into it, and <a
href="https://github.com/illuin-tech/colpali">colpali-engine</a> models
for visual document retrieval work too, through the same familiar API
you already use for dense, sparse, and reranker models.</p>
<pre lang="python"><code>from sentence_transformers import
MultiVectorEncoder
<h1>Download from the 🤗 Hub</h1>
<p>model = MultiVectorEncoder(&quot;lightonai/LateOn&quot;)</p>
<p>query_embeddings = model.encode_query([&quot;Which planet is known as
the Red Planet?&quot;])
document_embeddings = model.encode_document([
&quot;Venus is often called Earth's twin because of its similar size and
proximity.&quot;,
&quot;Mars, known for its reddish appearance, is often referred to as
the Red Planet.&quot;,
&quot;Jupiter, the largest planet in our solar system, has a prominent
red spot.&quot;,
&quot;Saturn, famous for its rings, is sometimes mistaken for the Red
Planet.&quot;,
&lt;/tr&gt;&lt;/table&gt;
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/56c9548fd8dbef8ba492f57ac04366900e36f5d4"><code>56c9548</code></a>
[<code>docs</code>] Remove revision from EVIE now that it's integrated
(<a
href="https://redirect.github.com/huggingface/sentence-transformers/issues/3951">#3951</a>)</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/aa791ebd6dc9273f6bd4537b4f3a985b8262c6c7"><code>aa791eb</code></a>
Release v6.0.0</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/8b332d13155132c8c84d8b1a0c6f252503e6e818"><code>8b332d1</code></a>
tests: Fix the pretrained MultiVectorEncoder tests for device tensors
and Hub...</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/a03cfd60531eb1f67875208ff3fe3a551e6d3cb8"><code>a03cfd6</code></a>
docs: Point cross-references at their documented targets (<a
href="https://redirect.github.com/huggingface/sentence-transformers/issues/3947">#3947</a>)</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/310ed7bee7b7a421e0555b4e1356a0816e35b3ec"><code>310ed7b</code></a>
docs: Rank the pretrained MultiVectorEncoder models by NanoBEIR and
NanoViDoR...</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/345c53844c069d791c7d78eb344bc64c5d45794b"><code>345c538</code></a>
Speed up multi-vector padding and numpy to tensor conversion (<a
href="https://redirect.github.com/huggingface/sentence-transformers/issues/3942">#3942</a>)</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/8d62fa21bebc70ef6d5bf019024da9dfc858fd4d"><code>8d62fa2</code></a>
[<code>v6</code>] Return tensors on the model device from
MultiVectorEncoder encoding (#...</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/8a73e35a5ef98730e086d6e2275835b5ed36344e"><code>8a73e35</code></a>
[<code>v6</code>] Keep the prompt-excluded mask out of the feature dicts
(<a
href="https://redirect.github.com/huggingface/sentence-transformers/issues/3944">#3944</a>)</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/c8d2c0c370f0d2993e3574a5e9d1bc4333cdcdcb"><code>c8d2c0c</code></a>
[<code>v6</code>] Extend the merged column forward to the
SentenceTransformer losses (<a
href="https://redirect.github.com/huggingface/sentence-transformers/issues/3">#3</a>...</li>
<li><a
href="https://github.com/huggingface/sentence-transformers/commit/adc09fca3889c581df8c9f3195a2a7ceccfe2828"><code>adc09fc</code></a>
[<code>v6</code>] Fix XTR input validation, padding masks, and integer
embedding support...</li>
<li>Additional commits viewable in <a
href="https://github.com/huggingface/sentence-transformers/compare/v5.6.1...v6.0.0">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>
2026-08-24 00:23:28 -04:00
John Kennedyandlangsmith-fleet[bot] b877072300 docs: add Corridor agent instructions (#39839)
Add a repository-wide `<corridor>` block to `AGENTS.md` requiring agents
to plan first and run Corridor `analyzePlan` before generating or
modifying code.

This mirrors langchain-ai/deepagents#5740. The tags are explicit and
balanced so Corridor-specific guidance remains scoped.

---

Validation: `git diff --check` and a tag-balance assertion.

---------

Co-authored-by: langsmith-fleet[bot] <langsmith-fleet[bot]@users.noreply.github.com>
2026-08-24 00:23:14 -04:00
dependabot[bot] 0884d2c121 chore: bump python from 3.11-slim-bookworm to 3.14-slim-bookworm in /libs/langchain in the minor-and-patch group across 1 directory (#39862)
Bumps the minor-and-patch group with 1 update in the /libs/langchain
directory: python.

Updates `python` from 3.11-slim-bookworm to 3.14-slim-bookworm


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=python&package-manager=docker&previous-version=3.11-slim-bookworm&new-version=3.14-slim-bookworm)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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>
2026-08-24 00:23:02 -04:00
dependabot[bot] 393e0f1e6c chore: bump types-toml from 0.10.8.20260408 to 0.10.8.20260518 in /libs/model-profiles (#39865)
Bumps [types-toml](https://github.com/python/typeshed) from
0.10.8.20260408 to 0.10.8.20260518.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/python/typeshed/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-toml&package-manager=uv&previous-version=0.10.8.20260408&new-version=0.10.8.20260518)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 00:22:40 -04:00
dependabot[bot] e858006135 chore: bump types-pyyaml from 6.0.12.20260408 to 6.0.12.20260815 in /libs/standard-tests (#39866)
Bumps [types-pyyaml](https://github.com/python/typeshed) from
6.0.12.20260408 to 6.0.12.20260815.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/python/typeshed/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-pyyaml&package-manager=uv&previous-version=6.0.12.20260408&new-version=6.0.12.20260815)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 00:22:37 -04:00
dependabot[bot] 1819267779 chore: bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/text-splitters (#39867)
Bumps [types-requests](https://github.com/python/typeshed) from
2.33.0.20260518 to 2.33.0.20260712.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/python/typeshed/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=types-requests&package-manager=uv&previous-version=2.33.0.20260518&new-version=2.33.0.20260712)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 00:22:34 -04:00
John Kennedyandlangsmith-fleet[bot] 5a273e0c38 chore(infra): cover Docker dependencies with Dependabot (#39693)
## Summary

- add monthly Dependabot coverage for the maintained
development-container Compose file
- add monthly Dependabot coverage for the LangChain development
Dockerfile
- keep major updates separate from minor and patch updates

## Test Plan

- parsed `.github/dependabot.yml` with Ruby `YAML.safe_load_file`
- ran `git diff --check`
- verified the staged diff contains only `.github/dependabot.yml`

This contribution was prepared with AI-agent assistance.

Co-authored-by: langsmith-fleet[bot] <langsmith-fleet[bot]@users.noreply.github.com>
2026-08-23 15:08:18 -04:00
langchain-oss-model-profiles[bot]andmdrxy fcbacd09a3 chore(model-profiles): refresh model profile data (#39844)
Automated refresh of model profile data for all in-monorepo partner
integrations via `langchain-profiles refresh`.

🤖 Generated by the [`refresh_model_profiles`
workflow](https://github.com/langchain-ai/langchain/blob/master/.github/workflows/refresh_model_profiles.yml).

## Summary of changes

**6 added · 2 removed · 15 changed** across 4 provider(s).

<details>
<summary>deepseek</summary>

**➕ 1 added**
- `deepseek-v4-flash-vision-exp` — 1,000,000 ctx, 384,000 out,
text+image in, reasoning, tools

**✏️ 1 changed**
- `deepseek-v4-pro`: last updated `2026-08-12` → `2026-08-22`; added
open weights

</details>

<details>
<summary>fireworks-ai</summary>

**✏️ 1 changed**
- `accounts/fireworks/models/deepseek-v4-pro-0813`: last updated
`2026-08-12` → `2026-08-22`; added open weights

</details>

<details>
<summary>huggingface</summary>

**✏️ 1 changed**
- `deepseek-ai/DeepSeek-V4-Pro-0813`: last updated `2026-08-12` →
`2026-08-22`

</details>

<details>
<summary>openrouter</summary>

**➕ 5 added**
- `deepseek/deepseek-v4-flash-vision-exp` — 1,048,576 ctx, 384,000 out,
text+image in, reasoning, tools
- `meta/muse-spark-1.2-contributor` — 1,048,576 ctx, 1,048,576 out,
text+image+audio+video+pdf in, reasoning, tools
- `tencent/hy-mt2-7b` — 8,192 ctx, 4,096 out
- `thinkingmachines/inkling-small:free` — 262,144 ctx, 262,144 out,
text+image+audio in, reasoning, tools
- `thinkingmachines/inkling:free` — 262,144 ctx, 262,144 out,
text+image+audio in, reasoning, tools

**➖ 2 removed**
- `deepcogito/cogito-v2.1-671b`
- `openai/gpt-oss-20b:free`

**✏️ 12 changed**
- `deepseek/deepseek-chat-v3.1`: max output tokens 32,768 → 161,000
- `deepseek/deepseek-v3.2`: max output tokens 65,536 → 163,840
- `deepseek/deepseek-v4-flash-0731`: max output tokens 393,216 → 384,000
- `deepseek/deepseek-v4-pro`: max output tokens 393,216 → 384,000
- `deepseek/deepseek-v4-pro-0813`: last updated `2026-08-12` →
`2026-08-22`; added open weights
- `minimax/minimax-m2.5`: max output tokens 32,768 → 128,000
- `mistralai/mistral-small-3.2-24b-instruct`: max input tokens 256,000 →
131,072
- `qwen/qwen3-30b-a3b`: max output tokens 8,192 → 16,384
- `qwen/qwen3-next-80b-a3b-instruct`: max output tokens 16,384 → 262,144
- `qwen/qwen3.5-122b-a10b`: max output tokens 65,536 → 262,144
- `qwen/qwen3.8-2.4t-a95b`: max output tokens 262,144 → 131,072
- `~deepseek/deepseek-v4-flash-latest`: max output tokens 1,048,576 →
262,144

</details>

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-23 15:07:46 -04:00
Eugene Yurtsev 339eaa6f86 release(core): 1.6.1 (#39832)
Release 1.6.1
2026-08-21 18:38:03 +00:00
Eugene Yurtsev ed0ad742e9 feat(core): propagate gateway information on error path (#39829)
This PR plumbs through gateway metadata information for exceptions

<img width="2380" height="956" alt="image"
src="https://github.com/user-attachments/assets/c3b3644e-3022-421c-b447-6ab6603021e4"
/>
2026-08-21 14:33:30 -04:00
andrewmadson-pplx d8237e7492 docs(perplexity): update ChatPerplexity docstring examples for Agent API (#39831)
Replace legacy sonar/sonar-pro examples in the ChatPerplexity docstring
with the Agent API pattern that 1.4.1 supports:

- use_responses_api=True with model_kwargs.preset + built-in web_search
tool
- explicit Agent API model IDs such as openai/gpt-5.6-sol
- pointer to the six current presets (fast, low, medium, high, xhigh,
wide-research) and to the Agent API models catalog

The rendered library docstring is what users see from IDEs and
help(ChatPerplexity), so this keeps it in sync with what 1.4.1 actually
routes to.

Fixes #39775
2026-08-21 14:30:33 -04:00
langchain-oss-model-profiles[bot]andmdrxy 2a91b2f584 chore(model-profiles): refresh model profile data (#39824)
Automated refresh of model profile data for all in-monorepo partner
integrations via `langchain-profiles refresh`.

🤖 Generated by the [`refresh_model_profiles`
workflow](https://github.com/langchain-ai/langchain/blob/master/.github/workflows/refresh_model_profiles.yml).

## Summary of changes

**5 added · 0 removed · 9 changed** across 1 provider(s).

### openrouter

**➕ 5 added**
- `mancer/weaver` — 8,000 ctx, 6,000 out
- `mistralai/ministral-8b` — 128,000 ctx, 128,000 out
- `stealth/ox-alpha` — 1,048,576 ctx, 131,072 out, text+image+video in,
reasoning, tools
- `tencent/hy-mt2-1.8b` — 8,192 ctx, 4,096 out
- `tencent/hy-mt2-30b-a3b` — 8,192 ctx, 4,096 out

**✏️ 9 changed**
- `deepseek/deepseek-v3.1-terminus`: max output tokens 163,840 → 32,768
- `google/gemma-4-26b-a4b-it:free`: removed structured output
- `google/gemma-4-31b-it`: max output tokens 16,384 → 262,144
- `liquid/lfm-2.5-2.6b:free`: max input tokens 128,000 → 65,536
- `minimax/minimax-m2.5`: max output tokens 196,608 → 32,768
- `nvidia/nemotron-3.5-lightning`: max input tokens 1,000,000 → 262,144
- `qwen/qwen3.5-122b-a10b`: max output tokens 262,144 → 65,536
- `thinkingmachines/inkling-small`: max input tokens 524,288 → 1,048,576
- `~deepseek/deepseek-v4-flash-latest`: max output tokens 262,144 →
1,048,576

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-21 11:25:06 -04:00
ccurme 5feb55b341 release(perplexity): 1.4.1 (#39826) langchain-perplexity==1.4.1 2026-08-21 10:03:51 -04:00
andrewmadson-pplx 09a917e1a3 fix(perplexity): include type="message" on Responses input items (#39774) 2026-08-20 16:06:14 -04:00
DO999www 1a84302146 docs(standard-tests): fix grammar typo in README (#39802) 2026-08-20 15:42:03 -04:00
ccurme ca3acde9b4 release(fireworks): 1.6.0 (#39810) langchain-fireworks==1.6.0 2026-08-20 13:41:26 -04:00
Noah Dylan b8d1ab5946 feat(fireworks): add document reranking (#39732) 2026-08-20 12:57:26 -04:00
langchain-oss-model-profiles[bot]andmdrxy 8df1265122 chore(model-profiles): refresh model profile data (#39789)
Automated refresh of model profile data for all in-monorepo partner
integrations via `langchain-profiles refresh`.

🤖 Generated by the [`refresh_model_profiles`
workflow](https://github.com/langchain-ai/langchain/blob/master/.github/workflows/refresh_model_profiles.yml).

## Summary of changes

**2 added · 2 removed · 6 changed** across 2 provider(s).

<details>
<summary>huggingface</summary>

**➕ 1 added**
- `zai-org/GLM-4.6V-Flash` — 131,072 ctx, 32,768 out, text+image in,
reasoning, tools

</details>

<details>
<summary>openrouter</summary>

**➕ 1 added**
- `~z-ai/glm-latest` — 1,048,576 ctx, 131,072 out, reasoning, tools

**➖ 2 removed**
- `ai21/jamba-large-1.7`
- `mancer/weaver`

**✏️ 6 changed**
- `deepseek/deepseek-chat-v3-0324`: max output tokens 65,536 → 163,840
- `deepseek/deepseek-v4-pro`: max output tokens 384,000 → 393,216
- `google/gemini-3.1-flash-lite-image`: max output tokens 66,000 →
65,536
- `qwen/qwen3.5-35b-a3b`: max output tokens 65,536 → 262,144
- `qwen/qwen3.6-27b`: max output tokens 65,536 → 262,144
- `qwen/qwen3.8-27b`: max input tokens 262,144 → 1,000,000

</details>

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-20 11:00:20 -04:00
ccurme 86ae76ad94 release(langchain): 1.3.16 (#39806) langchain==1.3.16 2026-08-20 10:32:02 -04:00
ccurme e727daaded fix(fireworks): filter invalid tool calls from v1 content (#39805) 2026-08-20 10:24:38 -04:00
ccurme 9bdaf437b6 release(anthropic): 1.6.1 (#39804) langchain-anthropic==1.6.1 2026-08-20 10:01:13 -04:00
ccurmeandopen-swe[bot] a36ddd46fe fix(anthropic): filter invalid tool calls from v1 content (#39803)
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-20 09:56:22 -04:00
ccurme 3478c28ef2 release(anthropic): 1.6.0 (#39763) langchain-anthropic==1.6.0 langchain-openai==1.6.0 2026-08-19 17:35:56 -04:00
ccurme 420dfc9451 release(openai): 1.6.0 (#39762) 2026-08-19 17:35:44 -04:00
ccurme 85602c3676 release(core): 1.6.0 (#39760) langchain-core==1.6.0 2026-08-19 11:51:29 -04:00
Mason Daugherty 5c3538e83a fix(core): resolve postponed annotations in StructuredTool._injected_args_keys (#39602)
Closes #39568

Related: #33999

> [!WARNING]
> This PR expands the surface area for arbitrary code execution during
tool setup. Detecting injected arguments now requires calling
`typing.get_type_hints`, which *evaluates* string annotations (e.g.
those created by `from __future__ import annotations` or quoted forward
references) as Python expressions. As with existing type-hint resolution
paths, wrapped tool callables must be trusted application code — never
point `StructuredTool` at a callable whose module or annotations come
from an untrusted source.

Tools with a custom `args_schema` could drop injected arguments such as
`ToolRuntime` when the wrapped function's module uses postponed
annotations. The injected value was removed during input validation, so
an otherwise valid tool call failed at invocation.

---

`StructuredTool` now resolves annotations with
`typing.get_type_hints(..., include_extras=True)` before identifying
injected parameters. If an unrelated forward reference prevents
resolving the complete signature, each string annotation is resolved
independently so resolvable injected arguments are still preserved.
Callable wrappers resolve annotations from the source of their effective
signature, honoring `__wrapped__` and `__signature__`, while other
callable objects use their `__call__` method. `functools.partial`
callables retain their effective signature so already-bound injected
arguments remain excluded.

<details>
<summary><b>Before/after:</b> injected arg dropped under <code>from
__future__ import annotations</code></summary>

With postponed annotations, every annotation is stored as a plain
string. Previously `_injected_args_keys` read the raw `signature()`
annotations, so `runtime` was never recognized as injected and was
stripped during `args_schema` validation:

```python
from __future__ import annotations  # all annotations become strings

from pydantic import BaseModel
from langchain_core.tools import tool, ToolRuntime

class InputSchema(BaseModel):
    query: str

@tool(args_schema=InputSchema)
def my_tool(query: str, runtime: ToolRuntime) -> str:
    """Echo the query."""
    return query
```

| | Behavior |
|---|---|
| **Before** | `runtime` not detected as injected → removed during
validation → tool call fails at invocation |
| **After** | `runtime` detected via `get_type_hints` → survives
validation and is injected at invocation; hidden from the model-facing
schema |

</details>

<details>
<summary><b>Before/after:</b> one unresolvable annotation disabling
injection for the whole signature</summary>

`get_type_hints` resolves *all* annotations at once and raises on the
first failure. A single unresolvable forward reference — even on an
unrelated parameter — previously meant *no* hints were available, so the
resolvable injected arg was dropped too:

```python
@tool(args_schema=InputSchema)
def my_tool(
    query: "SomeTypeThatDoesNotExist",  # unresolvable forward reference
    runtime: "ToolRuntime",             # resolvable injected arg
) -> str:
    """Echo the query."""
    return query
```

| | Behavior |
|---|---|
| **Before** | `get_type_hints` raises on `query` → all hints discarded
→ `runtime` not detected as injected |
| **After** | each annotation is retried independently → `query` falls
back to its raw string (not injected), `runtime` still resolves and is
injected |

</details>

<details>
<summary><b>Before/after:</b> callable objects and wrappers</summary>

For non-function callables, the annotations now come from the source of
the *effective* signature: `__call__` for callable objects, and the
wrapped function for wrappers (`__wrapped__` / `__signature__`):

```python
class MyCallableTool:
    def __call__(self, query: str, runtime: ToolRuntime) -> str:
        return query

tool = StructuredTool.from_function(
    func=MyCallableTool(),
    name="my_tool",
    description="Echo the query.",
    args_schema=InputSchema,
)
```

| | Behavior |
|---|---|
| **Before** | annotations read from the wrong callable (or left as
unresolved strings) → `runtime` dropped |
| **After** | annotations resolved from `__call__` / the unwrapped
function → `runtime` injected correctly |

</details>

<details>
<summary><b>Unchanged:</b> <code>functools.partial</code> with an
already-bound injected arg</summary>

A `partial` that already binds an injected argument keeps its effective
signature — the bound parameter is absent, so nothing is re-injected
over it:

```python
from functools import partial

def fn(x: int, runtime: ToolRuntime, y: int) -> int:
    return x + y

tool = StructuredTool.from_function(
    func=partial(fn, 1, bound_runtime),
    name="fn",
    description="Add two numbers.",
    args_schema=InputSchema,
)
```

**Before & after:** `runtime` is already bound by the `partial` →
excluded from the signature → the bound value is used as-is

</details>

Co-authored-by: Soban Shankar
<165470467+Soban-2004@users.noreply.github.com>
2026-08-19 11:38:30 -04:00
ccurme 9984a87fa5 feat(core): add standard model exception types (#39538) 2026-08-19 11:21:32 -04:00
langchain-oss-model-profiles[bot]andmdrxy b3e9eef13c chore(model-profiles): refresh model profile data (#39751)
Automated refresh of model profile data for all in-monorepo partner
integrations via `langchain-profiles refresh`.

🤖 Generated by the [`refresh_model_profiles`
workflow](https://github.com/langchain-ai/langchain/blob/master/.github/workflows/refresh_model_profiles.yml).

## Summary of changes

**1 added · 0 removed · 6 changed** across 1 provider(s).

### openrouter

**➕ 1 added**
- `z-ai/glm-5.3` — 1,048,576 ctx, 131,072 out, reasoning, tools

**✏️ 6 changed**
- `google/gemma-4-31b-it`: max output tokens 262,144 → 16,384
- `qwen/qwen3-next-80b-a3b-instruct`: max output tokens 262,144 → 16,384
- `qwen/qwen3.5-122b-a10b`: max output tokens 81,920 → 262,144
- `qwen/qwen3.6-27b`: max output tokens 262,144 → 65,536
- `z-ai/glm-5.2:free`: max input tokens 128,000 → 256,000; max output
tokens 128,000 → 256,000; added structured output; added tool calling
- `~deepseek/deepseek-v4-flash-latest`: max output tokens 384,000 →
262,144

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-19 11:12:03 -04:00
gaoanze888 ded2a1fb3c fix(core): allow deserializing RunnablePick (#39753) 2026-08-19 10:45:58 -04:00
04ae7447d7 fix(core): make convert_to_openai_function handle callables and non-dict mappings (#39750)
Co-authored-by: gaoanze <gaoanze@meituan.com>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
2026-08-19 10:39:18 -04:00
syyy44 37f266278d feat(langchain): support custom token_counter in ContextEditingMiddleware (#39754) 2026-08-19 09:35:54 -04:00
2019bf5ebe fix(openai): raise clear error on unexpected response type in _create_chat_result (#39731)
Co-authored-by: Sergio Perez <sergioperezcheco@users.noreply.github.com>
Co-authored-by: Hermes Agent <noreply@nousresearch.com>
2026-08-18 22:43:53 +00:00
Yiğit ERDOĞAN e92c6db3b3 fix(langchain): re-raise non-retryable exceptions in ModelRetryMiddleware (#38960) 2026-08-18 18:14:02 -04:00
f368888e7e fix(partners): isolate unit tests from network [closes #39727] (#39729)
Co-authored-by: pufuki <pvnxarc@gmail.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-18 18:00:36 -04:00
c8b2d767bf fix(core): make subprocess and temporary file tests portable on Windows (#39664)
Co-authored-by: Pu Jingnan <149932541+Puuuuup@users.noreply.github.com>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
2026-08-18 17:34:30 -04:00
Hunter Lovell b5e8e2e85e fix(core): fail fast when tool schemas can't resolve forward refs during serialization (#39570)
fixes #39099

We currently allow forward refs in pydantic v2 schemas upon creation:

```python
class Container(BaseModel):
    rows: list["Row"] = [] # "Row" is declared below, after the tool is decorated

@tool
def my_tool(container: Container):
    """A tool whose schema depends on a forward reference that is not resolvable yet."""
    return "ok"

class Row(BaseModel):
    name: str
```

When it comes time to introspect the tool schema (notably in
`count_tokens_approximately` and `convert_to_openai_tool`), we rely on
[signature
introspection](https://github.com/langchain-ai/langchain/blob/943dd700ef7c33e3f1f21d3e280c9c249b88259c/libs/core/langchain_core/tools/base.py#L1654-L1661)
to extract the tool's input schema. If that contains invalid forward
references, there's no schema fields to extract which results in an
empty dict:

<details>

<summary>Invalid forward reference MRE</summary>

```python
from __future__ import annotations

import inspect

from pydantic import BaseModel, Field
from pydantic.errors import PydanticUndefinedAnnotation

from langchain_core.tools.base import get_all_basemodel_annotations
from langchain_core.utils.pydantic import _create_subset_model, model_json_schema


class Container(BaseModel):
    """A model with a nested forward reference that can never resolve."""

    rows: list["UndefinedRow"] = Field(default_factory=list)


def main() -> None:
    """Print the field-selection inputs and their zero-field subset result."""
    selected_annotations = get_all_basemodel_annotations(Container)
    subset_schema = _create_subset_model(
        "ContainerSubset",
        Container,
        list(selected_annotations),
        fn_description=Container.__doc__,
    )

    print(f"Pydantic complete: {Container.__pydantic_complete__}")
    print(f"Pydantic fields: {list(Container.model_fields)}")
    print(f"inspect.signature: {inspect.signature(Container)}")
    print(f"Fields selected by get_all_basemodel_annotations: {selected_annotations}")
    print(f"Subset properties: {model_json_schema(subset_schema)['properties']}")


if __name__ == "__main__":
    main()
```

```output
Pydantic complete: False
Pydantic fields: ['rows']
inspect.signature: (**data: 'Any') -> 'None'
Fields selected by get_all_basemodel_annotations: {}
Subset properties: {}
```

</details>

<details>

<summary>Valid forward reference MRE</summary>

```python
from __future__ import annotations

import inspect

from pydantic import BaseModel, Field
from pydantic.errors import PydanticUndefinedAnnotation

from langchain_core.tools.base import get_all_basemodel_annotations
from langchain_core.utils.pydantic import _create_subset_model, model_json_schema


class Container(BaseModel):
    """A model with a nested forward reference that can never resolve."""

    rows: list["UndefinedRow"] = Field(default_factory=list)

class UndefinedRow(BaseModel):
    name: str = Field()


def main() -> None:
    """Print the field-selection inputs and their zero-field subset result."""
    Container.model_rebuild()
    selected_annotations = get_all_basemodel_annotations(Container)
    subset_schema = _create_subset_model(
        "ContainerSubset",
        Container,
        list(selected_annotations),
        fn_description=Container.__doc__,
    )

    print(f"Pydantic complete: {Container.__pydantic_complete__}")
    print(f"Pydantic fields: {list(Container.model_fields)}")
    print(f"inspect.signature: {inspect.signature(Container)}")
    print(f"Fields selected by get_all_basemodel_annotations: {selected_annotations}")
    print(f"Subset properties: {model_json_schema(subset_schema)['properties']}")


if __name__ == "__main__":
    main()

```

```output
Pydantic complete: True
Pydantic fields: ['rows']
inspect.signature: (*, rows: list[__main__.UndefinedRow] = <factory>) -> None
Fields selected by get_all_basemodel_annotations: {'rows': list[__main__.UndefinedRow]}
Subset properties: {'rows': {'items': {'$ref': '#/$defs/UndefinedRow'}, 'title': 'Rows', 'type': 'array'}}
```
</details>

---

The fix is to
* at introspection time, resolve forward references using
`.model_rebuild()` that raises a pydantic exception if forward
references cant be resolved
* i'm also widening a pydantic utility to use a type guard instead of
having to use bool + cast

I'm intentionally not rebuilding pydantic v1 schemas in the same way
since
* forward references are specified by explicitly passing names into
`update_forward_refs`
* pydantic v1 is old news
2026-08-18 14:08:52 -07:00
Mason Daughertyandopen-swe[bot] 72fb0090bd test(core): avoid version-dependent runnable snapshots (#39705)
Runnable snapshots currently embed the exact `langchain-core` version,
forcing unrelated snapshot rewrites during every release. Normalize only
the current `VERSION` to a stable placeholder before comparison, so
missing or stale version metadata still fails.

Made by [Open
SWE](https://openswe.vercel.app/agents/bfd72574-359e-544e-dbf5-78f8bae3636a)

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-18 16:16:21 -04:00
Nazrul Ansari b28d8c4630 fix(deepseek): map prompt_cache_hit_tokens to cache_read (#39668) 2026-08-18 13:27:37 -04:00
Aryan Singh K. 1e0dcf77ec fix(xai): recompute total_tokens after adding reasoning tokens to output (#39667) 2026-08-18 13:19:28 -04:00
Eugene Yurtsev 5cfde66701 release(openai): 1.5.2 (#39719)
Release 1.5.2
langchain-openai==1.5.2
2026-08-18 13:16:07 -04:00
65e5e3cfa3 fix(core): require all nested properties for strict tool schemas (#39306)
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
Co-authored-by: dkundu56 <188023074+dkundu56@users.noreply.github.com>
Co-authored-by: Andrea Rossi <6909990+AndRossi@users.noreply.github.com>
2026-08-18 17:08:57 +00:00
Alex Onufrak 32c15bbbd5 fix(openai): preserve reasoning item boundaries (#39278) 2026-08-18 12:59:04 -04:00
ccurmeandAvneesh Jadhav 91ed3831a2 fix(standard-tests): close quote in bind_tools example (#39722)
Co-authored-by: Avneesh Jadhav <228940542+avneeshjadhav04@users.noreply.github.com>
2026-08-18 16:57:52 +00:00
94509faaed fix(core): remove stale sync-stream xfail [closes #39720] (#39723)
Co-authored-by: PAVAN KUMAR S <239303217+pufuki@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-18 12:57:41 -04:00