Spaces:
Running
Running
""" | |
Configuration utilities for ViettelPay Agent | |
Supports both Streamlit secrets.toml and environment variables | |
""" | |
import os | |
from typing import Optional, Any | |
def get_secret( | |
key: str, section: str = "api_keys", default: Optional[str] = None | |
) -> Optional[str]: | |
""" | |
Get secret from Streamlit secrets.toml or environment variables | |
Args: | |
key: The secret key name | |
section: Section in secrets.toml (default: "api_keys") | |
default: Default value if secret not found | |
Returns: | |
Secret value or default | |
""" | |
try: | |
# Try to get from Streamlit secrets first | |
import streamlit as st | |
if hasattr(st, "secrets") and section in st.secrets: | |
return st.secrets[section].get(key, default) | |
except (ImportError, AttributeError, KeyError): | |
pass | |
# Fallback to environment variables | |
return os.getenv(key, default) | |
def get_config( | |
key: str, section: str = "models", default: Optional[str] = None | |
) -> Optional[str]: | |
""" | |
Get configuration from Streamlit secrets.toml or environment variables | |
Args: | |
key: The config key name | |
section: Section in secrets.toml (default: "models") | |
default: Default value if config not found | |
Returns: | |
Config value or default | |
""" | |
try: | |
# Try to get from Streamlit secrets first | |
import streamlit as st | |
if hasattr(st, "secrets") and section in st.secrets: | |
return st.secrets[section].get(key, default) | |
except (ImportError, AttributeError, KeyError): | |
pass | |
# Fallback to environment variables | |
return os.getenv(key, default) | |
def get_path( | |
key: str, section: str = "paths", default: Optional[str] = None | |
) -> Optional[str]: | |
""" | |
Get path configuration from Streamlit secrets.toml or environment variables | |
Args: | |
key: The path key name | |
section: Section in secrets.toml (default: "paths") | |
default: Default value if path not found | |
Returns: | |
Path value or default | |
""" | |
try: | |
# Try to get from Streamlit secrets first | |
import streamlit as st | |
if hasattr(st, "secrets") and section in st.secrets: | |
return st.secrets[section].get(key, default) | |
except (ImportError, AttributeError, KeyError): | |
pass | |
# Fallback to environment variables | |
return os.getenv(key, default) | |
def is_streamlit_environment() -> bool: | |
""" | |
Check if running in Streamlit environment | |
Returns: | |
True if running in Streamlit, False otherwise | |
""" | |
try: | |
import streamlit as st | |
return hasattr(st, "secrets") | |
except ImportError: | |
return False | |
# Common API keys | |
def get_gemini_api_key() -> Optional[str]: | |
"""Get Gemini API key from secrets or environment""" | |
return get_secret("GEMINI_API_KEY") | |
def get_openai_api_key() -> Optional[str]: | |
"""Get OpenAI API key from secrets or environment""" | |
return get_secret("OPENAI_API_KEY") | |
def get_cohere_api_key() -> Optional[str]: | |
"""Get Cohere API key from secrets or environment""" | |
return get_secret("COHERE_API_KEY") | |
# Common configurations | |
def get_embedding_model() -> str: | |
"""Get embedding model name""" | |
return get_config( | |
"EMBEDDING_MODEL", default="dangvantuan/vietnamese-document-embedding" | |
) | |
def get_llm_provider() -> str: | |
"""Get LLM provider""" | |
return get_config("LLM_PROVIDER", default="gemini") | |
def get_knowledge_base_path() -> str: | |
"""Get knowledge base path""" | |
return get_path("KNOWLEDGE_BASE_PATH", default="./knowledge_base") | |
def get_documents_folder() -> str: | |
"""Get documents folder path""" | |
return get_path("DOCUMENTS_FOLDER", default="./viettelpay_docs") | |