v0.22.1: dockerize defaults, harden error handling, fix test discovery
- config.py: defaults to localhost/localhost, AMQP to rabbitmq, secret path to /run/secrets, RAG_MAX_VECTORS from env - rag.py: EMBED_URL default to localhost - app.py: syslog handler wrapped in try/except - routers/completions.py: db.close() in try/finally - db.py: PRAGMA journal_mode = WAL - amqp.py: subscription append before try for reconnect safety - tests/conftest.py: add project root to sys.path for test discovery
This commit is contained in:
@@ -9,9 +9,9 @@ import logging
|
||||
|
||||
log = logging.getLogger("caic")
|
||||
|
||||
VERSION = "v0.22.0"
|
||||
VERSION = "v0.22.1"
|
||||
OLLAMA_BASE = os.environ.get("OLLAMA_BASE", "http://localhost:11434")
|
||||
LLAMA_SERVER_BASE = os.environ.get("LLAMA_SERVER_BASE", "http://192.168.50.108:8081")
|
||||
LLAMA_SERVER_BASE = os.environ.get("LLAMA_SERVER_BASE", "http://localhost:8081")
|
||||
SEARXNG_BASE = os.environ.get("CAIC_SEARXNG_BASE", "http://localhost:8888")
|
||||
DEFAULT_MODEL = "qwen2.5-7b-instruct"
|
||||
COMPLETIONS_API_KEY = os.environ.get("CAIC_COMPLETIONS_API_KEY", "caic-sk-" + os.urandom(24).hex())
|
||||
@@ -21,7 +21,7 @@ MODEL_CONTEXT_LENGTH = 4096
|
||||
AMQP_RECONNECT_DELAY = 5
|
||||
AMQP_EXCHANGE_ADMIN = "jc.admin"
|
||||
AMQP_EXCHANGE_SYSTEM = "jc.system"
|
||||
AMQP_SECRET_PATH = os.environ.get("CAIC_AMQP_SECRET_PATH", "/home/gramps/.caic_amqp_secret")
|
||||
AMQP_SECRET_PATH = os.environ.get("CAIC_AMQP_SECRET_PATH", "/run/secrets/caic_amqp_secret")
|
||||
|
||||
def get_amqp_url() -> str:
|
||||
url = os.environ.get("CAIC_AMQP_URL")
|
||||
@@ -33,7 +33,7 @@ def get_amqp_url() -> str:
|
||||
except (FileNotFoundError, OSError):
|
||||
pw = "password"
|
||||
log.warning("AMQP secret file not found at %s — using default password", AMQP_SECRET_PATH)
|
||||
return f"amqp://caic:{pw}@localhost:5672/caic"
|
||||
return f"amqp://caic:{pw}@rabbitmq:5672/caic"
|
||||
|
||||
# --- Auth ---
|
||||
SESSION_TIMEOUT_SECONDS = 3600
|
||||
@@ -69,13 +69,13 @@ BODY_LIMIT_PROFILE_BYTES = 256 * 1024
|
||||
UPLOAD_DIR = os.environ.get("CAIC_UPLOAD_DIR", "/tmp/caic_uploads")
|
||||
MAX_UPLOAD_BYTES = 20 * 1024 * 1024
|
||||
SUPPORTED_UPLOAD_TYPES = {"text/plain", "text/markdown", "application/pdf", "application/json", "text/x-python", "text/html", "image/png", "image/jpeg", "image/gif", "image/svg+xml", "image/webp"}
|
||||
QDRANT_URL = os.environ.get("CAIC_QDRANT_URL", "http://192.168.50.108:6333")
|
||||
QDRANT_URL = os.environ.get("CAIC_QDRANT_URL", "http://localhost:6333")
|
||||
RAG_COLLECTION = os.environ.get("CAIC_RAG_COLLECTION", "caic_rag")
|
||||
UPLOAD_CONTEXT_EXPIRY_HOURS = 1
|
||||
BODY_LIMIT_UPLOAD_BYTES = MAX_UPLOAD_BYTES
|
||||
|
||||
# --- RAG eviction ---
|
||||
RAG_MAX_VECTORS = 50000
|
||||
RAG_MAX_VECTORS = int(os.environ.get("CAIC_RAG_MAX_VECTORS", "50000"))
|
||||
RAG_EVICTION_HIGH_WATER = 0.80
|
||||
RAG_EVICTION_LOW_WATER = 0.20
|
||||
RAG_EVICTION_BATCH = 1000
|
||||
|
||||
Reference in New Issue
Block a user