langchian中定义工具 google-style

在langchain中定义工具支持google-style的方式定义工具,定义方式如下

@tool(parse_docstring=True)
def calculate(a: float, b: float, operation: str) -> float:
    """
    工具函数:计算两个数字的运算结果
    
    Args:
        a: 第一个数字
        b: 第2个数字
        operation: 运算类型,只能是add,subtract,multiply和divide中的一个
    returns: 返回结果
""" print(f"调用 calculate 工具,第一个数字:{a},第二个数字:{b},运算类型:{operation}") result = 0.0 match operation: case "add": result = a + b case "subtract": result = a - b case "multiply": result = a * b case "divide": if b != 0: result = a /b else: raise ValueError("除数不能为0") return result print(calculate.name) print(calculate.description) print(calculate.args) print(calculate.args_schema.model_json_schema()) print(calculate.return_direct)

  函数说明与Args之间必须空一行,行数说可以紧跟在三个双引号之后也可以写在新的一行;Agrs:后是参数说明,可以紧跟其后也可以另起一行

       

@tool(parse_docstring=True)
def calculate1(a: float, b: float, operation: str) -> float:
    """ 工具函数:计算两个数字的运算结果
    
    Args:
        a: 第一个数字
        b: 第2个数字
        operation: 运算类型,只能是add,subtract,multiply和divide中的一个
    returns: 返回结果
""" print(f"调用 calculate 工具,第一个数字:{a},第二个数字:{b},运算类型:{operation}") result = 0.0 match operation: case "add": result = a + b case "subtract": result = a - b case "multiply": result = a * b case "divide": if b != 0: result = a /b else: raise ValueError("除数不能为0") return result

@tool(parse_docstring=True)
def calculate2(a: float, b: float, operation: str) -> float:
    """
    工具函数:计算两个数字的运算结果
    
    Args:
    a: 第一个数字
    b: 第2个数字
    operation: 运算类型,只能是add,subtract,multiply和divide中的一个
    returns: 返回结果
""" print(f"调用 calculate 工具,第一个数字:{a},第二个数字:{b},运算类型:{operation}") result = 0.0 match operation: case "add": result = a + b case "subtract": result = a - b case "multiply": result = a * b case "divide": if b != 0: result = a /b else: raise ValueError("除数不能为0") return result

@tool(parse_docstring=True)
def calculate3(a: float, b: float, operation: str) -> float:
    """
    工具函数:计算两个数字的运算结果
    
    Args: a: 第一个数字 b: 第2个数字 operation: 运算类型,只能是add,subtract,multiply和divide中的一个

    returns: 返回结果
""" print(f"调用 calculate 工具,第一个数字:{a},第二个数字:{b},运算类型:{operation}") result = 0.0 match operation: case "add": result = a + b case "subtract": result = a - b case "multiply": result = a * b case "divide": if b != 0: result = a /b else: raise ValueError("除数不能为0") return result

@tool(parse_docstring=True)
def calculate4(a: float, b: float, operation: str) -> float:
    """
    工具函数:计算两个数字的运算结果
    
    Args: a: 第一个数字; b: 第2个数字.operation: 运算类型,只能是add,subtract,multiply和divide中的一个

   returns: 返回结果
""" print(f"调用 calculate 工具,第一个数字:{a},第二个数字:{b},运算类型:{operation}") result = 0.0 match operation: case "add": result = a + b case "subtract": result = a - b case "multiply": result = a * b case "divide": if b != 0: result = a /b else: raise ValueError("除数不能为0") return result

  源码中的样例如下(这个好像让写注释的人很发燥了)

Parse Google-style docstrings:

        @tool(parse_docstring=True)
        def foo(bar: str, baz: int) -> str:
            \"\"\"The foo.

            Args:
                bar: The bar.
                baz: The baz.
            \"\"\"
            return bar

  

posted @ 2026-01-19 11:35  干瘪咸鱼  阅读(0)  评论(0)    收藏  举报