mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-05-12 17:22:37 +02:00
fix tool convert bug and add more tests
This commit is contained in:
parent
391eda6a35
commit
5376a86929
2 changed files with 22 additions and 3 deletions
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue