-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
53 lines (47 loc) · 2.99 KB
/
Copy pathconfig.py
File metadata and controls
53 lines (47 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
from dotenv import load_dotenv
class Config:
def __init__(self) -> None:
load_dotenv()
# Use os.getenv with defaults so the app doesn't crash on startup
self.BOT_TOKEN = os.getenv("BOT_TOKEN", "xoxb-placeholder")
self.APP_TOKEN = os.getenv("APP_TOKEN", "xapp-placeholder")
self.API_KEY = os.getenv("API_KEY", "")
self.OLLAMA_HOST = os.getenv("OLLAMA_HOST", "http://localhost:11434/v1")
self.LM_STUDIO_HOST = os.getenv("LM_STUDIO_HOST", "")
self.OPEN_AI_HOST = os.getenv("OPEN_AI_HOST", "")
self.MODEL = os.getenv("MODEL", "qwen3-vl:2b-instruct-q4_K_M")
self.SYSTEM_MESSAGE = os.getenv("SYSTEM_MESSAGE", "You are a helpful assistant.")
self.MAX_TOKENS = int(os.getenv("MAX_TOKENS", "4096"))
self.ALLOWED_GROUP_CHANNEL_IDS = self._parse_channel_ids(
os.getenv("ALLOWED_GROUP_CHANNEL_IDS", "")
)
self.SERPER_API_KEY = os.getenv("SERPER_API_KEY", "")
self.COMFYUI_API = os.getenv("COMFYUI_API", "http://127.0.0.1:8188")
self.COMFYUI_IMAGE_PATH = os.getenv("COMFYUI_IMAGE_PATH", "")
self.COMFYUI_IMAGE_WIDTH = os.getenv("COMFYUI_IMAGE_WIDTH", "512")
self.COMFYUI_IMAGE_HEIGHT = os.getenv("COMFYUI_IMAGE_HEIGHT", "512")
self.COMFYUI_STEPS = os.getenv("COMFYUI_STEPS", "20")
self.VISION_MODEL = os.getenv("VISION_MODEL", "qwen3.5:2b")
self.VISION_MODE = os.getenv("VISION_MODE", "proxy_vision").lower()
self.MUSIC_GENERATION_PATH = os.getenv("MUSIC_GENERATION_PATH", "")
self.EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "")
self.PROVIDER = os.getenv("PROVIDER", "ollama")
self.SHOW_THINKING = os.getenv("SHOW_THINKING", "false").lower() == "true"
self.SEARCH_PROVIDER = os.getenv("SEARCH_PROVIDER", "serper") # "serper" or "searXNG"
self.SEARXNG_HOST = os.getenv("SEARXNG_HOST", "http://localhost:8080")
self.SEARCH_LIMIT = os.getenv("SEARCH_LIMIT", "3") # Default to 3 results for web search if not set
self.SEARXNG_ENGINES = os.getenv("SEARXNG_ENGINES", "google,brave,duckduckgo,bing") # Default engines for SearXNG if not set
self.COMPANY_RAG_K = (os.getenv("COMPANY_RAG_K", "4")) # Default to top 4 relevant documents for company RAG
self.AGENT_MAX_ITERATIONS = (os.getenv("AGENT_MAX_ITERATIONS", "4")) # Default to max 4 iterations for agents
self.TEMPERATURE = float(os.getenv("TEMPERATURE", "0.7"))
self.MUSIC_API_URL = os.getenv("MUSIC_API_URL", "http://127.0.0.1:5001")
self.PYTHON_EXEC_URL = os.getenv("PYTHON_EXEC_URL", "http://127.0.0.1:5002")
def _get_required(self, name: str) -> str:
# Changed to return empty string instead of crashing
value = os.getenv(name)
return value if value else ""
def _parse_channel_ids(self, raw_value: str) -> set[str] | None:
if not raw_value or not raw_value.strip():
return None
return {v.strip() for v in raw_value.split(",") if v.strip()}