Models API Reference¶
This page documents the ARTEMIS model provider interfaces.
create_model¶
Factory function for creating model instances.
Signature¶
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
model |
str | Yes | Model identifier (e.g., "gpt-4o", "deepseek-reasoner") |
provider |
str | No | Provider name. If not specified, inferred from model name |
**kwargs |
- | No | Additional arguments passed to the model constructor |
Example:
# OpenAI (provider inferred from model name)
model = create_model("gpt-4o")
# DeepSeek with explicit provider
model = create_model("deepseek-reasoner", provider="deepseek")
# With additional options
model = create_model("gpt-4o", timeout=120.0, max_retries=5)
BaseModel¶
Abstract base class for all model providers.
Abstract Methods¶
generate¶
Generates a response from the model.
Parameters:
| Parameter | Type | Description |
|---|---|---|
messages |
list[Message] | Conversation messages |
**kwargs |
- | Additional options |
Returns: Response object.
generate_with_reasoning¶
async def generate_with_reasoning(
self,
messages: list[Message],
thinking_budget: int = 8000,
**kwargs,
) -> ReasoningResponse
Generates a response with extended thinking.
Returns: ReasoningResponse with thinking and output.
OpenAIModel¶
OpenAI model provider.
Constructor¶
OpenAIModel(
model: str = "gpt-4o",
api_key: str | None = None,
base_url: str | None = None,
organization: str | None = None,
timeout: float = 60.0,
max_retries: int = 3,
**kwargs,
)
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
str | "gpt-4o" | Model identifier |
api_key |
str | None | None | API key (reads from OPENAI_API_KEY env var if not provided) |
base_url |
str | None | None | Custom API base URL (for Azure or proxies) |
organization |
str | None | None | OpenAI organization ID |
timeout |
float | 60.0 | Request timeout in seconds |
max_retries |
int | 3 | Maximum retry attempts |
Supported Models¶
| Model | Reasoning | Description |
|---|---|---|
gpt-4o |
No | GPT-4 Optimized |
gpt-4-turbo |
No | GPT-4 Turbo |
o1 |
Yes | OpenAI Reasoning |
o1-preview |
Yes | OpenAI Reasoning Preview |
o1-mini |
Yes | OpenAI Reasoning Mini |
DeepSeekModel¶
DeepSeek model provider with R1 reasoning support.
Constructor¶
DeepSeekModel(
model: str = "deepseek-reasoner",
api_key: str | None = None,
base_url: str | None = None,
timeout: float = 120.0,
max_retries: int = 3,
**kwargs,
)
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
str | "deepseek-reasoner" | Model identifier |
api_key |
str | None | None | API key (reads from DEEPSEEK_API_KEY env var if not provided) |
base_url |
str | None | "https://api.deepseek.com/v1" | Custom API base URL |
timeout |
float | 120.0 | Request timeout in seconds |
max_retries |
int | 3 | Maximum retry attempts |
Supported Models¶
| Model | Reasoning | Description |
|---|---|---|
deepseek-chat |
No | Standard chat model |
deepseek-coder |
No | Code-specialized model |
deepseek-reasoner |
Yes | Full R1 with extended thinking |
deepseek-r1-distill-llama-70b |
Yes | Distilled R1 variant |
GoogleModel¶
Google/Gemini model provider with Vertex AI support.
Constructor¶
GoogleModel(
model: str = "gemini-2.0-flash",
api_key: str | None = None,
project: str | None = None,
location: str = "us-central1",
use_vertex_ai: bool | None = None,
timeout: float = 120.0,
max_retries: int = 3,
**kwargs,
)
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
str | "gemini-2.0-flash" | Model identifier |
api_key |
str | None | None | API key for AI Studio (reads from GOOGLE_API_KEY or GEMINI_API_KEY) |
project |
str | None | None | GCP project ID for Vertex AI |
location |
str | "us-central1" | GCP region for Vertex AI |
use_vertex_ai |
bool | None | None | Force Vertex AI (auto-detected if project is set) |
timeout |
float | 120.0 | Request timeout in seconds |
max_retries |
int | 3 | Maximum retry attempts |
Backend Selection¶
GoogleModel supports two backends:
| Backend | When Used | Authentication |
|---|---|---|
| AI Studio | Default when no project set | GOOGLE_API_KEY env var |
| Vertex AI | When GOOGLE_CLOUD_PROJECT is set |
Application Default Credentials |
Example:
# AI Studio (simple setup)
model = GoogleModel(model="gemini-2.0-flash")
# Vertex AI (higher rate limits)
model = GoogleModel(
model="gemini-2.0-flash",
project="my-gcp-project",
location="us-central1",
)
Supported Models¶
| Model | Reasoning | Description |
|---|---|---|
gemini-2.0-flash |
No | Fast, efficient model |
gemini-2.0-flash-exp |
No | Experimental flash variant |
gemini-1.5-pro |
No | High capability model |
gemini-1.5-flash |
No | Fast 1.5 variant |
gemini-2.5-pro |
Yes | Extended thinking support |
gemini-2.5-flash |
Yes | Fast reasoning model |
AnthropicModel¶
Anthropic/Claude model provider.
Constructor¶
AnthropicModel(
model: str = "claude-sonnet-4-20250514",
api_key: str | None = None,
timeout: float = 120.0,
max_retries: int = 3,
**kwargs,
)
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
str | "claude-sonnet-4-20250514" | Model identifier |
api_key |
str | None | None | API key (reads from ANTHROPIC_API_KEY) |
timeout |
float | 120.0 | Request timeout in seconds |
max_retries |
int | 3 | Maximum retry attempts |
Example:
Supported Models¶
| Model | Reasoning | Description |
|---|---|---|
claude-sonnet-4-20250514 |
Yes | Claude Sonnet 4 with extended thinking |
claude-3-5-sonnet-20241022 |
Yes | Claude 3.5 Sonnet |
claude-3-opus-20240229 |
No | Claude 3 Opus |
claude-3-haiku-20240307 |
No | Claude 3 Haiku (fast) |
ReasoningConfig¶
Configuration for reasoning models.
Class Definition¶
class ReasoningConfig(BaseModel):
model: str = "o1"
strategy: ReasoningStrategy = ReasoningStrategy.ADAPTIVE
thinking_budget: int = 8000
show_thinking: bool = False
thinking_style: str = "thorough" # "thorough", "concise", "analytical"
temperature: float = 1.0
use_system_prompt: bool = True
ReasoningStrategy¶
class ReasoningStrategy(str, Enum):
ALWAYS = "always" # Always use extended thinking
ADAPTIVE = "adaptive" # Use reasoning only for complex problems
NEVER = "never" # Never use extended thinking
create_reasoning_config¶
Creates appropriate config with model-specific defaults.
Example:
# Automatic configuration for o1
config = create_reasoning_config("o1", thinking_budget=16000)
# For DeepSeek R1
config = create_reasoning_config("deepseek-reasoner", show_thinking=True)
Message¶
Message structure for model calls.
Class Definition¶
class Message(BaseModel):
role: Literal["system", "user", "assistant"]
content: str
name: str | None = None # Optional name for multi-agent scenarios
ModelResponse¶
Model response structure.
Class Definition¶
class ModelResponse(BaseModel):
content: str
usage: Usage
model: str | None = None
finish_reason: str | None = None
ReasoningResponse¶
Response from reasoning models.
Class Definition¶
class ReasoningResponse(ModelResponse):
thinking: str | None = None # The extended thinking/reasoning trace
thinking_tokens: int = 0
Usage¶
Token usage information.
Class Definition¶
class Usage(BaseModel):
prompt_tokens: int = 0
completion_tokens: int = 0
total_tokens: int = 0
reasoning_tokens: int | None = None # For reasoning models
list_providers¶
List available model providers.
from artemis.models import list_providers
providers = list_providers()
# ['openai', 'deepseek', 'google', 'anthropic']
is_reasoning_model¶
Check if a model supports extended reasoning.
from artemis.models import is_reasoning_model
is_reasoning_model("o1") # True
is_reasoning_model("gpt-4o") # False