voice-agent / src /app /core /config.py
Sbboss's picture
RAG, language updates
0b2d478
"""Application configuration loaded from environment variables."""
from __future__ import annotations
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""Typed settings using environment variables and .env files."""
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")
azure_speech_key: str = Field(alias="AZURE_SPEECH_KEY")
azure_speech_region: str = Field(alias="AZURE_SPEECH_REGION")
azure_speech_stt_language: str = Field(
default="en-US", alias="AZURE_SPEECH_STT_LANGUAGE"
)
azure_speech_auto_languages: str = Field(
default="", alias="AZURE_SPEECH_AUTO_LANGUAGES"
)
azure_speech_tts_voice: str = Field(
default="en-US-JennyNeural", alias="AZURE_SPEECH_TTS_VOICE"
)
azure_speech_tts_voice_map: str = Field(
default="", alias="AZURE_SPEECH_TTS_VOICE_MAP"
)
llm_provider: str = Field(default="foundry_agent", alias="LLM_PROVIDER")
azure_openai_endpoint: str = Field(default="", alias="AZURE_OPENAI_ENDPOINT")
azure_openai_api_key: str = Field(default="", alias="AZURE_OPENAI_API_KEY")
azure_openai_deployment: str = Field(default="", alias="AZURE_OPENAI_DEPLOYMENT")
azure_openai_embeddings_deployment: str = Field(
default="", alias="AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT"
)
azure_openai_embeddings_api_key: str = Field(
default="", alias="AZURE_OPENAI_EMBEDDINGS_API_KEY"
)
azure_openai_api_version: str = Field(
default="2024-02-15-preview", alias="AZURE_OPENAI_API_VERSION"
)
azure_openai_embeddings_endpoint: str = Field(
default="", alias="AZURE_OPENAI_EMBEDDINGS_ENDPOINT"
)
azure_openai_embeddings_api_version: str = Field(
default="2024-02-15-preview", alias="AZURE_OPENAI_EMBEDDINGS_API_VERSION"
)
foundry_project_conn_str: str = Field(alias="FOUNDRY_PROJECT_CONN_STR")
foundry_agent_id: str = Field(alias="FOUNDRY_AGENT_ID")
azure_tenant_id: str | None = Field(default=None, alias="AZURE_TENANT_ID")
azure_client_id: str | None = Field(default=None, alias="AZURE_CLIENT_ID")
azure_client_secret: str | None = Field(default=None, alias="AZURE_CLIENT_SECRET")
app_env: str = Field(default="dev", alias="APP_ENV")
log_level: str = Field(default="INFO", alias="LOG_LEVEL")
max_reply_chars: int = Field(default=600, alias="MAX_REPLY_CHARS")
data_dir: str = Field(default="data", alias="DATA_DIR")
vector_store_dir: str = Field(default="data/vector_store", alias="VECTOR_STORE_DIR")
rag_top_k: int = Field(default=4, alias="RAG_TOP_K")
rag_chunk_size: int = Field(default=800, alias="RAG_CHUNK_SIZE")
rag_chunk_overlap: int = Field(default=120, alias="RAG_CHUNK_OVERLAP")
memory_top_k: int = Field(default=3, alias="MEMORY_TOP_K")
memory_summary_every: int = Field(default=6, alias="MEMORY_SUMMARY_EVERY")
speech_agent_http_url: str = Field(
default="http://localhost:8000", alias="SPEECH_AGENT_HTTP_URL"
)
logic_app_weather_trigger_url: str = Field(
default="", alias="LOGIC_APP_WEATHER_TRIGGER_URL"
)
_settings: Settings | None = None
def get_settings() -> Settings:
"""Get cached settings instance."""
global _settings
if _settings is None:
_settings = Settings()
return _settings