| """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() |
|
|
| |
| 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]}...") |
|
|
| |
| print("\nCommand: pwd") |
| result = await tool.execute(command="pwd") |
| if result.success: |
| print(f"β
Current directory: {result.content.strip()}") |
|
|
| |
| 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()) |
|
|