Commit Graph
16876 Commits
Author SHA1 Message Date
Sydney Runkle 7d4b42b572 release(langchain): 1.3.18 (#39966)
Patch bump of `langchain` from 1.3.17 to 1.3.18 to prepare a release.

Picks up the `PIIMiddleware` redaction fix (#39894): message content
that is a list of content blocks was being flattened into the string
`repr` of the list during redaction, and redacted messages were losing
fields such as `additional_kwargs`.

Standard three-file bump — `__version__`, `pyproject.toml`, and the
`langchain` entry in `uv.lock`. Running `uv lock` locally also pulled in
unrelated dependency drift (upstream specifier changes and
environment-dependent marker lines), so that churn was reverted and only
the version line kept, matching prior release PRs.

---

*Written with the help of an AI agent (Claude Code).*
langchain==1.3.18
2026-08-27 10:25:43 -07:00
Sydney Runkle 4a66e355da fix(langchain): preserve content-block shape in PIIMiddleware redaction (#39894)
`PIIMiddleware` redacted message content via `str(message.content)`.
When `.content` is a list of content blocks rather than a plain string,
`str(...)` produces the `repr` of the list — so a redacted user message
was stored as the literal string:

```
"[{'type': 'text', 'text': 'my email is [REDACTED_EMAIL]'}]"
```

The PII itself was still detected and redacted; only the shape of the
message was destroyed. Anyone sending multimodal or provider-native
block content through an agent with `PIIMiddleware` had their messages
silently flattened into that repr before reaching the model.

`_process_content` now accepts either shape and walks content blocks,
redacting the text of each block in place and leaving non-text blocks
untouched. Plain-string content behaves exactly as before.

While fixing the call sites, this also drops the hand-rebuilding of
messages (`HumanMessage(content=..., id=..., name=...)`) in favor of
`model_copy`. The enumerated rebuild had been quietly discarding every
field it did not list — `additional_kwargs`, `response_metadata`, and so
on — on any message that contained PII.

## Release note

Fixed `PIIMiddleware` flattening list-of-content-blocks message content
into its string `repr` during redaction. Redaction now preserves the
original content shape, and no longer drops message fields such as
`additional_kwargs` on redacted messages.

---

*Written with the help of an AI agent (Claude Code).*
2026-08-27 09:46:14 -07:00
ccurme 38e211359f fix(core): shore up indexing in genai v1 streaming content (#39964) 2026-08-27 12:37:49 -04:00
Emil F 13b1b2feae fix(core): make StructuredTool JSON-serializable (#39631)
## Problem

`StructuredTool` cannot be dumped to JSON:

```python
@tool
def write_file(file_path: str, content: str) -> str:
    """Write content to the given path."""
    return "ok"

write_file.model_dump(mode="json")
# PydanticSerializationError: Unable to serialize unknown type:
#   <class 'pydantic._internal._model_construction.ModelMetaclass'>
```

`args_schema` holds a Pydantic model class, and `func` / `coroutine`
hold callables. None of them have a JSON form. Python-mode
`model_dump()` works; only the JSON modes raise.

This also costs tracing performance. The [LangSmith
SDK](https://github.com/langchain-ai/langsmith-sdk/blob/main/python/langsmith/_internal/_serde.py)
catches the error, dumps again in Python mode, and then sends every
class and function left in the result through its own `default` hook.

## Change

A `PlainSerializer(..., when_used="json-unless-none")` on the three
fields.

- `args_schema` dumps as its own JSON schema: `model_json_schema()` for
a Pydantic v2 class, `schema()` for a v1 one. A dict schema passes
through unchanged. A schema holding an arbitrary type has no JSON schema
at all, so it falls back to its repr instead of raising.
- `func` and `coroutine` dump as strings.
- Python-mode dumps are unchanged — still the live schema class and
callables.
- `exclude` / `include` / `exclude_none` keep working.
- Attached with `Annotated`, not `@field_serializer`. A field has only
one serializer slot, so `@field_serializer` would break any subclass
that declares its own serializer for the same field.
- Schema generation is cached per class. Pydantic does not memoize it,
and tracing would pay for it on every run.

## Result

The dump is JSON-native, and the schema it carries has the same shape a
dict `args_schema` already has, so it validates back into a working
tool.

Measured on the 8 filesystem tools of a deepagents agent, dumped through
the LangSmith serializer:

| | master | this PR |
|---|---|---|
| time per dump | 0.119 ms | **0.025 ms** |
| payload | 7,706 B | 12,213 B |
| objects reaching the SDK's `default` hook | 32 | 8 |

The payload grows because `args_schema` now carries the real schema
instead of `"<class ...>"`. Only the tool itself still enters the
`default` hook; the class and functions inside it no longer do. Without
the per-class cache the same dump takes 1.10 ms, so the cache is what
makes this a win rather than a regression.

## Why not on `BaseTool`

`args_schema` is declared there as well, so `Tool` and custom subclasses
hit the same error. But an `Annotated` serializer only applies where the
field is declared, and `StructuredTool` redeclares `args_schema` — it
would not inherit one from `BaseTool`.

## Tests

In `libs/core/tests/unit_tests/test_tools.py`: JSON round trip, Python
mode unchanged, dump options respected, dict `args_schema` preserved,
Pydantic v1 schema class, arbitrary-type fallback, and a subclass
declaring its own serializers for the same fields.
2026-08-27 17:50:53 +02:00
ccurme 3b3b308e6d release(anthropic): 1.7.0 (#39963) langchain-anthropic==1.7.0 2026-08-27 11:20:13 -04:00
ccurme e3f6adfe19 feat(anthropic): support top-level param for skills via container; updates thinking display mode (#39962) 2026-08-27 11:19:28 -04:00
Lukáš KožušníkandMason Daugherty c253f54b90 fix(openai): correct reasoning_effort_levels for gpt-5 and gpt-5.1 profiles (#39936)
Fixes #39935

---

`gpt-5`, `gpt-5-mini`, `gpt-5-nano` and `gpt-5.1` no longer advertise a
reasoning effort level they reject, and the GPT-5 models advertise
`minimal` again.

The profile augmentations currently give all four models `["none",
"low", "medium", "high", "xhigh"]`. OpenAI's [GPT-5 model
page](https://developers.openai.com/api/docs/models/gpt-5) states that
effort supports "minimal, low, medium, and high", and the [GPT-5.1
page](https://developers.openai.com/api/docs/models/gpt-5.1) lists "none
(default), low, medium, and high". `xhigh` arrived later, with
GPT-5.1-Codex-Max.

A client that reads `profile["reasoning_effort_levels"]` to build its
settings therefore offers `xhigh` on models that reject it, and hides
`minimal`, which GPT-5 accepts. The corrected values match the
models.dev entries for the same models.

The `gpt-5.2` / `gpt-5.4` / `gpt-5.6` profiles are already correct and
are untouched. A few other entries (`gpt-5-pro`, `gpt-5.2-pro`,
`gpt-5.4-pro`, `gpt-5.2-chat-latest`) also differ from models.dev, but I
could not confirm those from OpenAI's own docs, so I left them alone.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Mason Daugherty <mason@langchain.dev>
2026-08-27 10:37:42 -04:00
langchain-oss-model-profiles[bot]andmdrxy 513e425fc0 chore(model-profiles): refresh model profile data (#39954)
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

**4 added · 1 removed · 12 changed** across 4 provider(s).

<details>
<summary>huggingface</summary>

**➕ 1 added**
- `zai-org/GLM-5.3-Flash` — 1,048,576 ctx, 131,072 out, reasoning, tools

**✏️ 2 changed**
- `MiniMaxAI/MiniMax-M2`: max output tokens 128,000 → 131,072
- `MiniMaxAI/MiniMax-M3`: max output tokens 128,000 → 512,000

</details>

<details>
<summary>mistral</summary>

**➕ 1 added**
- `zai-glm-5-2` — 1,000,000 ctx, 131,072 out, reasoning, tools

</details>

<details>
<summary>openai</summary>

**✏️ 6 changed**
- `gpt-5.1`: added temperature control
- `gpt-5.2`: added temperature control
- `gpt-5.3-codex`: added temperature control
- `gpt-5.4`: added temperature control
- `gpt-5.4-mini`: added temperature control
- `gpt-5.4-nano`: added temperature control

</details>

<details>
<summary>openrouter</summary>

**➕ 2 added**
- `qwen/qwen3.8-flash` — 1,000,000 ctx, 131,072 out, text+image+video
in, reasoning, tools
- `z-ai/glm-5.3-flash` — 1,310,720 ctx, 131,072 out, text+image+video
in, reasoning, tools

**➖ 1 removed**
- `stealth/ox-alpha`

**✏️ 4 changed**
- `nvidia/nemotron-3-nano-30b-a3b`: max output tokens 235,929 → 228,000
- `qwen/qwen3-235b-a22b-2507`: max output tokens 16,384 → 235,929
- `qwen/qwen3.6-27b`: max output tokens 235,929 → 81,920
- `z-ai/glm-4.6`: max output tokens 131,072 → 16,384

</details>

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-27 10:18:30 -04:00
ccurme fd2fbd702b feat(anthropic): support 1.0 sdk (#39938) 2026-08-27 09:21:00 -04:00
Kodurd b0fb33f919 fix(perplexity): map Responses API cache tokens into input_token_details (#39923) 2026-08-27 08:59:35 -04:00
langchain-oss-model-profiles[bot]andmdrxy 502b2b445b chore(model-profiles): refresh model profile data (#39928)
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 · 2 removed · 102 changed** across 2 provider(s).

<details>
<summary>huggingface</summary>

**➕ 1 added**
- `Qwen/Qwen3.8-27B` — 262,144 ctx, 32,768 out, text+image in,
reasoning, tools

</details>

<details>
<summary>openrouter</summary>

**➖ 2 removed**
- `google/gemma-3n-e4b-it`
- `qwen/qwen-plus-2025-07-28:thinking`

**✏️ 102 changed**
- `aion-labs/aion-rp-llama-3.1-8b`: max output tokens 32,768 → 29,491
- `allenai/olmo-3-32b-think`: max output tokens 65,536 → 58,982
- `arcee-ai/trinity-large-thinking`: max output tokens 262,144 → 235,929
- `bytedance-seed/seed-2-1-turbo`: max output tokens 262,144 → 235,929
- `deepseek/deepseek-chat-v3-0324`: max output tokens 163,840 → 147,456
- `deepseek/deepseek-chat-v3.1`: max output tokens 161,000 → 144,900
- `deepseek/deepseek-r1-distill-llama-70b`: max output tokens 8,192 →
7,372
- `deepseek/deepseek-v3.2`: max output tokens 163,840 → 147,456
- `deepseek/deepseek-v4-flash-0731`: max output tokens 131,072 → 943,718
- `deepseek/deepseek-v4-pro-0813`: max output tokens 384,000 → 943,717
- `dots-studio/dots-3-note-preview:free`: max output tokens 512,000 →
460,800
- `google/gemini-3.1-flash-image-preview`: max output tokens 65,536 →
58,982
- `google/gemini-3.1-flash-lite-image`: max output tokens 65,536 →
58,982
- `google/gemma-3-27b-it`: max output tokens 131,072 → 117,964
- `google/gemma-4-31b-it`: max output tokens 262,144 → 16,384
- `gryphe/mythomax-l2-13b`: max output tokens 4,096 → 3,686
- `ibm-granite/granite-4.0-h-micro`: max output tokens 131,000 → 117,900
- `ibm-granite/granite-4.1-8b`: max output tokens 131,072 → 117,964
- `meta-llama/llama-3.1-8b-instruct`: max output tokens 131,072 →
117,964
- `meta-llama/llama-3.2-1b-instruct`: max output tokens 60,000 → 54,000
- `meta-llama/llama-3.2-3b-instruct`: max output tokens 131,072 →
117,964
- `meta-llama/llama-3.3-70b-instruct`: max output tokens 16,384 →
115,200
- `meta-llama/llama-4-scout`: max output tokens 16,384 → 8,192
- `meta-llama/llama-guard-4-12b`: max input tokens 1,048,576 → 163,840
- `meta/muse-glimmer-30b`: max output tokens 131,072 → 117,964
- …and 77 more

</details>

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
2026-08-26 10:36:54 -04:00
Kodurd c9dcf6eb96 fix(perplexity): emit search_context_size once per stream in _astream (#39924) 2026-08-26 10:11:23 -04:00
Badar RahmanandDarRahman 7f5b32402d fix(anthropic): auto-append advisor-tool-2026-03-01 beta header for advisor_20260301 tool (#39917)
Co-authored-by: DarRahman <darrahman@users.noreply.github.com>
2026-08-26 10:09:46 -04:00
43bed06205 chore(model-profiles): refresh model profile data (#39906)
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

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

<details>
<summary>deepseek</summary>

**➖ 2 removed**
- `deepseek-chat`
- `deepseek-reasoner`

</details>

<details>
<summary>openrouter</summary>

**➕ 3 added**
- `minimax/minimax-m2.7:free` — 196,608 ctx, 196,608 out, reasoning,
tools
- `minimax/minimax-m3:free` — 1,048,576 ctx, 1,048,576 out,
text+image+video in, reasoning, tools
- `mistralai/devstral-2512` — 262,144 ctx, 262,144 out, text+pdf in,
tools

**➖ 6 removed**
- `inclusionai/ling-2.6-1t`
- `inclusionai/ling-2.6-flash`
- `inclusionai/ring-2.6-1t`
- `nvidia/nemotron-3-nano-30b-a3b:free`
- `nvidia/nemotron-nano-12b-v2-vl:free`
- `nvidia/nemotron-nano-9b-v2:free`

**✏️ 6 changed**
- `qwen/qwen3-235b-a22b-thinking-2507`: max input tokens 262,144 →
131,072
- `thinkingmachines/inkling-small:free`: max input tokens 262,144 →
1,048,576
- `thinkingmachines/inkling:free`: max input tokens 262,144 → 1,048,576
- `z-ai/glm-5.1`: max output tokens 128,000 → 202,752
- `z-ai/glm-5.2`: max output tokens 131,072 → 262,144
- `~moonshotai/kimi-latest`: max output tokens 974,842 → 1,048,576

</details>

---------

Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
Co-authored-by: Mason Daugherty <github@mdrxy.com>
2026-08-25 10:58:44 -04:00
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