-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.py
More file actions
53 lines (44 loc) · 1.77 KB
/
Copy pathsettings.py
File metadata and controls
53 lines (44 loc) · 1.77 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
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=("../.env", ".env"), extra="ignore")
# Database (our Postgres/pgvector)
db_host: str = "0.0.0.0"
db_port: int = 5432
db_user: str = "sqlhelper"
db_password: str = "sqlhelper"
db_name: str = "vectordb"
db_pool_size: int = 5
db_max_overflow: int = 10
db_pool_recycle: int = 3600
# Encryption key for storing data-source credentials
# Override via ENCRYPTION_KEY env var in production
encryption_key: str = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
# Embedding model for semantic search
embedding_model: str = "all-MiniLM-L6-v2"
# External services (wired in later features)
temporal_address: str = "localhost:7233"
minio_endpoint: str = "localhost:9000"
minio_public_endpoint: str = "" # browser-accessible host; falls back to minio_endpoint
minio_access_key: str = "sqlhelper"
minio_secret_key: str = "sqlhelper"
openai_api_key: str = ""
openai_model: str = "gpt-4o-mini"
# LLM provider: "openai" | "gemini" | "anthropic"
llm_provider: str = "openai"
google_api_key: str = ""
gemini_model: str = "gemini-2.5-flash-lite"
anthropic_api_key: str = ""
anthropic_model: str = "claude-haiku-4-5-20251001"
@property
def llm_model(self) -> str:
if self.llm_provider == "gemini":
return self.gemini_model
if self.llm_provider == "anthropic":
return self.anthropic_model
return self.openai_model
@property
def database_url(self) -> str:
return (
f"postgresql+psycopg://{self.db_user}:{self.db_password}"
f"@{self.db_host}:{self.db_port}/{self.db_name}"
)