mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
- Added documentation for file operation tools - Added documentation for search tools - Added documentation for web scraping tools - Added documentation for specialized tools (RAG, code interpreter) - Added documentation for API-based tools (SerpApi, Serply) Link to Devin run: https://app.devin.ai/sessions/d2f72a2dfb214659aeb3e9f67ed961f7 Co-Authored-By: Joe Moura <joao@crewai.com>
194 lines
4.1 KiB
Plaintext
194 lines
4.1 KiB
Plaintext
---
|
|
title: FileReadTool
|
|
description: A tool for reading file contents with flexible path specification
|
|
icon: file-text
|
|
---
|
|
|
|
## FileReadTool
|
|
|
|
The FileReadTool provides functionality to read file contents with support for both fixed and dynamic file path specification. It includes comprehensive error handling for common file operations and maintains clear descriptions of its configured state.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install 'crewai[tools]'
|
|
```
|
|
|
|
## Usage Example
|
|
|
|
```python
|
|
from crewai import Agent
|
|
from crewai_tools import FileReadTool
|
|
|
|
# Method 1: Initialize with specific file
|
|
reader = FileReadTool(file_path="/path/to/data.txt")
|
|
|
|
# Method 2: Initialize without file (specify at runtime)
|
|
flexible_reader = FileReadTool()
|
|
|
|
# Create an agent with the tool
|
|
file_processor = Agent(
|
|
role='File Processor',
|
|
goal='Read and process file contents',
|
|
backstory='Expert at handling file operations and content processing.',
|
|
tools=[reader],
|
|
verbose=True
|
|
)
|
|
```
|
|
|
|
## Input Schema
|
|
|
|
```python
|
|
class FileReadToolSchema(BaseModel):
|
|
file_path: str = Field(
|
|
description="Mandatory file full path to read the file"
|
|
)
|
|
```
|
|
|
|
## Function Signature
|
|
|
|
```python
|
|
def __init__(
|
|
self,
|
|
file_path: Optional[str] = None,
|
|
**kwargs: Any
|
|
) -> None:
|
|
"""
|
|
Initialize the file read tool.
|
|
|
|
Args:
|
|
file_path (Optional[str]): Path to file to read (optional)
|
|
**kwargs: Additional arguments passed to BaseTool
|
|
"""
|
|
|
|
def _run(
|
|
self,
|
|
**kwargs: Any
|
|
) -> str:
|
|
"""
|
|
Read and return file contents.
|
|
|
|
Args:
|
|
file_path (str, optional): Override default file path
|
|
**kwargs: Additional arguments
|
|
|
|
Returns:
|
|
str: File contents or error message
|
|
"""
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. File Path Management:
|
|
- Use absolute paths for reliability
|
|
- Verify file existence before operations
|
|
- Handle path resolution properly
|
|
|
|
2. Error Handling:
|
|
- Check for file existence
|
|
- Handle permission issues
|
|
- Manage encoding errors
|
|
- Process file access failures
|
|
|
|
3. Performance Considerations:
|
|
- Close files after reading
|
|
- Handle large files appropriately
|
|
- Consider memory constraints
|
|
|
|
4. Security Practices:
|
|
- Validate file paths
|
|
- Check file permissions
|
|
- Avoid path traversal issues
|
|
|
|
## Integration Example
|
|
|
|
```python
|
|
from crewai import Agent, Task, Crew
|
|
from crewai_tools import FileReadTool
|
|
|
|
# Initialize tool with specific file
|
|
reader = FileReadTool(file_path="/path/to/config.txt")
|
|
|
|
# Create agent
|
|
processor = Agent(
|
|
role='File Processor',
|
|
goal='Process configuration files',
|
|
backstory='Expert at reading and analyzing configuration files.',
|
|
tools=[reader]
|
|
)
|
|
|
|
# Define task
|
|
read_task = Task(
|
|
description="""Read and analyze the contents of
|
|
the configuration file.""",
|
|
agent=processor
|
|
)
|
|
|
|
# The tool will use the default file path
|
|
|
|
# Create crew
|
|
crew = Crew(
|
|
agents=[processor],
|
|
tasks=[read_task]
|
|
)
|
|
|
|
# Execute
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
## Advanced Usage
|
|
|
|
### Dynamic File Selection
|
|
```python
|
|
# Initialize without file path
|
|
flexible_reader = FileReadTool()
|
|
|
|
# Read different files
|
|
config_content = flexible_reader.run(
|
|
file_path="/path/to/config.txt"
|
|
)
|
|
|
|
log_content = flexible_reader.run(
|
|
file_path="/path/to/logs.txt"
|
|
)
|
|
```
|
|
|
|
### Multiple File Processing
|
|
```python
|
|
# Create tools for different files
|
|
config_reader = FileReadTool(file_path="/path/to/config.txt")
|
|
log_reader = FileReadTool(file_path="/path/to/logs.txt")
|
|
|
|
# Create agent with multiple tools
|
|
processor = Agent(
|
|
role='File Analyst',
|
|
goal='Analyze multiple file types',
|
|
tools=[config_reader, log_reader]
|
|
)
|
|
```
|
|
|
|
### Error Handling Example
|
|
```python
|
|
try:
|
|
reader = FileReadTool()
|
|
content = reader.run(
|
|
file_path="/path/to/file.txt"
|
|
)
|
|
print(content)
|
|
except Exception as e:
|
|
print(f"Error reading file: {str(e)}")
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Inherits from BaseTool
|
|
- Supports fixed or dynamic file paths
|
|
- Comprehensive error handling
|
|
- Thread-safe operations
|
|
- Clear error messages
|
|
- Flexible path specification
|
|
- Maintains tool description
|
|
- Handles common file errors
|
|
- Supports various file types
|
|
- Memory-efficient operations
|