Files
dcc-rpg/src/engine/config.py
T
truetype 90ba835868
test / test (push) Has been cancelled
feat: DeepSeek V4 Flash primario, Big Pickle fallback
- deepseek-v4-flash su opencode/go come modello primario
- big-pickle su opencode/zen come fallback (gratuito)
- Fallback automatico su censura "User Safety" o errore HTTP
- Aggiornati .env, config.py, start.sh, docker-compose.yml
2026-07-01 11:13:29 +02:00

41 lines
1.7 KiB
Python

from __future__ import annotations
import os
from dataclasses import dataclass
from typing import Literal
ProviderKind = Literal["ollama", "openrouter", "local"]
@dataclass
class ProviderConfig:
kind: ProviderKind = "openrouter"
ollama_base_url: str = "http://192.168.0.50:11434"
ollama_model: str = "gemma2:9b"
openrouter_api_key: str = ""
openrouter_model: str = "openrouter/free"
openrouter_key_env: str = "DCC_OPENROUTER_KEY"
openrouter_free_fallback: bool = True
local_base_url: str = "https://opencode.ai/zen/go/v1"
local_api_key: str = ""
local_model: str = "deepseek-v4-flash"
local_fallback_url: str = "https://opencode.ai/zen/v1"
local_fallback_model: str = "big-pickle"
timeout: int = 120
def load_from_env() -> ProviderConfig:
return ProviderConfig(
kind=os.getenv("DCC_LLM_PROVIDER", "local"), # type: ignore
ollama_base_url=os.getenv("DCC_OLLAMA_URL", "http://192.168.0.50:11434"),
ollama_model=os.getenv("DCC_OLLAMA_MODEL", "gemma2:9b"),
openrouter_api_key=os.getenv("DCC_OPENROUTER_KEY", os.getenv("OPENROUTER_API_KEY", "")),
openrouter_model=os.getenv("DCC_OPENROUTER_MODEL", "openrouter/free"),
openrouter_free_fallback=os.getenv("DCC_OR_FREE_FALLBACK", "1") == "1",
local_base_url=os.getenv("DCC_LOCAL_URL", "https://opencode.ai/zen/v1"),
local_api_key=os.getenv("DCC_LOCAL_KEY", ""),
local_model=os.getenv("DCC_LOCAL_MODEL", "big-pickle"),
local_fallback_url=os.getenv("DCC_LOCAL_FALLBACK_URL", "https://opencode.ai/zen/go/v1"),
local_fallback_model=os.getenv("DCC_LOCAL_FALLBACK_MODEL", "deepseek-v4-flash"),
timeout=int(os.getenv("DCC_LLM_TIMEOUT", "120")),
)