langchain_core.tools
.tool¶
- langchain_core.tools.tool(*args: Union[str, Callable, Runnable], return_direct: bool = False, args_schema: Optional[Type] = None, infer_schema: bool = True, response_format: Literal['content', 'content_and_artifact'] = 'content', parse_docstring: bool = False, error_on_invalid_docstring: bool = True) Callable [source]¶
将函数转换为工具,可以使用或不需要参数。
- 参数
*args (Union[str, Callable, Runnable]) – 工具的参数。
return_direct (bool) – 是否直接从工具返回而不是继续代理循环。默认为False。
args_schema (Optional[Type]) – 用户指定的可选参数模式。默认为None。
infer_schema (bool) – 是否从函数的签名中推断参数的架构。这也使得生成的工具接受其run()函数的字典输入。默认为True。
response_format (Literal['content', 'content_and_artifact']) – 工具响应格式。如果是“content”,则工具的输出被视为ToolMessage的内容。如果是“content_and_artifact”,则期望输出为一个两个元素的元组,对应于ToolMessage的(content, artifact)。默认为“content”。
parse_docstring (布尔值) – 如果启用了
infer_schema
和parse_docstring
,则尝试从 Google 风格函数文档字符串中解析参数描述。默认值是 False。error_on_invalid_docstring (布尔值) – 如果提供了
parse_docstring
,配置是否在无效的 Google 风格文档字符串上引发 ValueError。默认值是 True。
- 返回
工具。
- 返回类型
可调用
- 要求
函数必须是 (str) -> str 类型
函数必须具有文档字符串
示例
@tool def search_api(query: str) -> str: # Searches the API for the query. return @tool("search", return_direct=True) def search_api(query: str) -> str: # Searches the API for the query. return @tool(response_format="content_and_artifact") def search_api(query: str) -> Tuple[str, dict]: return "partial json of results", {"full": "object of results"}
新增于版本 0.2.14。
解析 Google 风格文档字符串
@tool(parse_docstring=True) def foo(bar: str, baz: int) -> str: """The foo. Args: bar: The bar. baz: The baz. """ return bar foo.args_schema.schema()
{ "title": "fooSchema", "description": "The foo.", "type": "object", "properties": { "bar": { "title": "Bar", "description": "The bar.", "type": "string" }, "baz": { "title": "Baz", "description": "The baz.", "type": "integer" } }, "required": [ "bar", "baz" ] }
注意,默认情况下,如果文档字符串被认为无效,将引发 ValueError。如果文档字符串包含函数签名中未定义的参数,或者无法解析为摘要和“Args:”块,则认为它是无效的。以下是一些示例:
# No args section def invalid_docstring_1(bar: str, baz: int) -> str: """The foo.""" return bar # Improper whitespace between summary and args section def invalid_docstring_2(bar: str, baz: int) -> str: """The foo. Args: bar: The bar. baz: The baz. """ return bar # Documented args absent from function signature def invalid_docstring_3(bar: str, baz: int) -> str: """The foo. Args: banana: The bar. monkey: The baz. """ return bar