File size: 1,825 Bytes
102dd4f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cf6d08c
102dd4f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0445c27
 
 
 
a54f188
 
102dd4f
 
 
 
 
 
 
 
 
 
 
 
 
bc2df26
 
102dd4f
 
 
 
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
54
55
56
57
58
59
60
from functools import lru_cache
from pathlib import Path

from pydantic import Field, HttpUrl
from pydantic_settings import BaseSettings, SettingsConfigDict


BASE_DIR = Path(__file__).resolve().parent.parent


class Settings(BaseSettings):
    model_config = SettingsConfigDict(
        env_file=BASE_DIR / ".env",
        env_file_encoding="utf-8",
        extra="ignore",
    )

    app_name: str = "FALZH"
    environment: str = "development"
    app_timezone: str = "Asia/Aden"
    log_level: str = "INFO"

    supabase_url: HttpUrl
    supabase_service_role_key: str = Field(min_length=1)

    jina_api_key: str = Field(min_length=1)
    jina_embedding_model: str = "jina-embeddings-v5-text-small"
    jina_embedding_dimensions: int = 1024
    jina_embedding_endpoint: str = "https://api.jina.ai/v1/embeddings"
    jina_query_task: str = "retrieval.query"
    jina_passage_task: str = "retrieval.passage"

    groq_api_key: str = Field(min_length=1)
    groq_model: str = Field(min_length=1)
    groq_api_key_2: str | None = None
    groq_model_2: str | None = None
    google_ai_api_key: str | None = None
    google_ai_model: str | None = None
    openrouter_api_key: str = Field(min_length=1)
    openrouter_model: str = Field(min_length=1)
    ai_temperature: float = 0.2
    ai_max_tool_iterations: int = 3
    request_timeout_seconds: float = 20.0

    whatsapp_graph_url: str = "https://graph.facebook.com"
    whatsapp_api_version: str = "v20.0"
    whatsapp_verify_token: str = Field(min_length=1)
    whatsapp_app_secret: str = Field(min_length=1)
    whatsapp_access_token: str = Field(min_length=1)
    whatsapp_phone_number_id: str = Field(min_length=1)

    admin_api_key: str = Field(min_length=1)

    default_country_code: str = "967"


@lru_cache
def get_settings() -> Settings:
    return Settings()