ishaq101's picture
[NOTICKET] Remove threshold retriever
4a4a1b8
"""Centralized configuration management using pydantic-settings."""
import os
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""Application settings loaded from environment variables."""
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
extra="allow",
case_sensitive=False,
)
# Database
postgres_connstring: str
# Redis
redis_url: str
redis_prefix: str = "maintiva-agent-service_"
# Azure OpenAI - GPT-4o (map to .env names with double underscores)
azureai_api_key_4o: str = Field(alias="azureai__api_key__4o", default="")
azureai_endpoint_url_4o: str = Field(alias="azureai__endpoint__url__4o", default="")
azureai_deployment_name_4o: str = Field(alias="azureai__deployment__name__4o", default="")
azureai_api_version_4o: str = Field(alias="azureai__api__version__4o", default="")
# Azure OpenAI - GPT-4.5-mini (requires API version >= 2024-12-01-preview for prompt caching)
azureai_api_key_54mini: str = Field(alias="azureai__api_key__54mini", default="")
azureai_endpoint_url_54mini: str = Field(alias="azureai__endpoint__url__54mini", default="")
azureai_deployment_name_54mini: str = Field(alias="azureai__deployment__name__54mini", default="")
azureai_api_version_54mini: str = Field(alias="azureai__api__version__54mini", default="")
# Azure OpenAI - Embeddings
azureai_api_key_embedding: str = Field(alias="azureai__api_key__embedding", default="")
azureai_endpoint_url_embedding: str = Field(alias="azureai__endpoint__url__embedding", default="")
azureai_deployment_name_embedding: str = Field(alias="azureai__deployment__name__embedding", default="")
azureai_api_version_embedding: str = Field(alias="azureai__api__version__embedding", default="")
# Azure Document Intelligence
azureai_docintel_endpoint: str = Field(alias="azureai__docintel__endpoint", default="")
azureai_docintel_key: str = Field(alias="azureai__docintel__key", default="")
# Azure Blob Storage
azureai_blob_sas: str = Field(alias="azureai__blob__sas", default="")
azureai_container_endpoint: str = Field(alias="azureai__container__endpoint", default="")
azureai_container_name: str = Field(alias="azureai__container__name", default="")
azureai_container_account_name: str = Field(alias="azureai__container__account__name", default="")
# Langfuse
LANGFUSE_PUBLIC_KEY: str
LANGFUSE_SECRET_KEY: str
LANGFUSE_HOST: str
# MongoDB (for users - existing)
emarcal_mongo_endpoint_url: str = Field(alias="emarcal__mongo__endpoint__url", default="")
emarcal_buma_mongo_dbname: str = Field(alias="emarcal__buma__mongo__dbname", default="")
# JWT (for users - existing)
emarcal_jwt_secret_key: str = Field(alias="emarcal__jwt__secret_key", default="")
emarcal_jwt_algorithm: str = Field(alias="emarcal__jwt__algorithm", default="HS256")
# Bcrypt salt (for users - existing)
emarcal_bcrypt_salt: str = Field(alias="emarcal__bcrypt__salt", default="")
# DB credential encryption (Fernet key for user-registered database creds)
maintiva_db_credential_key: str = Field(
alias="maintiva__db__credential__key"
)
# RAG relevance threshold (cosine similarity score, 0-1, higher = more strict)
# Tune this value: 0.5 is a safe starting point; increase if too many irrelevant chunks pass through
rag_score_threshold: float = 0.01
# Singleton instance
settings = Settings()