81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Literal
|
|
|
|
Mode = Literal["chat", "work"]
|
|
Strength = Literal["light", "medium", "high", "extreme"]
|
|
Provider = Literal["k1412", "deepseek"]
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class ModelSpec:
|
|
public_id: str
|
|
display_name: str
|
|
mode: Mode
|
|
strength: Strength
|
|
provider: Provider
|
|
provider_model: str
|
|
thinking_enabled: bool
|
|
reasoning_effort: str | None
|
|
max_output_tokens: int
|
|
max_iterations: int
|
|
context_char_budget: int
|
|
|
|
|
|
_TIERS = {
|
|
"light": ("轻度", "k1412", "ChatGPT-5.6:Luna", False, None, 4_096, 8, 120_000),
|
|
"medium": ("中", "k1412", "ChatGPT-5.6:Terra", False, None, 4_096, 16, 240_000),
|
|
"high": ("高", "k1412", "ChatGPT-5.6:Sol", False, None, 4_096, 24, 400_000),
|
|
"extreme": ("极高", "deepseek", "deepseek-v4-pro", True, "max", 16_384, 32, 800_000),
|
|
}
|
|
|
|
MODEL_SPECS: dict[str, ModelSpec] = {
|
|
f"{mode}-{strength}": ModelSpec(
|
|
public_id=f"{mode}-{strength}",
|
|
display_name=f"{'Chat' if mode == 'chat' else 'Work'} · {label}",
|
|
mode=mode,
|
|
strength=strength,
|
|
provider=provider,
|
|
provider_model=provider_model,
|
|
thinking_enabled=thinking_enabled,
|
|
reasoning_effort=reasoning_effort,
|
|
max_output_tokens=max_output_tokens,
|
|
max_iterations=max_iterations,
|
|
context_char_budget=context_budget,
|
|
)
|
|
for mode in ("chat", "work")
|
|
for strength, (
|
|
label,
|
|
provider,
|
|
provider_model,
|
|
thinking_enabled,
|
|
reasoning_effort,
|
|
max_output_tokens,
|
|
max_iterations,
|
|
context_budget,
|
|
) in _TIERS.items()
|
|
}
|
|
|
|
|
|
def get_model_spec(model_id: str) -> ModelSpec:
|
|
try:
|
|
return MODEL_SPECS[model_id]
|
|
except KeyError as exc:
|
|
raise ValueError(f"Unsupported model: {model_id}") from exc
|
|
|
|
|
|
def openai_model_list() -> dict:
|
|
return {
|
|
"object": "list",
|
|
"data": [
|
|
{
|
|
"id": spec.public_id,
|
|
"object": "model",
|
|
"owned_by": "k1412-agent",
|
|
"name": spec.display_name,
|
|
}
|
|
for spec in MODEL_SPECS.values()
|
|
],
|
|
}
|