File size: 1,342 Bytes
e2b8b61
 
 
 
 
 
 
 
 
a5bb1fc
edf8cae
a5bb1fc
e2b8b61
 
 
edf8cae
 
9c98d46
e2b8b61
edf8cae
 
e2b8b61
edf8cae
 
 
e2b8b61
edf8cae
e2b8b61
 
 
f2db5d0
5a57972
a5bb1fc
e2b8b61
 
 
 
edf8cae
e2b8b61
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from dataclasses import dataclass
from typing import Dict


@dataclass(frozen=True)
class ModelConfig:
    alias: str
    deployment_name: str
    is_openai_compatible: bool = True
    backend: str = "openai"  # "openai", "google", "huggingface", or "vllm"
    is_thinking_model: bool = False  # Uses thinking tokens, needs higher max_completion_tokens
    vllm_base_url: str = "http://localhost:8000/v1"  # Only used when backend="vllm"


MODELS: Dict[str, ModelConfig] = {
    "gemini-3-flash": ModelConfig(
        alias="gemini-3-flash",
        deployment_name="gemini-3-flash-preview",
        is_openai_compatible=True,
        backend="google",
        is_thinking_model=True,
    ),
    "gpt-5.1": ModelConfig(
        alias="gpt-5.1",
        deployment_name="gpt-5.1",
        is_openai_compatible=True,
        backend="openai",
    ),
    "gemma-3-27b-it": ModelConfig(
        alias="gemma-3-27b-it",
        deployment_name="google/gemma-3-27b-it",
        is_openai_compatible=False,
        backend="vllm",
    ),
}


DEFAULT_MODEL_ALIAS = "gemini-3-flash"


def get_model_config(alias: str) -> ModelConfig:
    if alias not in MODELS:
        available = ", ".join(sorted(MODELS.keys()))
        raise ValueError(
            f"Unknown model alias '{alias}'. Available models: {available}"
        )
    return MODELS[alias]