Cleaning vibescoding dengan vibescoding
This commit is contained in:
parent
a8ea6db485
commit
a54d2d29c0
108
config.py
108
config.py
@ -9,72 +9,67 @@ load_dotenv()
|
||||
def _yaml_get(*keys, default=None):
|
||||
|
||||
_CONFIG_PATH = Path(__file__).resolve().parent / "config.yaml"
|
||||
_yaml: dict = {}
|
||||
_yaml = {}
|
||||
if _CONFIG_PATH.is_file():
|
||||
with open(_CONFIG_PATH, "r", encoding="utf-8") as f:
|
||||
_yaml = yaml.safe_load(f) or {}
|
||||
with open(_CONFIG_PATH, "r", encoding="utf-8") as file_object:
|
||||
_yaml = yaml.safe_load(file_object) or {}
|
||||
|
||||
d = _yaml
|
||||
for k in keys:
|
||||
if isinstance(d, dict) and k in d:
|
||||
d = d[k]
|
||||
current = _yaml
|
||||
for key in keys:
|
||||
if key in current:
|
||||
current = current[key]
|
||||
else:
|
||||
return default
|
||||
return d if d is not None else default
|
||||
return current if current is not None else default
|
||||
|
||||
# Credential / Secret (only from .env)
|
||||
llm_baseurl = os.getenv("LLM_BASE_URL", default="")
|
||||
llm_model = os.getenv("LLM_MODEL", default="")
|
||||
llm_api_key = os.getenv("LLM_API_KEY", default="")
|
||||
llm_timeout = int(_yaml_get("llm", "timeout", default=600))
|
||||
_providers = _yaml_get("llm", "providers", default=[])
|
||||
MODELS_ITEMS = []
|
||||
|
||||
llm_timeout = int(_yaml_get("llm", "timeout", default=600))
|
||||
for prov in _providers:
|
||||
pname = prov.get("name", "")
|
||||
base_url = prov.get("base_url", "").rstrip("/")
|
||||
api_key = prov.get("api_key", "")
|
||||
models = prov.get("models", [])
|
||||
for m in models:
|
||||
model_name = m.get("name", "")
|
||||
is_default = m.get("default", False)
|
||||
MODELS_ITEMS.append({
|
||||
"model" : model_name,
|
||||
"provider" : pname,
|
||||
"base_url" : base_url,
|
||||
"api_key" : api_key,
|
||||
"default" : is_default,
|
||||
})
|
||||
|
||||
XMPP_USERNAME = os.getenv("XMPP_USERNAME", default="")
|
||||
XMPP_PASSWORD = os.getenv("XMPP_PASSWORD", default="")
|
||||
|
||||
MODELS_ITEMS: list[dict] = []
|
||||
_providers = _yaml_get("llm", "providers", default=[])
|
||||
if isinstance(_providers, list):
|
||||
for prov in _providers:
|
||||
if not isinstance(prov, dict):
|
||||
continue
|
||||
pname = prov.get("name", "")
|
||||
base_url = prov.get("base_url", "").rstrip("/")
|
||||
api_key = prov.get("api_key", "") or llm_api_key
|
||||
models = prov.get("models", [])
|
||||
if isinstance(models, list):
|
||||
for m in models:
|
||||
if not isinstance(m, dict):
|
||||
continue
|
||||
model_name = m.get("name", "")
|
||||
is_default = m.get("default", False)
|
||||
MODELS_ITEMS.append({
|
||||
"model": model_name,
|
||||
"provider": pname,
|
||||
"base_url": base_url,
|
||||
"api_key": api_key,
|
||||
"default": is_default,
|
||||
})
|
||||
|
||||
def resolve_provider(base_url: str, model: str) -> str | None:
|
||||
"""Cari nama provider yg cocok dengan (base_url, model) dari MODELS_ITEMS."""
|
||||
base_url = base_url.rstrip("/")
|
||||
for item in MODELS_ITEMS:
|
||||
if item["base_url"] == base_url and item["model"] == model:
|
||||
return item["provider"]
|
||||
return None
|
||||
|
||||
_has_match = any(
|
||||
item["model"] == llm_model and item["base_url"] == llm_baseurl.rstrip("/")
|
||||
for item in MODELS_ITEMS
|
||||
)
|
||||
if not _has_match:
|
||||
for item in MODELS_ITEMS:
|
||||
if item.get("default"):
|
||||
llm_model = item["model"]
|
||||
llm_baseurl = item["base_url"]
|
||||
llm_api_key = item["api_key"]
|
||||
break
|
||||
|
||||
# Cari model default — pertama yg marked default: true, fallback ke yg pertama
|
||||
llm_baseurl = ""
|
||||
llm_model = ""
|
||||
llm_api_key = ""
|
||||
for item in MODELS_ITEMS:
|
||||
if item.get("default"):
|
||||
llm_baseurl = item["base_url" ]
|
||||
llm_model = item["model" ]
|
||||
llm_api_key = item["api_key" ]
|
||||
break
|
||||
if not llm_model and MODELS_ITEMS:
|
||||
llm_baseurl = MODELS_ITEMS[0]["base_url" ]
|
||||
llm_model = MODELS_ITEMS[0]["model" ]
|
||||
llm_api_key = MODELS_ITEMS[0]["api_key" ]
|
||||
|
||||
|
||||
XMPP_USERNAME = os.getenv("XMPP_USERNAME", default="")
|
||||
XMPP_PASSWORD = os.getenv("XMPP_PASSWORD", default="")
|
||||
|
||||
|
||||
AGENT_MAX_ITERATIONS = int(os.getenv("AGENT_MAX_ITERATIONS", default=_yaml_get("agent", "max_iterations", default="30")))
|
||||
AGENT_MAX_TOOL_OUTPUT = int(os.getenv("AGENT_MAX_TOOL_OUTPUT", default=_yaml_get("agent", "max_tool_output", default="40000")))
|
||||
@ -130,12 +125,11 @@ RAG_MODEL_PATH = os.path.expanduser(
|
||||
)
|
||||
|
||||
|
||||
# ─── Humanize Delay (YAML) ─────────────────────────────────────────────────────
|
||||
|
||||
READ_DELAY_MIN = float(os.getenv("READ_DELAY_MIN", default=_yaml_get("delay", "read_min", default="1.0")))
|
||||
READ_DELAY_MAX = float(os.getenv("READ_DELAY_MAX", default=_yaml_get("delay", "read_max", default="2.0")))
|
||||
TYPING_SPEED = float(os.getenv("TYPING_SPEED", default=_yaml_get("delay", "typing_speed", default="15.0")))
|
||||
TYPING_MAX = float(os.getenv("TYPING_MAX", default=_yaml_get("delay", "typing_max", default="10.0")))
|
||||
# Humanize Delay (YAML)
|
||||
READ_DELAY_MIN = float( _yaml_get("delay", "read_min", default="1.0" ) )
|
||||
READ_DELAY_MAX = float( _yaml_get("delay", "read_max", default="2.0" ) )
|
||||
TYPING_SPEED = float( _yaml_get("delay", "typing_speed", default="15.0" ) )
|
||||
TYPING_MAX = float( _yaml_get("delay", "typing_max", default="10.0" ) )
|
||||
|
||||
|
||||
# ─── Character Preset Override ──────────────────────────────────────────────────
|
||||
|
||||
Loading…
Reference in New Issue
Block a user