Skip to content

Examples

Complete examples showing how to use pydantic-ai-backend with pydantic-ai agents.

Getting Started

Example Description
CLI Agent Interactive CLI coding assistant
Local Backend File operations with LocalBackend

Production

Example Description
Docker Sandbox Safe code execution in Docker
Multi-User Web App FastAPI server with user isolation

Full Examples

Complete working examples in the examples/ directory:

Directory Description
local_cli/ CLI coding assistant with pydantic-ai
web_production/ Multi-user web app with Docker

Quick Reference

CLI Agent (LocalBackend)

Python
from dataclasses import dataclass
from pydantic_ai import Agent
from pydantic_ai_backends import LocalBackend, create_console_toolset

@dataclass
class Deps:
    backend: LocalBackend

backend = LocalBackend(root_dir=".")
toolset = create_console_toolset()

agent = Agent("openai:gpt-4o", deps_type=Deps)
agent = agent.with_toolset(toolset)

result = agent.run_sync(
    "Create a hello.py script and run it",
    deps=Deps(backend=backend),
)

Safe Code Execution (DockerSandbox)

Python
from dataclasses import dataclass
from pydantic_ai import Agent
from pydantic_ai_backends import DockerSandbox, create_console_toolset

@dataclass
class Deps:
    backend: DockerSandbox

sandbox = DockerSandbox(runtime="python-datascience")

try:
    toolset = create_console_toolset()
    agent = Agent("openai:gpt-4o", deps_type=Deps)
    agent = agent.with_toolset(toolset)

    result = agent.run_sync(
        "Analyze data with pandas and create a chart",
        deps=Deps(backend=sandbox),
    )
finally:
    sandbox.stop()

Multi-User Web App (SessionManager)

Python
from dataclasses import dataclass
from pydantic_ai import Agent
from pydantic_ai_backends import SessionManager, DockerSandbox, create_console_toolset

@dataclass
class UserDeps:
    backend: DockerSandbox
    user_id: str

manager = SessionManager(workspace_root="/app/workspaces")
toolset = create_console_toolset()
agent = Agent("openai:gpt-4o", deps_type=UserDeps).with_toolset(toolset)

async def handle_request(user_id: str, message: str):
    sandbox = await manager.get_or_create(user_id)
    result = await agent.run(message, deps=UserDeps(backend=sandbox, user_id=user_id))
    return result.output

Unit Testing (StateBackend)

Python
from dataclasses import dataclass
from pydantic_ai import Agent
from pydantic_ai.models.test import TestModel
from pydantic_ai_backends import StateBackend, create_console_toolset

@dataclass
class Deps:
    backend: StateBackend

def test_agent_file_operations():
    backend = StateBackend()
    toolset = create_console_toolset(include_execute=False)

    agent = Agent(TestModel(), deps_type=Deps)
    agent = agent.with_toolset(toolset)

    # Pre-populate test files
    backend.write("/input.txt", "test data")

    result = agent.run_sync("Read input.txt", deps=Deps(backend=backend))

    # Verify agent behavior
    assert "/input.txt" in backend.files