test / test (push) Has been cancelled
- 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
41 lines
1.7 KiB
Python
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")),
|
|
)
|