Providers
Veska automatically detects the right provider based on the model name you pass. You never need to import or configure providers directly.
How it works
Just pass a model name to your Agent or Orchestrator. Veska figures out the rest:
auto_detect.py
from veska import Agent
# Veska detects this is a Claude model → uses Anthropic API
agent = Agent(
name="researcher",
system_prompt="You do deep research.",
model="claude-sonnet-4-6",
)
# Veska detects this is an OpenAI model → uses OpenAI API
agent = Agent(
name="formatter",
system_prompt="You format text.",
model="gpt-4o",
)Supported models
Claude (Anthropic)
Any model starting with claude. Supports extended thinking on compatible models.
claude-sonnet-4-6claude-opus-4-6claude-haiku-4-5-20251001OpenAI
Any model starting with gpt, o1, o3, or o4.
gpt-4ogpt-4o-minio3-miniAPI keys
Pass the key directly, or set it in your environment:
api_keys.py
from veska import Agent
# Option 1: Pass directly
agent = Agent(
name="assistant",
model="claude-sonnet-4-6",
api_key="sk-ant-...",
)
# Option 2: Set in .env (recommended)
# ANTHROPIC_API_KEY=sk-ant-... (for Claude models)
# OPENAI_API_KEY=sk-... (for OpenAI models)
agent = Agent(
name="assistant",
model="claude-sonnet-4-6", # reads ANTHROPIC_API_KEY from .env
)Per-agent models
Different agents can use different models:
per_agent.py
from veska import Agent
# Use a more capable model for complex reasoning
researcher = Agent(
name="researcher",
system_prompt="You do deep research.",
model="claude-opus-4-6",
)
# Use a faster, cheaper model for simple tasks
formatter = Agent(
name="formatter",
system_prompt="You format text.",
model="gpt-4o-mini",
)Default model
If you don't pass a model, Veska defaults to claude-sonnet-4-6:
default.py
from veska import Agent
# Uses claude-sonnet-4-6 by default
agent = Agent(
name="assistant",
system_prompt="You are helpful.",
)