mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-01 11:02:37 +00:00
core[major]: only use function description (#21622)
Do not prefix function signature --- * Reason for this is that information is already present with tool calling models. * This will save on tokens for those models, and makes it more obvious what the description is! * The @tool can get more parameters to allow a user to re-introduce the the signature if we want
This commit is contained in:
@@ -332,9 +332,8 @@ def test_structured_tool_from_function_docstring() -> None:
|
||||
"required": ["bar", "baz"],
|
||||
}
|
||||
|
||||
prefix = "foo(bar: int, baz: str) -> str - "
|
||||
assert foo.__doc__ is not None
|
||||
assert structured_tool.description == prefix + textwrap.dedent(foo.__doc__.strip())
|
||||
assert structured_tool.description == textwrap.dedent(foo.__doc__.strip())
|
||||
|
||||
|
||||
def test_structured_tool_from_function_docstring_complex_args() -> None:
|
||||
@@ -365,9 +364,8 @@ def test_structured_tool_from_function_docstring_complex_args() -> None:
|
||||
"required": ["bar", "baz"],
|
||||
}
|
||||
|
||||
prefix = "foo(bar: int, baz: List[str]) -> str - "
|
||||
assert foo.__doc__ is not None
|
||||
assert structured_tool.description == prefix + textwrap.dedent(foo.__doc__).strip()
|
||||
assert structured_tool.description == textwrap.dedent(foo.__doc__).strip()
|
||||
|
||||
|
||||
def test_structured_tool_lambda_multi_args_schema() -> None:
|
||||
@@ -700,9 +698,8 @@ def test_structured_tool_from_function() -> None:
|
||||
"required": ["bar", "baz"],
|
||||
}
|
||||
|
||||
prefix = "foo(bar: int, baz: str) -> str - "
|
||||
assert foo.__doc__ is not None
|
||||
assert structured_tool.description == prefix + textwrap.dedent(foo.__doc__.strip())
|
||||
assert structured_tool.description == textwrap.dedent(foo.__doc__.strip())
|
||||
|
||||
|
||||
def test_validation_error_handling_bool() -> None:
|
||||
@@ -906,3 +903,15 @@ async def test_async_tool_pass_context() -> None:
|
||||
assert (
|
||||
await foo.ainvoke({"bar": "baz"}, {"configurable": {"foo": "not-bar"}}) == "baz" # type: ignore
|
||||
)
|
||||
|
||||
|
||||
def test_tool_description() -> None:
|
||||
def foo(bar: str) -> str:
|
||||
"""The foo."""
|
||||
return bar
|
||||
|
||||
foo1 = tool(foo)
|
||||
assert foo1.description == "The foo." # type: ignore
|
||||
|
||||
foo2 = StructuredTool.from_function(foo)
|
||||
assert foo2.description == "The foo."
|
||||
|
Reference in New Issue
Block a user