Mini-Agent / examples /01_basic_tools.py
AbdulElahGwaith's picture
Upload folder using huggingface_hub
dc893fb verified
"""Example 1: Basic Tools Usage
This example demonstrates how to use the basic tools:
- ReadTool: Read file contents
- WriteTool: Create new files
- EditTool: Edit existing files
- BashTool: Execute bash commands
Based on: tests/test_tools.py
"""
import asyncio
import tempfile
from pathlib import Path
from mini_agent.tools import BashTool, EditTool, ReadTool, WriteTool
async def demo_write_tool():
"""Demo: Write a new file."""
print("\n" + "=" * 60)
print("Demo 1: WriteTool - Create a new file")
print("=" * 60)
with tempfile.TemporaryDirectory() as tmpdir:
file_path = Path(tmpdir) / "hello.txt"
tool = WriteTool()
result = await tool.execute(
path=str(file_path), content="Hello, Mini Agent!\nThis is a test file."
)
if result.success:
print(f"βœ… File created: {file_path}")
print(f"Content:\n{file_path.read_text()}")
else:
print(f"❌ Failed: {result.error}")
async def demo_read_tool():
"""Demo: Read a file."""
print("\n" + "=" * 60)
print("Demo 2: ReadTool - Read file contents")
print("=" * 60)
with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".txt") as f:
f.write("Line 1: Hello\nLine 2: World\nLine 3: Mini Agent")
temp_path = f.name
try:
tool = ReadTool()
result = await tool.execute(path=temp_path)
if result.success:
print(f"βœ… File read successfully")
print(f"Content:\n{result.content}")
else:
print(f"❌ Failed: {result.error}")
finally:
Path(temp_path).unlink()
async def demo_edit_tool():
"""Demo: Edit an existing file."""
print("\n" + "=" * 60)
print("Demo 3: EditTool - Edit file content")
print("=" * 60)
with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".txt") as f:
f.write("Python is great!\nI love Python programming.")
temp_path = f.name
try:
print(f"Original content:\n{Path(temp_path).read_text()}\n")
tool = EditTool()
result = await tool.execute(
path=temp_path, old_str="Python", new_str="Agent"
)
if result.success:
print(f"βœ… File edited successfully")
print(f"New content:\n{Path(temp_path).read_text()}")
else:
print(f"❌ Failed: {result.error}")
finally:
Path(temp_path).unlink()
async def demo_bash_tool():
"""Demo: Execute bash commands."""
print("\n" + "=" * 60)
print("Demo 4: BashTool - Execute bash commands")
print("=" * 60)
tool = BashTool()
# Example 1: List files
print("\nCommand: ls -la")
result = await tool.execute(command="ls -la")
if result.success:
print(f"βœ… Command executed successfully")
print(f"Output:\n{result.content[:200]}...")
# Example 2: Get current directory
print("\nCommand: pwd")
result = await tool.execute(command="pwd")
if result.success:
print(f"βœ… Current directory: {result.content.strip()}")
# Example 3: Echo
print("\nCommand: echo 'Hello from BashTool!'")
result = await tool.execute(command="echo 'Hello from BashTool!'")
if result.success:
print(f"βœ… Output: {result.content.strip()}")
async def main():
"""Run all demos."""
print("=" * 60)
print("Basic Tools Usage Examples")
print("=" * 60)
print("\nThese examples show how to use the core tools directly.")
print("In a real agent scenario, the LLM decides which tools to use.\n")
await demo_write_tool()
await demo_read_tool()
await demo_edit_tool()
await demo_bash_tool()
print("\n" + "=" * 60)
print("All demos completed! βœ…")
print("=" * 60)
if __name__ == "__main__":
asyncio.run(main())