Commit Graph

447 Commits

Author SHA1 Message Date
Eugene Yurtsev
5554a36ad5 release(langchain): release 1.2.2 (#34643)
Release langchain 1.2.2
2026-01-07 17:27:58 -05:00
Harrison Chase
bda22aa1d9 fix(langchain): handle parallel usage of the todo tool in planning middleware (#34637)
The agent should only make a single call to update the todo list at a
time. A parallel call doesn't make sense, but also cannot work as
there's no obvious reducer to use.

On parallel calls of the todo tool, we return ToolMessage containing to
guide the LLM to not call the tool in parallel.

---------

Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2026-01-07 17:23:56 -05:00
Christophe Bornet
f10225184d chore(langchain): fix types in test_wrap_model_call (#34573) 2026-01-07 11:49:46 -05:00
Mason Daugherty
aa9c63b96a release(langchain): 1.2.1 (#34622) 2026-01-06 19:10:49 -05:00
Mason Daugherty
8aeff95341 fix(core,langchain): use get_buffer_string for message summarization (#34607)
Fixes #34517

Supersedes #34557, #34570

Fixes token inflation in `SummarizationMiddleware` that caused context
window overflow during summarization.

**Root cause:** When formatting messages for the summary prompt,
`str(messages)` was implicitly called, which includes all Pydantic
metadata fields (`usage_metadata`, `response_metadata`,
`additional_kwargs`, etc.). This caused the stringified representation
to use ~2.5x more tokens than `count_tokens_approximately` estimates.

**Problem:**
- Summarization triggers at 85% of context window based on
`count_tokens_approximately`
- But `str(messages)` in the prompt uses 2.5x more tokens
- Results in `ContextLengthExceeded`

**Fix:** Use `get_buffer_string()` to format messages, which produces
compact output:

```
Human: What's the weather?
AI: Let me check...[tool_calls]
Tool: 72°F and sunny
```

Instead of verbose Pydantic repr:

```python
[HumanMessage(content='What's the weather?', additional_kwargs={}, response_metadata={}), ...]
```
2026-01-06 19:05:03 -05:00
Christophe Bornet
0438f8c277 chore(langchain): fix types in test_model_fallback (#34615) 2026-01-06 13:07:18 -05:00
Christophe Bornet
7f4f130479 chore(langchain): fix types in test_pii (#34617) 2026-01-06 13:06:25 -05:00
ccurme
6537939f53 chore(langchain): add admonition around redaction_rules (#34618) 2026-01-06 13:01:09 -05:00
Christophe Bornet
7979fd3d9f chore(langchain): fix types in test_composition (#34580) 2026-01-05 14:49:34 -05:00
Christophe Bornet
3b65985551 chore(langchain): fix types in test_decorators (#34583) 2026-01-05 14:47:10 -05:00
Christophe Bornet
c4babed5c6 chore(langchain): fix types in test_wrap_tool_call (#34600) 2026-01-05 14:38:31 -05:00
Christophe Bornet
5ae53fdfb3 chore(langchain): fix types in test_model_call_limit_types (#34601) 2026-01-05 14:37:03 -05:00
Christophe Bornet
901690ceec chore(langchain): fix types in test_file_search and test_human_in_the_loop (#34602) 2026-01-05 14:34:35 -05:00
Mohan Kumar S
13cfdf1676 fix(core): exclude injected args from tool schema (#34582) 2026-01-05 09:59:59 -05:00
Christophe Bornet
7ca0efde04 chore(langchain): fix types in test_diagram and test_sync_async_wrappers (#34591) 2026-01-05 09:05:24 -05:00
Christophe Bornet
e5d4acf681 style(langchain): add ruff rule PLC0415 (#34559) 2026-01-04 01:26:04 -05:00
Mason Daugherty
721bf15430 fix(langchain): resolve race condition in ShellSession.execute() (#34535)
Addresses a flaky test

When executing `exit 1` as a startup command, the shell process
terminates immediately. The code then tries to write a marker command
(`printf '...'`) to stdin, but the pipe is already broken because the
shell has exited, causing `BrokenPipeError`.
2025-12-29 18:16:08 -06:00
Mason Daugherty
dcfd9c0e04 fix(infra): use langchain_v1 for dev container deps (#34534) 2025-12-29 18:10:40 -06:00
Christophe Bornet
e03d6b80d5 chore(deps): bump mypy to v1.19 and ruff to v1.14 (#34521)
* Set mypy to >=1.19.1,<1.20
* Set ruff to >=0.14.10,<0.15
2025-12-29 18:07:55 -06:00
Sarah Clark
10de0a5364 fix(langchain-classic): pass default to config.getoption (#34034)
Fixes #34033

---------

Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-27 16:36:51 -06:00
Christophe Bornet
0bd862b814 style(langchain): add ruff rule RUF012 (#34497)
Co-authored-by: Mason Daugherty <mason@langchain.dev>
Co-authored-by: Mason Daugherty <github@mdrxy.com>
2025-12-27 01:36:47 -06:00
Christophe Bornet
85f1ba2351 refactor(langchain): refactor optional imports logic (#32813)
* Use `importlib` to load dynamically the classes
* Removes missing package warnings

---------

Co-authored-by: Mason Daugherty <github@mdrxy.com>
Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-27 01:02:32 -06:00
Christophe Bornet
d46187201d style: add ruff ISC001 rule (#34493)
ISC001 doesn't conflict anymore with the formatter. See
https://github.com/astral-sh/ruff/issues/8272

Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-26 21:39:56 -06:00
Christophe Bornet
3d78cc69f1 style(langchain): add TC ruff rules (#34496)
Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-26 21:37:57 -06:00
Christophe Bornet
88b5f22f1c style(langchain): fix some ruff preview rules (#34504) 2025-12-26 21:34:54 -06:00
Christophe Bornet
21c7cf1fa0 style(langchain): fix some PLC0415 rules (#34475)
The remaining ones are solved in
https://github.com/langchain-ai/langchain/pull/32813
2025-12-25 21:38:12 -06:00
Christophe Bornet
6a416c6186 style(langchain): add ruff rules PT (#34434) 2025-12-21 19:31:50 -06:00
Vishwajeet Kumar
3dcafac79b feat(langchain): enhance init_chat_model with improved validation (#34226)
## Summary
Enhances the `init_chat_model` function with comprehensive input
validation, improved model inference patterns, and better error handling
to provide a significantly improved user experience.

## Changes Made
-  **Input Validation**: Added comprehensive type and value checking
for all parameters
-  **Enhanced Model Inference**: Improved pattern matching with
case-insensitive support and new model patterns
-  **Better Error Messages**: Detailed error messages with examples and
documentation links
-  **Comprehensive Tests**: Added extensive test coverage for all new
functionality
-  **Documentation**: Enhanced docstrings and examples

## Backward Compatibility
All changes are fully backward compatible. No breaking changes
introduced.

## Testing
- Added 6 new test functions covering input validation, model inference,
and error handling
- All existing tests continue to pass
- Comprehensive parametrized testing for various model patterns

## User Experience Improvements
- Better error messages help users quickly resolve configuration issues
- Enhanced model inference reduces the need to specify providers
explicitly
- Comprehensive input validation catches issues early with helpful
guidance

---------

Co-authored-by: Mason Daugherty <github@mdrxy.com>
Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-19 23:50:19 -06:00
Mohammad Mohtashim
4804bd6ec2 docs(langchain): Docstring improved to show Streaming custom events (#34353) 2025-12-19 14:15:10 -05:00
Christophe Lamarche
f752c1a07f feat(langchain): Add support to google_genai provider in init_embeddings (#34388) 2025-12-19 14:04:13 -05:00
ccurme
795e746ca7 release(core): 1.2.3 (#34421) 2025-12-18 15:06:32 -05:00
ccurme
e9f7cd3e0e release(openai): 1.1.6: update max input tokens for gpt-5 series (#34419) 2025-12-18 12:49:59 -05:00
ccurme
5c94e47d14 release(openai): 1.1.5 (#34409) 2025-12-17 14:04:37 -05:00
Mason Daugherty
71778cb721 feat(infra): add CI check for out of date lockfiles (#34397) 2025-12-16 22:23:25 -05:00
ccurme
9f61ed8b81 release(langchain): 1.2 (#34373) 2025-12-15 09:49:49 -05:00
Mason Daugherty
54241f4d06 fix(langchain): shell output multithreading race condition (#34333)
If the `stdout` "done marker" arrives before the `stderr` output is
enqueued, the method returns early without capturing the `stderr` line.

The two reader threads run independently with no synchronization
guaranteeing `stderr` arrives before the done marker.

In environments with Python 3.10, timing differences can cause the
`stdout` marker to win the race, resulting in `<no output>` instead of
`[stderr]` error.

Observed as a flaky test on `test_stderr_output_labeling` in CI:

```shell
FAILED tests/unit_tests/agents/middleware/implementations/test_shell_tool.py::test_stderr_output_labeling - AssertionError: assert '[stderr] error' in '<no output>'
```
2025-12-12 17:06:18 -05:00
Christophe Bornet
f5b6eecf72 refactor(standard-tests): improve VCR config (#33968)
Use of the fixture `_base_vcr_config` is deprecated with alternative
function `base_vcr_config()`
This way:
* we don't need to import `_base_vcr_config` seen as unused (which leads
to ruff violations PLC0414 and F811)
* we don't need to make a copy since a new dict is created at each
function invocation

Co-authored-by: Mason Daugherty <mason@langchain.dev>
2025-12-12 10:14:26 -05:00
Paul
bf6a5eb122 fix(huggingface): Helper logic for init_chat_model with HuggingFace backend (#34259) 2025-12-12 10:05:16 -05:00
Christophe Bornet
3fb90666be chore(langchain): cleanup ruff config (#32810)
Co-authored-by: Mason Daugherty <mason@langchain.dev>
Co-authored-by: Sydney Runkle <54324534+sydney-runkle@users.noreply.github.com>
Co-authored-by: Sydney Runkle <sydneymarierunkle@gmail.com>
2025-12-12 09:08:48 -05:00
Sydney Runkle
6a2a149f89 fix: little lint thing (#34310)
to be merged into https://github.com/langchain-ai/langchain/pull/32810
2025-12-12 08:47:51 -05:00
Christophe Bornet
bbc1d46efe chore(langchain): check agents integration tests with mypy (#34308) 2025-12-12 07:55:34 -05:00
ccurme
5aa46501cf fix(langchain): add sentinel value to ProviderStrategy / strict (#34290) 2025-12-10 16:25:06 -05:00
ccurme
92df109dd5 chore(langchain): add end to end test for strict mode in provider strategy (#34289) 2025-12-10 15:48:47 -05:00
Towseef Altaf
d27fb0c432 feat(langchain,openai): add strict flag to ProviderStrategy structured output (#34149) 2025-12-10 15:35:23 -05:00
Mason Daugherty
7542278997 feat(core,anthropic): extras on BaseTool (#34120) 2025-12-10 09:37:14 -05:00
ccurme
aa0f4fb927 release(langchain): 1.1.3 (#34255) 2025-12-08 14:29:40 -05:00
Sydney Runkle
d18cdc6f32 feat: add agent name to AIMessage (#34254) 2025-12-08 14:23:12 -05:00
Christophe Bornet
a64aee310c chore(core): improve typing of messages utils functions (#34225)
With this we get the correct types for `_runnable_support` annotated
functions.
* return list[BaseMessage] when messages is not None
* return Runnable when messages is None
* typing of function args
2025-12-08 09:59:43 -05:00
Mason Daugherty
4a42158e6c feat(anthropic): add effort support (#34116) 2025-12-05 13:44:42 -05:00
김주호
50e27a447b feat(langchain): add support for Upstage (Solar) in init_chat_model (#34220) 2025-12-05 09:37:37 -05:00