core[patch]: Support injected tool args that are arbitrary types (#27045)

This adds support for inject tool args that are arbitrary types when
used with pydantic 2.

We'll need to add similar logic on the v1 path, and potentially mirror
the config from the original model when we're doing the subset.
This commit is contained in:
Eugene Yurtsev
2024-10-02 12:50:58 -04:00
committed by GitHub
parent e806e9de38
commit 74bf620e97
2 changed files with 20 additions and 2 deletions

View File

@@ -2090,3 +2090,18 @@ def test_structured_tool_direct_init() -> None:
with pytest.raises(NotImplementedError):
assert tool.invoke("hello") == "hello"
def test_injected_arg_with_complex_type() -> None:
"""Test that an injected tool arg can be a complex type."""
class Foo:
def __init__(self) -> None:
self.value = "bar"
@tool
def injected_tool(x: int, foo: Annotated[Foo, InjectedToolArg]) -> str:
"""Tool that has an injected tool arg."""
return foo.value
assert injected_tool.invoke({"x": 5, "foo": Foo()}) == "bar" # type: ignore