From 05cd56ca54f866d5746f4458fcaa0b0f0e368be1 Mon Sep 17 00:00:00 2001 From: Brandon Hancock Date: Fri, 25 Oct 2024 15:37:38 -0400 Subject: [PATCH] improve tool text descriptoin and args --- src/crewai/agent.py | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/crewai/agent.py b/src/crewai/agent.py index f68d6401b..5950e6624 100644 --- a/src/crewai/agent.py +++ b/src/crewai/agent.py @@ -393,30 +393,22 @@ class Agent(BaseAgent): return description def _render_text_description_and_args(self, tools: List[Any]) -> str: - """Render the tool name, description, and args in plain text. - - Output will be in the format of: - - .. code-block:: markdown - - search: This tool is used for search, args: {"query": {"type": "string"}} - calculator: This tool is used for math, \ - args: {"expression": {"type": "string"}} - """ tool_strings = [] for tool in tools: - args_schema = str(tool.model_fields) - if hasattr(tool, "func") and tool.func: - sig = signature(tool.func) - description = ( - f"Tool Name: {tool.name}{sig}\nTool Description: {tool.description}" - ) - else: - description = ( - f"Tool Name: {tool.name}\nTool Description: {tool.description}" - ) + args_schema = { + name: { + "description": field.description, + "type": field.annotation.__name__, + } + for name, field in tool.args_schema.model_fields.items() + } + description = ( + f"Tool Name: {tool.name}\nTool Description: {tool.description}" + ) tool_strings.append(f"{description}\nTool Arguments: {args_schema}") + print("TOOL STRINGS:", "\n".join(tool_strings)) + return "\n".join(tool_strings) def _validate_docker_installation(self) -> None: