Sydney Runkle
0c8cbfb7de
chore(langchain_v1): switch order of params in ToolRuntime ( #33518 )
...
To match `Runtime`
2025-10-16 12:09:05 +00:00
Sydney Runkle
89c3428d85
feat(langchain_v1): injected runtime ( #33500 )
...
Goal here is 2 fold
1. Improved devx for injecting args into tools
2. Support runtime injection for Python 3.10 async
One consequence of this PR is that `ToolNode` now expects `config`
available with `runtime`, which only happens in LangGraph execution
contexts. Hence the config patch for tests.
Are we ok reserving `tool_runtime`?
before, eek:
```py
from langchain.agents import create_agent
from langchain.tools import tool, InjectedState, InjectedStore
from langgraph.runtime import get_runtime
from typing_extensions import Annotated
from langgraph.store.base import BaseStore
@tool
def do_something(
arg: int,
state: Annotated[dict, InjectedState],
store: Annotated[BaseStore, InjectedStore],
) -> None:
"""does something."""
print(state)
print(store)
print(get_runtime().context)
...
```
after, woo!
```py
from langchain.agents import create_agent
from langchain.tools import tool, ToolRuntime
@tool
def do_something_better(
arg: int,
tool_runtime: ToolRuntime,
) -> None:
"""does something better."""
print(tool_runtime.state)
print(tool_runtime.store)
print(tool_runtime.context)
...
```
```python
@dataclass
class ToolRuntime(InjectedToolArg, Generic[StateT, ContextT]):
state: StateT
context: ContextT
config: RunnableConfig
tool_call_id: str
stream_writer: StreamWriter
context: ContextT
store: BaseStore | None
2025-10-16 07:41:09 -04:00
Mason Daugherty
707e96c541
style: more sweeping refs work ( #33513 )
2025-10-15 23:33:39 -04:00
Mason Daugherty
26e0a00c4c
style: more work for refs ( #33508 )
...
Largely:
- Remove explicit `"Default is x"` since new refs show default inferred
from sig
- Inline code (useful for eventual parsing)
- Fix code block rendering (indentations)
2025-10-15 18:46:55 -04:00
Eugene Yurtsev
d0f8f00e7e
release(anthropic): 1.0.0a5 ( #33507 )
...
Release anthropic
2025-10-15 21:31:52 +00:00
Eugene Yurtsev
a39132787c
feat(anthropic): add async implementation to middleware ( #33506 )
...
Add async implementation to middleware
2025-10-15 17:05:39 -04:00
Sydney Runkle
296994ebf0
release(langchain_v1): 1.0.0a15 ( #33505 )
2025-10-15 20:48:18 +00:00
ccurme
b5b31eec88
feat(core): include original block type in server tool results for google-genai ( #33502 )
2025-10-15 16:26:54 -04:00
Sydney Runkle
8f6851c349
fix(langchain_v1): keep state to relevant middlewares for tool/model call limits ( #33493 )
...
The one risk point that I can see here is that model + tool call
counting now occurs in the `after_model` hook which introduces order
dependency (what if you have HITL execute before this hook and we jump
early to `model`, for example).
This is something users can work around at the moment and we can
document. We could also introduce a priority concept to middleware.
2025-10-15 14:24:59 -04:00
Nuno Campos
0788461abd
feat(openai): Add openai moderation middleware ( #33492 )
2025-10-15 13:59:49 -04:00
ccurme
3bfd1f6d8a
release(core): 1.0.0rc1 ( #33497 )
2025-10-15 13:02:35 -04:00
Mason Daugherty
d83c3a12bf
chore(core): delete BaseMemory, move to langchain-classic ( #33373 )
2025-10-15 12:55:23 -04:00
Mason Daugherty
79200cf3c2
docs: update package READMEs ( #33488 )
2025-10-15 10:49:35 -04:00
ccurme
bcb6789888
fix(anthropic): set langgraph-prebuilt dep explicitly ( #33495 )
2025-10-15 14:44:37 +00:00
ccurme
89b7933ef1
feat(standard-tests): parametrize tool calling test ( #33496 )
2025-10-15 14:43:09 +00:00
ccurme
4da5a8081f
fix(core): propagate extras when aggregating tool calls in v1 content ( #33494 )
2025-10-15 10:38:16 -04:00
Mason Daugherty
53e9f00804
chore(core): delete items marked for removal in schemas.py ( #33375 )
2025-10-15 09:56:27 -04:00
Chenyang Li
6e25e185f6
fix(docs): Fix several typos and grammar ( #33487 )
...
Just typo changes
Co-authored-by: Mason Daugherty <mason@langchain.dev >
2025-10-14 20:04:14 -04:00
Mason Daugherty
68ceeb64f6
chore(core): delete function_calling.py utils marked for removal ( #33376 )
2025-10-14 16:13:19 -04:00
Mason Daugherty
edae976b81
chore(core): delete pydantic_v1/ ( #33374 )
2025-10-14 16:08:24 -04:00
ccurme
9f4366bc9d
feat(mistralai): support reasoning feature and v1 content ( #33485 )
...
Not yet supported: server-side tool calls
2025-10-14 15:19:44 -04:00
Eugene Yurtsev
99e0a60aab
chore(langchain_v1): remove invocation request ( #33482 )
...
Remove ToolNode primitives from langchain
2025-10-14 15:07:30 -04:00
Eugene Yurtsev
d38729fbac
feat(langchain_v1): add async implementations to wrap_model_call ( #33467 )
...
Add async implementations to wrap_model_call for prebuilt middleware
2025-10-14 17:39:38 +00:00
gsmini
ff0d21cfd5
fix(langchain_v1): can not import "wrap_tool_call" from agents.… ( #33472 )
...
fix can not import `wrap_tool_call` from ` langchain.agents.middleware
import `
```python
from langchain.agents import create_agent
from langchain.agents.middleware import wrap_tool_call # here !
from langchain_core.messages import ToolMessage
@wrap_tool_call
def handle_tool_errors(request, handler):
"""Handle tool execution errors with custom messages."""
try:
return handler(request)
except Exception as e:
# Return a custom error message to the model
return ToolMessage(
content=f"Tool error: Please check your input and try again. ({str(e)})",
tool_call_id=request.tool_call["id"]
)
agent = create_agent(
model="openai:gpt-4o",
tools=[search, calculate],
middleware=[handle_tool_errors]
)
```
> example code from:
https://docs.langchain.com/oss/python/langchain/agents#tool-error-handling
2025-10-14 13:39:25 -04:00
Eugene Yurtsev
9140a7cb86
feat(langchain_v1): add override to model request and tool call request ( #33465 )
...
Add override to model request and tool call request
2025-10-14 10:31:46 -04:00
ccurme
41fe18bc80
chore(groq): fix integration tests ( #33478 )
...
- add missing cassette
- update streaming metadata test for v1
2025-10-14 14:16:34 +00:00
Mason Daugherty
9105573cb3
docs: create_agent style and clarify system_prompt ( #33470 )
2025-10-14 09:56:54 -04:00
Sydney Runkle
fff87e95d1
fix(langchain): rename PlanningMiddleware to TodoListMiddleware ( #33476 )
2025-10-14 09:06:06 -04:00
ccurme
9beb29a34c
chore(mistralai): delete redundant tests ( #33468 )
2025-10-13 21:28:51 +00:00
ChoYongHo | 조용호
ca00f5aed9
fix(langchain_v1): export ModelResponse from agents.middleware ( #33453 ) ( #33454 )
...
## Description
Fixes #33453
`ModelResponse` was defined in `types.py` and included in its `__all__`
list, but was not exported from the middleware package's `__init__.py`.
This caused `ImportError` when attempting to import it directly
from `langchain.agents.middleware`, despite being documented as a public
export.
## Changes
- Added `ModelResponse` to the import statement in
`langchain/agents/middleware/__init__.py`
- Added `ModelResponse` to the `__all__` list in
`langchain/agents/middleware/__init__.py`
- Added comprehensive unit tests in `test_imports.py` to verify the
import works correctly
## Issue
The original issue reported that the following import failed:
```python
from langchain.agents.middleware import ModelResponse
# ImportError: cannot import name 'ModelResponse' from
'langchain.agents.middleware'
The workaround was to import from the submodule:
from langchain.agents.middleware.types import ModelResponse # Workaround
Solution
After this fix, ModelResponse can be imported directly as documented:
from langchain.agents.middleware import ModelResponse # Now works!
Testing
- ✅ Added 3 unit tests in
tests/unit_tests/agents/middleware/test_imports.py
- ✅ All tests pass locally: make format, make lint, make test
- ✅ Verified ModelResponse is properly exported and importable
- ✅ Verified ModelResponse appears in __all__ list
Dependencies
None. This is a simple export fix with no new dependencies.
---------
Co-authored-by: Eugene Yurtsev <eugene@langchain.dev >
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com >
2025-10-13 16:02:30 -04:00
Eugene Yurtsev
1cf851e054
chore(langchain_v1,anthropic): migrate anthropic middleware to langchain_anthropic ( #33463 )
...
Migrate prompt caching implementation into langchain_anthropic.middleware
2025-10-13 15:12:54 -04:00
ccurme
961f965f0c
feat(groq): support built-in tools in message content ( #33459 )
2025-10-13 15:06:01 -04:00
Sydney Runkle
760fc3bc12
chore(langchain_v1): use args for HITL ( #33442 )
2025-10-11 07:12:46 -04:00
Eugene Yurtsev
e3fc7d8aa6
chore(langchain_v1): bump release version ( #33440 )
...
bump v1 for release
2025-10-10 21:51:00 -04:00
Eugene Yurtsev
2b3b209e40
chore(langchain_v1): improve error message ( #33433 )
...
Make error messages actionable for sync / async decorators
2025-10-10 17:18:20 -04:00
ccurme
78903ac285
fix(openai): conditionally skip test ( #33431 )
2025-10-10 21:04:18 +00:00
ccurme
f361acc11c
chore(anthropic): speed up integration tests ( #33430 )
2025-10-10 20:57:44 +00:00
Eugene Yurtsev
ed185c0026
chore(langchain_v1): remove langchain_text_splitters from test group ( #33425 )
...
Remove langchain_text_splitters from test group in langchain_v1
2025-10-10 16:56:14 -04:00
Eugene Yurtsev
6dc34beb71
chore(langchain_v1): stricter handling of sync vs. async for wrap_model_call and wrap_tool_call ( #33429 )
...
Wrap model call and wrap tool call
2025-10-10 16:54:42 -04:00
Eugene Yurtsev
c2205f88e6
chore(langchain_v1): further namespace clean up ( #33428 )
...
Reduce exposed namespace for now
2025-10-10 20:48:24 +00:00
ccurme
abdbe185c5
release(anthropic): 1.0.0a4 ( #33427 )
2025-10-10 16:39:58 -04:00
ccurme
c1b816cb7e
fix(fireworks): parse standard blocks in input ( #33426 )
2025-10-10 16:18:37 -04:00
Eugene Yurtsev
0559558715
feat(langchain_v1): add async implementation for wrap_tool_call ( #33420 )
...
Add async implementation. No automatic delegation to sync at the moment.
2025-10-10 15:07:19 -04:00
Eugene Yurtsev
75965474fc
chore(langchain_v1): tool error exceptions ( #33424 )
...
Tool error exceptions
2025-10-10 15:06:40 -04:00
Mason Daugherty
5dc014fdf4
chore(core): delete get_relevant_documents ( #33378 )
...
Co-authored-by: Chester Curme <chester.curme@gmail.com >
2025-10-10 14:51:54 -04:00
Mason Daugherty
291a9fcea1
style: llm -> model ( #33423 )
2025-10-10 13:19:13 -04:00
Christophe Bornet
dd994b9d7f
chore(langchain): remove arg types from docstrings ( #33413 )
...
Co-authored-by: Mason Daugherty <mason@langchain.dev >
2025-10-10 11:51:00 -04:00
Christophe Bornet
83901b30e3
chore(text-splitters): remove arg types from docstrings ( #33406 )
...
Co-authored-by: Mason Daugherty <mason@langchain.dev >
2025-10-10 11:37:53 -04:00
ccurme
af1da28459
feat(langchain_v1): expand message exports ( #33419 )
2025-10-10 15:14:51 +00:00
Mason Daugherty
ed2ee4e8cc
style: fix tables, capitalization ( #33417 )
2025-10-10 11:09:59 -04:00