Better config format
This commit is contained in:
parent
07dd99ded4
commit
0bedda1c06
37
config.py
37
config.py
@ -33,23 +33,28 @@ XMPP_USERNAME = os.getenv("XMPP_USERNAME", default="")
|
||||
XMPP_PASSWORD = os.getenv("XMPP_PASSWORD", default="")
|
||||
|
||||
MODELS_ITEMS: list[dict] = []
|
||||
_models_config = _yaml_get("models", default={})
|
||||
_items = _models_config.get("items", [])
|
||||
if isinstance(_items, list):
|
||||
for entry in _items:
|
||||
if not isinstance(entry, dict):
|
||||
_providers = _yaml_get("llm", "providers", default=[])
|
||||
if isinstance(_providers, list):
|
||||
for prov in _providers:
|
||||
if not isinstance(prov, dict):
|
||||
continue
|
||||
model = entry.get("model", "")
|
||||
provider = entry.get("provider", "")
|
||||
base_url = entry.get("base_url", "").rstrip("/")
|
||||
api_key = entry.get("key", "") or llm_api_key
|
||||
MODELS_ITEMS.append({
|
||||
"model": model,
|
||||
"provider": provider,
|
||||
"base_url": base_url,
|
||||
"api_key": api_key,
|
||||
"default": entry.get("default", False),
|
||||
})
|
||||
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."""
|
||||
|
||||
60
config.yaml
60
config.yaml
@ -1,60 +0,0 @@
|
||||
llm:
|
||||
timeout: 3000 # second
|
||||
|
||||
agent:
|
||||
max_iterations: 40 # step
|
||||
max_tool_output: 40000
|
||||
character: hendrik # Directory name in agent/characters/<character>/
|
||||
|
||||
xmpp:
|
||||
enabled: false
|
||||
muc_rooms: "" # comma-separated, e.g. "room1@conference.server,room2@conference.server"
|
||||
nickname: "" # custom MUC nickname (empty = use username)
|
||||
selective_response: true # true = only response if mentioned/relevant
|
||||
|
||||
telegram:
|
||||
enabled: false
|
||||
allowed_group_ids: "" # comma-separated, kosong = semua grup
|
||||
selective_response: true
|
||||
|
||||
# Humanize Delay (anti-bot detection)
|
||||
delay:
|
||||
read_min: 1.0 # second
|
||||
read_max: 2.0 # second
|
||||
typing_speed: 15.0 # characters per second
|
||||
typing_max: 10.0 # max typing delay limit per second
|
||||
|
||||
models:
|
||||
items:
|
||||
- model: "granite4.1:8b"
|
||||
provider: "Ollama Local"
|
||||
base_url: "http://localhost:11434/v1"
|
||||
key: "ollama"
|
||||
- model: "granite4.1:8b"
|
||||
provider: "Transformers API Local"
|
||||
base_url: "http://localhost:12345/v1"
|
||||
key: "sk-not-needed"
|
||||
- model: "ministral-3:14b-cloud"
|
||||
provider: "Ollama Cloud"
|
||||
base_url: "https://ollama.com/v1"
|
||||
key: ""
|
||||
- model: "gemma4:31b-cloud"
|
||||
provider: "Ollama Cloud"
|
||||
base_url: "https://ollama.com/v1"
|
||||
key: ""
|
||||
default: true
|
||||
- model: "openrouter/owl-alpha"
|
||||
provider: "OpenRouter"
|
||||
base_url: "https://openrouter.ai/api/v1"
|
||||
key: ""
|
||||
- model: "nex-agi/nex-n2-pro:free"
|
||||
provider: "OpenRouter"
|
||||
base_url: "https://openrouter.ai/api/v1"
|
||||
key: ""
|
||||
- model: "z-ai/glm-5"
|
||||
provider: "OpenRouter"
|
||||
base_url: "https://openrouter.ai/api/v1"
|
||||
key: ""
|
||||
|
||||
rag:
|
||||
persist_dir: chroma_db # ChromaDB ONNX default (all-MiniLM-L6-v2, local)
|
||||
56
default-config.yaml
Normal file
56
default-config.yaml
Normal file
@ -0,0 +1,56 @@
|
||||
# Copy and edit to `config.yaml`
|
||||
|
||||
agent:
|
||||
character: hendrik # Directory name in agent/characters/<character>/
|
||||
max_iterations: 40 # step
|
||||
max_tool_output: 40000
|
||||
|
||||
llm:
|
||||
timeout: 3000 # second
|
||||
providers:
|
||||
- name : "Ollama Local"
|
||||
base_url : "http://localhost:11434/v1"
|
||||
api_key : "ollama"
|
||||
models :
|
||||
- name : "granite4.1:8b"
|
||||
- name : "Transformers API Local"
|
||||
base_url : "http://localhost:12345/v1"
|
||||
api_key : "sk-not-needed"
|
||||
models :
|
||||
- name : "granite4.1:8b"
|
||||
- name : "Ollama Cloud"
|
||||
base_url : "https://ollama.com/v1"
|
||||
api_key : ""
|
||||
models :
|
||||
- name : "ministral-3:14b-cloud"
|
||||
- name : "gemma4:31b-cloud"
|
||||
default : true
|
||||
- name : "OpenRouter"
|
||||
base_url : "https://openrouter.ai/api/v1"
|
||||
api_key : ""
|
||||
models :
|
||||
- name : "openrouter/owl-alpha"
|
||||
- name : "nex-agi/nex-n2-pro:free"
|
||||
- name : "z-ai/glm-5"
|
||||
|
||||
rag:
|
||||
persist_dir: chroma_db # ChromaDB ONNX default (all-MiniLM-L6-v2, local)
|
||||
|
||||
xmpp:
|
||||
enabled: false
|
||||
muc_rooms: "" # comma-separated, e.g. "room1@conference.server,room2@conference.server"
|
||||
nickname: "" # custom MUC nickname (empty = use username)
|
||||
selective_response: true # true = only response if mentioned/relevant
|
||||
|
||||
telegram:
|
||||
enabled: false
|
||||
allowed_group_ids: "" # comma-separated, empty = all group
|
||||
selective_response: true # true = only response if mentioned/relevant
|
||||
|
||||
# Humanize Delay (anti-bot detection)
|
||||
delay:
|
||||
read_min: 1.0 # second
|
||||
read_max: 2.0 # second
|
||||
typing_speed: 15.0 # characters per second
|
||||
typing_max: 10.0 # max typing delay limit per second
|
||||
|
||||
Loading…
Reference in New Issue
Block a user