From 96429040de61a9bb65692a660c8d6a82110ab371 Mon Sep 17 00:00:00 2001 From: Adan Butto Date: Sun, 20 Oct 2024 18:54:01 +0300 Subject: [PATCH] Fixed File Writer tool errors for better interaction with the agents --- .../file_writer_tool/file_writer_tool.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/crewai_tools/tools/file_writer_tool/file_writer_tool.py b/src/crewai_tools/tools/file_writer_tool/file_writer_tool.py index ce0c4ebd9..428502d46 100644 --- a/src/crewai_tools/tools/file_writer_tool/file_writer_tool.py +++ b/src/crewai_tools/tools/file_writer_tool/file_writer_tool.py @@ -1,19 +1,16 @@ import os -from typing import Any, Optional, Type - +from typing import Any, Type from pydantic import BaseModel - -from ..base_tool import BaseTool - +from crewai_tools import BaseTool +from distutils.util import strtobool class FileWriterToolInput(BaseModel): filename: str content: str - directory: Optional[str] = None - overwrite: bool = False - - -class FileWriterTool(BaseTool): + directory: str = "./" + overwrite: str = "False" + +class FileWriterTool2(BaseTool): name: str = "File Writer Tool" description: str = ( "A tool to write content to a specified file. Accepts filename, content, and optionally a directory path and overwrite flag as input." @@ -23,11 +20,14 @@ class FileWriterTool(BaseTool): def _run(self, **kwargs: Any) -> str: try: # Create the directory if it doesn't exist - if kwargs["directory"] and not os.path.exists(kwargs["directory"]): + if kwargs.get("directory") and not os.path.exists(kwargs["directory"]): os.makedirs(kwargs["directory"]) # Construct the full path - filepath = os.path.join(kwargs["directory"] or "", kwargs["filename"]) + filepath = os.path.join(kwargs.get("directory") or "", kwargs["filename"]) + + # Convert overwrite to boolean + kwargs["overwrite"] = bool(strtobool(kwargs["overwrite"])) # Check if file exists and overwrite is not allowed if os.path.exists(filepath) and not kwargs["overwrite"]: @@ -42,5 +42,7 @@ class FileWriterTool(BaseTool): return ( f"File {filepath} already exists and overwrite option was not passed." ) + except KeyError as e: + return f"An error occurred while accessing key: {str(e)}" except Exception as e: - return f"An error occurred while writing to the file: {str(e)}" + return f"An error occurred while writing to the file: {str(e)}" \ No newline at end of file