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

浙公网安备 33010602011771号