uni2 / generate_config.py
Spooker's picture
Upload 10 files
abb6d23 verified
import os
from pathlib import Path
def csv_env(name: str, default: str):
return [x.strip() for x in os.getenv(name, default).split(",") if x.strip()]
port = int(os.getenv("PORT", "7860"))
model = os.getenv("DEFAULT_MODEL", "chat-model-reasoning")
models = csv_env("ALLOWED_MODELS", model)
client_keys = csv_env("CLIENT_API_KEYS", os.getenv("PROXY_API_KEY", "sk-change-me"))
log_level = os.getenv("LOG_LEVEL", "INFO").upper()
timeout = int(os.getenv("REQUEST_TIMEOUT", "180"))
config = f"""server:
port: {port}
host: "0.0.0.0"
timeout: {timeout}
upstream_retry_attempts: 2
upstream_retry_base_delay: 0.5
upstream_services:
- name: "unlimitedai-internal"
base_url: "http://127.0.0.1:9000/v1"
api_key: "internal-only"
description: "Internal UnlimitedAI OpenAI-compatible upstream"
is_default: true
models:
"""
for item in models:
config += f" - \"{item}\"\n"
config += "\nclient_authentication:\n allowed_keys:\n"
for key in client_keys:
config += f" - \"{key}\"\n"
config += f"""
features:
enable_function_calling: true
log_level: "{log_level}"
convert_developer_to_system: true
key_passthrough: false
model_passthrough: false
enable_fc_error_retry: true
fc_error_retry_max_attempts: 2
"""
Path("/app/toolify/config.yaml").write_text(config, encoding="utf-8")
print("[OK] wrote /app/toolify/config.yaml")
print(f"[INFO] Public Toolify port: {port}")
print(f"[INFO] Models: {', '.join(models)}")
print(f"[INFO] Client API keys configured: {len(client_keys)}")
if client_keys == ["sk-change-me"]:
print("[WARN] PROXY_API_KEY/CLIENT_API_KEYS not set. Default API key is sk-change-me. Set a secret before public use.")