Skip to main content
You are viewing: Quick Reference - Common mixin usage patternsSee also: 17 Detailed Mixin Specifications (under Specifications → Tool Mixins)
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

9.2 RAG Tools Mixin

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)