Skip to main content
Instead of importing model classes, pass a string to Agent(model=...):
from definable.agent import Agent

# Full format: "provider/model-id"
agent = Agent(model="openai/gpt-4o")
agent = Agent(model="anthropic/claude-sonnet-4-20250514")
agent = Agent(model="google/gemini-2.0-flash-001")
agent = Agent(model="deepseek/deepseek-chat")

# Bare model name defaults to OpenAI
agent = Agent(model="gpt-4o")
agent = Agent(model="gpt-4o-mini")

Supported Providers

ProviderFormatExample
OpenAIopenai/model-idopenai/gpt-4o
Anthropicanthropic/model-idanthropic/claude-sonnet-4-20250514
Google Geminigoogle/model-idgoogle/gemini-2.0-flash-001
DeepSeekdeepseek/model-iddeepseek/deepseek-chat
Mistralmistral/model-idmistral/mistral-large-latest
Moonshotmoonshot/model-idmoonshot/moonshot-v1-8k
xAIxai/model-idxai/grok-3
Perplexityperplexity/model-idperplexity/sonar-pro
Ollamaollama/model-idollama/llama3
OpenRouteropenrouter/model-idopenrouter/meta-llama/llama-3-70b

When to Use Class Imports

Use the class-based approach when you need to configure model-specific options:
from definable.model.openai import OpenAIChat

model = OpenAIChat(
    id="gpt-4o",
    api_key="sk-...",          # Custom API key
    strict_output=False,       # Disable strict JSON mode
    base_url="https://...",    # Custom endpoint
)
String shorthand uses default configuration for each provider.