Import: from gaia.agents.chat.tools.file_tools import FileToolsMixin
Purpose: Reusable tool sets that can be mixed into your agents.
Available Mixins: For complete API specifications of all 17 mixins, see Specifications → Tool Mixins
9.1 File Watching Mixin
Detailed Spec: FileToolsMixin
The chat-tools FileToolsMixin is narrowly scoped to watching directories
for new documents; it does not register read/write/list tools. Use
FileSearchToolsMixin (§9.4 below) when you need generic filesystem I/O.
from gaia.agents.base.agent import Agent
from gaia.agents.chat.tools.file_tools import FileToolsMixin
class MyAgent(Agent, FileToolsMixin):
"""Agent that can watch directories for new files."""
def _register_tools(self):
super()._register_tools()
self.register_file_tools()
# Registers: add_watch_directory(directory: str) -> dict
Import: from gaia.agents.chat.tools.rag_tools import RAGToolsMixin
Detailed Spec: RAGToolsMixin
from gaia.agents.base.agent import Agent
from gaia.agents.chat.tools.rag_tools import RAGToolsMixin
class MyAgent(Agent, RAGToolsMixin):
"""Agent with document Q&A tools."""
def __init__(self, documents_path: str = "./docs", **kwargs):
self.documents_path = documents_path
super().__init__(**kwargs)
def _register_tools(self):
super()._register_tools()
self.register_rag_tools()
# Registers:
# - query_documents(query, max_chunks=...)
# - query_specific_file(file_path, query, max_chunks=...)
# - search_indexed_chunks(query, limit=...)
# - index_document(file_path) # singular — one file per call
# - index_directory(directory_path)
# - list_indexed_documents()
# - summarize_document(file_path, summary_type="detailed")
# - dump_document(file_path)
# - evaluate_retrieval(query)
# - rag_status()
9.3 Shell Commands Mixin
Import: from gaia.agents.chat.tools.shell_tools import ShellToolsMixin
Detailed Spec: ShellToolsMixin
from gaia.agents.base.agent import Agent
from gaia.agents.chat.tools.shell_tools import ShellToolsMixin
class MyAgent(Agent, ShellToolsMixin):
"""Agent that can execute shell commands."""
def _register_tools(self):
super()._register_tools()
self.register_shell_tools()
# Registers:
# - run_shell_command(command, working_directory=None, timeout=30)
9.4 File Search Mixin
Import: from gaia.agents.tools.file_tools import FileSearchToolsMixin
Detailed Spec: FileSearchToolsMixin
FileSearchToolsMixin is the general-purpose filesystem toolbox — it’s what
powers read_file / write_file in the chat agent.
from gaia.agents.base.agent import Agent
from gaia.agents.tools.file_tools import FileSearchToolsMixin
class MyAgent(Agent, FileSearchToolsMixin):
"""Agent with generic file I/O and search capabilities."""
def _register_tools(self):
super()._register_tools()
self.register_file_search_tools()
# Registers:
# - search_file(filename, directory=".")
# - search_directory(pattern, directory=".")
# - search_file_content(pattern, directory=".", file_pattern="*")
# - read_file(file_path, start_line=None, end_line=None)
# - write_file(file_path, content, append=False)
# - browse_directory(directory_path=None, show_hidden=False, sort_by="name")
# - get_file_info(file_path)
# - analyze_data_file(file_path, ...)
# - list_recent_files(location="all", ...)
9.5 Stable Diffusion Mixin
Import: from gaia.sd import SDToolsMixin
Detailed Guide: Image Generation Guide
Source: src/gaia/sd/mixin.py
from gaia.agents.base.agent import Agent
from gaia.sd import SDToolsMixin
class MyImageAgent(Agent, SDToolsMixin):
"""Agent with image generation tools."""
def __init__(self):
super().__init__(
model_id="Qwen3-8B-GGUF", # LLM for orchestration
min_context_size=8192, # 8K sufficient for SD
)
# Initialize SD tools (auto-registers generate_image, list_sd_models, etc.)
self.init_sd(
output_dir=".gaia/cache/sd/images",
default_model="SDXL-Turbo", # Fast, good quality
)
def _register_tools(self):
pass # Tools already registered by init_sd()
def _get_system_prompt(self):
return "You generate images. Use generate_image with enhanced prompts."
# Usage
agent = MyImageAgent()
result = agent.process_query("create a sunset over mountains")
# Agent enhances prompt and calls generate_image automatically
Available Tools:
generate_image(prompt, model, size, steps, cfg_scale, seed) - Generate images with SD
list_sd_models() - Show available models
get_generation_history(limit) - See generated images from session
Supported Models:
- SDXL-Turbo (default) - Fast, 512x512, ~17s
- SD-Turbo - Faster, 512x512, ~13s
- SDXL-Base-1.0 - Photorealistic, 1024x1024, ~9min
- SD-1.5 - Legacy, 512x512, ~88s
9.6 Vision Language Model Mixin
Import: from gaia.vlm import VLMToolsMixin
Source: src/gaia/vlm/mixin.py
from gaia.agents.base.agent import Agent
from gaia.vlm import VLMToolsMixin
class MyVisionAgent(Agent, VLMToolsMixin):
"""Agent with vision analysis tools."""
def __init__(self):
super().__init__(min_context_size=8192)
# Initialize VLM tools (auto-registers analyze_image, create_story_from_image, etc.)
self.init_vlm(model="Qwen3-VL-4B-Instruct-GGUF")
def _register_tools(self):
pass # Tools already registered by init_vlm()
def _get_system_prompt(self):
return "You analyze images. Use VLM tools for descriptions, stories, and Q&A."
# Usage
agent = MyVisionAgent()
result = agent.process_query("analyze this image: photo.jpg")
# Agent calls analyze_image automatically
Available Tools:
analyze_image(image_path, focus) - Get detailed image description
create_story_from_image(image_path, story_style) - Generate creative narrative
answer_question_about_image(image_path, question) - Answer specific questions
Focus Options: composition, colors, mood, details, all (default)
Story Styles: whimsical, dramatic, educational, adventure, any (default)