fix tool convert bug and add more tests

This commit is contained in:
yzlin 2024-04-11 16:55:52 +08:00
parent 391eda6a35
commit 5376a86929
2 changed files with 22 additions and 3 deletions

View file

@ -20,8 +20,7 @@ def convert_code_to_tool_schema(obj, include: list[str] = None) -> dict:
continue
# method_doc = inspect.getdoc(method)
method_doc = get_class_method_docstring(obj, name)
if method_doc:
schema["methods"][name] = function_docstring_to_schema(method, method_doc)
schema["methods"][name] = function_docstring_to_schema(method, method_doc)
elif inspect.isfunction(obj):
schema = function_docstring_to_schema(obj, docstring)
@ -39,7 +38,7 @@ def convert_code_to_tool_schema_ast(code: str) -> list[dict]:
return visitor.get_tool_schemas()
def function_docstring_to_schema(fn_obj, docstring) -> dict:
def function_docstring_to_schema(fn_obj, docstring="") -> dict:
"""
Converts a function's docstring into a schema dictionary.

View file

@ -48,6 +48,14 @@ class DummyClass:
pass
class DummySubClass(DummyClass):
"""sub class docstring"""
def sub_method(self, df: pd.DataFrame):
"""sub method"""
pass
def dummy_fn(
df: pd.DataFrame,
s: str,
@ -117,6 +125,18 @@ def test_convert_code_to_tool_schema_class():
assert schema == expected
def test_convert_code_to_tool_schema_subclass():
schema = convert_code_to_tool_schema(DummySubClass)
assert "sub_method" in schema["methods"] # sub class method should be included
assert "fit" in schema["methods"] # parent class method should be included
def test_convert_code_to_tool_schema_include():
schema = convert_code_to_tool_schema(DummyClass, include=["fit"])
assert "fit" in schema["methods"]
assert "transform" not in schema["methods"]
def test_convert_code_to_tool_schema_function():
expected = {
"type": "function",