This section contains practical examples demonstrating pydantic-deep features.
All examples are in the examples/ directory:
# Set your API key
export OPENAI_API_KEY=your-api-key # or ANTHROPIC_API_KEY
# Run an example
uv run python examples/<example_name>.pyGetting started with pydantic-deep. Create agents, use todos, work with files.
View Example →Combine multiple backends with path-based routing.
View Example →Upload files for agent processing with run_with_files() or deps.upload_file().
View Example →Pre-configured execution environments with RuntimeConfig.
View Example →Real-time output with agent.iter() for progress tracking.
View Example →Approval workflows for sensitive operations.
View Example →Complete FastAPI app with WebSocket streaming, Docker, uploads, and more.
View Example →import asyncio
from pydantic_deep import create_deep_agent, DeepAgentDeps, StateBackend
async def main():
agent = create_deep_agent()
deps = DeepAgentDeps(backend=StateBackend())
result = await agent.run("Say hello!", deps=deps)
print(result.output)
asyncio.run(main())async def main():
agent = create_deep_agent()
deps = DeepAgentDeps(backend=StateBackend())
result = await agent.run(
"Create a Python function that calculates factorials and save it to /math/factorial.py",
deps=deps,
)
# Check what was created
print("Files:", list(deps.backend.files.keys()))
print("\nContent:")
print(deps.backend.read("/math/factorial.py"))async def main():
agent = create_deep_agent()
deps = DeepAgentDeps(backend=StateBackend())
result = await agent.run(
"""
Create a simple CLI calculator with the following features:
1. Add, subtract, multiply, divide
2. Input validation
3. Help command
Plan the task first using todos, then implement.
""",
deps=deps,
)
# Check the todo list
print("Todos:")
for todo in deps.todos:
status = "✓" if todo.status == "completed" else "○"
print(f" {status} {todo.content}")from pydantic_deep import SubAgentConfig
async def main():
subagents = [
SubAgentConfig(
name="code-reviewer",
description="Reviews code for quality",
instructions="You are a code review expert...",
),
]
agent = create_deep_agent(subagents=subagents)
deps = DeepAgentDeps(backend=StateBackend())
# Create some code
deps.backend.write("/src/app.py", "def add(a, b): return a + b")
result = await agent.run(
"Delegate a code review of /src/app.py to the code-reviewer",
deps=deps,
)
print(result.output)async def main():
agent = create_deep_agent(
skill_directories=[
{"path": "./skills", "recursive": True},
],
)
deps = DeepAgentDeps(backend=StateBackend())
result = await agent.run(
"""
1. List available skills
2. Load the code-review skill
3. Use it to review /src/app.py
""",
deps=deps,
)
print(result.output)Use TestModel for testing without API calls:
from pydantic_ai.models.test import TestModel
async def main():
agent = create_deep_agent(model=TestModel())
deps = DeepAgentDeps(backend=StateBackend())
# TestModel will return predefined responses
result = await agent.run("Test prompt", deps=deps)| File | Description | Docs Page |
|---|---|---|
basic_usage.py |
Core functionality demonstration | Basic Usage |
filesystem_backend.py |
Real filesystem operations | Filesystem |
composite_backend.py |
Mixed storage strategies | Composite Backend |
skills_usage.py |
Skills system | Skills |
subagents.py |
Task delegation | Subagents |
custom_tools.py |
Adding custom tools | Custom Tools |
file_uploads.py |
File uploads for agent processing | File Uploads |
docker_sandbox.py |
Isolated execution | Docker Sandbox |
streaming.py |
Real-time output | Streaming |
human_in_the_loop.py |
Approval workflows | Human-in-the-Loop |
interactive_chat.py |
CLI chatbot | Interactive Chat |
full_app/ |
Complete FastAPI application | Full App |
- Basic Usage - Detailed walkthrough
- Core Concepts - Understand the fundamentals
- API Reference - Complete API documentation