diff --git a/config.py b/config.py index d984d07..24f938c 100644 --- a/config.py +++ b/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.""" diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 3e0fe0c..0000000 --- a/config.yaml +++ /dev/null @@ -1,60 +0,0 @@ -llm: - timeout: 3000 # second - -agent: - max_iterations: 40 # step - max_tool_output: 40000 - character: hendrik # Directory name in agent/characters// - -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) diff --git a/default-config.yaml b/default-config.yaml new file mode 100644 index 0000000..06900f0 --- /dev/null +++ b/default-config.yaml @@ -0,0 +1,56 @@ +# Copy and edit to `config.yaml` + +agent: + character: hendrik # Directory name in agent/characters// + 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 +