fix: fixing missing Docstring Bug if no Docstring is provided in BaseModel class (#31608)

- **Description:** Ensure that the tool description is an empty string
when creating a Structured Tool from a Pydantic class in case no
description is provided
- **Issue:** Fixes #31606

---------

Co-authored-by: Mason Daugherty <mason@langchain.dev>
This commit is contained in:
Mohammad Mohtashim 2025-07-16 20:56:05 +05:00 committed by GitHub
parent 15103b0520
commit 96bf8262e2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 1 deletions

View File

@ -197,7 +197,14 @@ class StructuredTool(BaseTool):
description_ = source_function.__doc__ or None
if description_ is None and args_schema:
if isinstance(args_schema, type) and is_basemodel_subclass(args_schema):
description_ = args_schema.__doc__ or None
description_ = args_schema.__doc__
if (
description_
and "A base class for creating Pydantic models" in description_
):
description_ = ""
elif not description_:
description_ = None
elif isinstance(args_schema, dict):
description_ = args_schema.get("description")
else:

View File

@ -701,6 +701,12 @@ def test_missing_docstring() -> None:
def search_api(query: str) -> str:
return "API result"
@tool
class MyTool(BaseModel):
foo: str
assert MyTool.description == "" # type: ignore[attr-defined]
def test_create_tool_positional_args() -> None:
"""Test that positional arguments are allowed."""