Enhance file reading with error handling

- Wrapped the file reading functionality inside a `_run` method.
- Added error handling to return a descriptive error message if an exception occurs during file reading.
This commit is contained in:
Victor C Tavernari
2024-03-31 23:32:40 +01:00
parent 80f9613959
commit 92abe0b726

View File

@@ -2,32 +2,45 @@ from typing import Optional, Type, Any
from pydantic.v1 import BaseModel, Field
from ..base_tool import BaseTool
class FixedFileReadToolSchema(BaseModel):
"""Input for FileReadTool."""
pass
"""Input for FileReadTool."""
pass
class FileReadToolSchema(FixedFileReadToolSchema):
"""Input for FileReadTool."""
file_path: str = Field(..., description="Mandatory file full path to read the file")
"""Input for FileReadTool."""
file_path: str = Field(
...,
description="Mandatory file full path to read the file"
)
class FileReadTool(BaseTool):
name: str = "Read a file's content"
description: str = "A tool that can be used to read a file's content."
args_schema: Type[BaseModel] = FileReadToolSchema
file_path: Optional[str] = None
name: str = "Read a file's content"
description: str = "A tool that can be used to read a file's content."
args_schema: Type[BaseModel] = FileReadToolSchema
file_path: Optional[str] = None
def __init__(self, file_path: Optional[str] = None, **kwargs):
super().__init__(**kwargs)
if file_path is not None:
self.file_path = file_path
self.description = f"A tool that can be used to read {file_path}'s content."
self.args_schema = FixedFileReadToolSchema
self._generate_description()
def __init__(
self,
file_path: Optional[str] = None,
**kwargs
):
super().__init__(**kwargs)
if file_path is not None:
self.file_path = file_path
self.description = f"A tool that can be used to read {file_path}'s content."
self.args_schema = FixedFileReadToolSchema
self._generate_description()
def _run(
self,
**kwargs: Any,
) -> Any:
file_path = kwargs.get('file_path', self.file_path)
with open(file_path, 'r') as file:
return file.read()
def _run(
self,
**kwargs: Any,
) -> Any:
try:
file_path = kwargs.get('file_path', self.file_path)
with open(file_path, 'r') as file:
return file.read()
except Exception as e:
return f"Fail to read the file {file_path}. Error: {e}"