> ## Documentation Index
> Fetch the complete documentation index at: https://docs.definable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Examples Overview

> Runnable code examples for every major feature.

The `definable/examples/` directory contains self-contained, runnable Python scripts demonstrating all major features. Each example includes a docstring explaining what it covers and any required API keys.

## Running Examples

```bash theme={null}
# From the repository root
python definable/examples/models/01_basic_invoke.py
python definable/examples/agents/02_agent_with_tools.py
```

## Prerequisites

Set API keys for the providers you want to use:

```bash theme={null}
export OPENAI_API_KEY="sk-..."
export DEEPSEEK_API_KEY="sk-..."       # For DeepSeek examples
export MOONSHOT_API_KEY="sk-..."       # For Moonshot examples
export XAI_API_KEY="xai-..."           # For xAI examples
export VOYAGE_API_KEY="pa-..."         # For Voyage AI embeddings
export COHERE_API_KEY="..."            # For Cohere reranking
```

Only the keys for examples you want to run are needed.

## Example Categories

<CardGroup cols={3}>
  <Card title="Models" icon="microchip" href="/examples/models">
    Invocation, streaming, structured output, multi-provider.
  </Card>

  <Card title="Agents" icon="robot" href="/examples/agents">
    Simple agents, tools, multi-turn, streaming.
  </Card>

  <Card title="Teams" icon="users" href="/examples/teams">
    Coordinate, route, collaborate, and tasks modes.
  </Card>

  <Card title="Workflows" icon="diagram-project" href="/examples/workflows">
    Sequential, parallel, conditional, loop, and router.
  </Card>

  <Card title="Tools" icon="wrench" href="/examples/tools">
    Parameters, async tools, hooks, caching, dependencies.
  </Card>

  <Card title="Knowledge" icon="book" href="/examples/knowledge">
    RAG, chunking, embedders, vector databases, reranking.
  </Card>

  <Card title="Memory" icon="brain" href="/examples/memory">
    Stores, agent integration, summarization.
  </Card>

  <Card title="Interfaces" icon="comments" href="/examples/interfaces">
    Discord, Slack, Telegram, multi-interface.
  </Card>

  <Card title="Browser" icon="globe" href="/examples/browser">
    Playwright CDP automation, element refs, forms.
  </Card>

  <Card title="Guardrails" icon="shield" href="/examples/guardrails">
    Input, output, and tool guardrails with composition.
  </Card>

  <Card title="Security" icon="lock" href="/examples/security">
    Tool policies, rate limiting, security audits.
  </Card>

  <Card title="Evaluation" icon="chart-bar" href="/examples/evaluation">
    Accuracy, performance, reliability, agent-as-judge.
  </Card>

  <Card title="MCP" icon="plug" href="/examples/mcp">
    MCP servers, resources, config, mock servers.
  </Card>

  <Card title="Readers" icon="file-lines" href="/examples/readers">
    PDF, DOCX, custom parsers, provider overrides.
  </Card>

  <Card title="Skills" icon="puzzle-piece" href="/examples/skills">
    Built-in skills, markdown skills, macOS control.
  </Card>
</CardGroup>

## Directory Structure

<Tree>
  <Tree.Folder name="examples" defaultOpen>
    <Tree.Folder name="models" defaultOpen>
      <Tree.File name="01_basic_invoke.py" />

      <Tree.File name="02_async_invoke.py" />

      <Tree.File name="03_streaming.py" />

      <Tree.File name="04_structured_output.py" />

      <Tree.File name="05_multi_provider.py" />

      <Tree.File name="06_vision_and_audio.py" />
    </Tree.Folder>

    <Tree.Folder name="agents" defaultOpen>
      <Tree.File name="01_simple_agent.py" />

      <Tree.File name="02_agent_with_tools.py" />

      <Tree.File name="03_agent_with_toolkit.py" />

      <Tree.File name="04_multi_turn.py" />

      <Tree.File name="05_streaming_agent.py" />

      <Tree.File name="06_async_agent.py" />
    </Tree.Folder>

    <Tree.Folder name="tools" defaultOpen>
      <Tree.File name="01_basic_tool.py" />

      <Tree.File name="02_tool_parameters.py" />

      <Tree.File name="03_async_tools.py" />

      <Tree.File name="04_tool_hooks.py" />

      <Tree.File name="05_tool_caching.py" />

      <Tree.File name="06_tool_dependencies.py" />
    </Tree.Folder>

    <Tree.Folder name="toolkits" defaultOpen>
      <Tree.File name="01_custom_toolkit.py" />

      <Tree.File name="02_toolkit_dependencies.py" />

      <Tree.File name="03_knowledge_toolkit.py" />
    </Tree.Folder>

    <Tree.Folder name="knowledge" defaultOpen>
      <Tree.File name="01_basic_rag.py" />

      <Tree.File name="02_document_management.py" />

      <Tree.File name="03_chunking_strategies.py" />

      <Tree.File name="04_custom_embedder.py" />

      <Tree.File name="05_vector_databases.py" />

      <Tree.File name="06_agent_with_knowledge.py" />

      <Tree.File name="07_reranking.py" />
    </Tree.Folder>

    <Tree.Folder name="memory" defaultOpen>
      <Tree.File name="01_basic_memory.py" />

      <Tree.File name="02_store_protocol.py" />

      <Tree.File name="03_store_backends.py" />
    </Tree.Folder>

    <Tree.Folder name="interfaces" defaultOpen>
      <Tree.File name="01_discord_bot.py" />

      <Tree.File name="02_multi_interface.py" />

      <Tree.File name="03_desktop_control_via_telegram.py" />

      <Tree.File name="04_gateway_telegram.py" />
    </Tree.Folder>

    <Tree.Folder name="readers" defaultOpen>
      <Tree.File name="01_basic_readers.py" />

      <Tree.File name="02_custom_reader.py" />

      <Tree.File name="03_standalone_usage.py" />

      <Tree.File name="04_provider_override.py" />
    </Tree.Folder>

    <Tree.Folder name="mcp" defaultOpen>
      <Tree.File name="01_basic_mcp.py" />

      <Tree.File name="02_multiple_servers.py" />

      <Tree.File name="03_resources.py" />

      <Tree.File name="04_config_file.py" />

      <Tree.File name="05_mock_server_basics.py" />

      <Tree.File name="06_prompts_provider.py" />

      <Tree.File name="07_error_handling.py" />

      <Tree.File name="08_mock_server_agent.py" />
    </Tree.Folder>

    <Tree.Folder name="runtime" defaultOpen>
      <Tree.File name="01_webhook_basic.py" />

      <Tree.File name="02_cron_basic.py" />

      <Tree.File name="03_unified.py" />
    </Tree.Folder>

    <Tree.Folder name="skills" defaultOpen>
      <Tree.File name="01_markdown_skills.py" />

      <Tree.File name="02_macos_basic.py" />
    </Tree.Folder>

    <Tree.Folder name="auth" defaultOpen>
      <Tree.File name="01_unified_auth.py" />
    </Tree.Folder>

    <Tree.Folder name="guardrails" defaultOpen>
      <Tree.File name="01_basic_guardrails.py" />

      <Tree.File name="02_custom_guardrails.py" />
    </Tree.Folder>

    <Tree.Folder name="replay" defaultOpen>
      <Tree.File name="01_basic_replay.py" />
    </Tree.Folder>

    <Tree.Folder name="research" defaultOpen>
      <Tree.File name="01_basic_research.py" />

      <Tree.File name="02_agent_with_research.py" />
    </Tree.Folder>

    <Tree.Folder name="claude_code" defaultOpen>
      <Tree.File name="01_basic.py" />

      <Tree.File name="02_full_features.py" />

      <Tree.File name="03_coding_agent.py" />
    </Tree.Folder>

    <Tree.Folder name="browser" defaultOpen>
      <Tree.File name="01_browser_agent.py" />

      <Tree.File name="02_browser_tools_direct.py" />

      <Tree.File name="03_connect_existing_browser.py" />
    </Tree.Folder>

    <Tree.Folder name="advanced" defaultOpen>
      <Tree.File name="01_middleware.py" />

      <Tree.File name="02_tracing.py" />

      <Tree.File name="03_error_handling.py" />

      <Tree.File name="04_cost_tracking.py" />

      <Tree.File name="05_pipeline_customization.py" />

      <Tree.File name="06_all_features.py" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>
