mirror of
https://github.com/trushildhokiya/allininx-2.git
synced 2025-03-15 08:58:40 +00:00
179 lines
4.5 KiB
Python
179 lines
4.5 KiB
Python
|
import platform
|
||
|
from pathlib import Path
|
||
|
from tempfile import gettempdir
|
||
|
from typing import List, Literal, Optional, Union
|
||
|
|
||
|
from pydantic import BaseSettings
|
||
|
from yarl import URL
|
||
|
|
||
|
from reworkd_platform.constants import ENV_PREFIX
|
||
|
|
||
|
TEMP_DIR = Path(gettempdir())
|
||
|
|
||
|
LOG_LEVEL = Literal[
|
||
|
"NOTSET",
|
||
|
"DEBUG",
|
||
|
"INFO",
|
||
|
"WARNING",
|
||
|
"ERROR",
|
||
|
"FATAL",
|
||
|
]
|
||
|
|
||
|
|
||
|
SASL_MECHANISM = Literal[
|
||
|
"PLAIN",
|
||
|
"SCRAM-SHA-256",
|
||
|
]
|
||
|
|
||
|
ENVIRONMENT = Literal[
|
||
|
"development",
|
||
|
"production",
|
||
|
]
|
||
|
|
||
|
|
||
|
class Settings(BaseSettings):
|
||
|
"""
|
||
|
Application settings.
|
||
|
|
||
|
These parameters can be configured
|
||
|
with environment variables.
|
||
|
"""
|
||
|
|
||
|
# Application settings
|
||
|
host: str = "0.0.0.0"
|
||
|
port: int = 8000
|
||
|
workers_count: int = 1
|
||
|
reload: bool = True
|
||
|
environment: ENVIRONMENT = "development"
|
||
|
log_level: LOG_LEVEL = "DEBUG"
|
||
|
|
||
|
# Make sure you update this with your own secret key
|
||
|
# Must be 32 url-safe base64-encoded bytes
|
||
|
secret_signing_key: str = "JF52S66x6WMoifP5gZreiguYs9LYMn0lkXqgPYoNMD0="
|
||
|
|
||
|
# OpenAI
|
||
|
openai_api_base: str = "https://api.openai.com/v1"
|
||
|
openai_api_key: str = "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"
|
||
|
openai_api_version: str = "2023-08-01-preview"
|
||
|
azure_openai_deployment_name: str = "<Should be updated via env if using azure>"
|
||
|
|
||
|
# Helicone
|
||
|
helicone_api_base: str = "https://oai.hconeai.com/v1"
|
||
|
helicone_api_key: Optional[str] = None
|
||
|
|
||
|
replicate_api_key: Optional[str] = None
|
||
|
serp_api_key: Optional[str] = None
|
||
|
|
||
|
# Frontend URL for CORS
|
||
|
frontend_url: str = "https://allinix.ai"
|
||
|
allowed_origins_regex: Optional[str] = None
|
||
|
|
||
|
# Variables for the database
|
||
|
db_host: str = "65.19.178.35"
|
||
|
db_port: int = 3307
|
||
|
db_user: str = "reworkd_platform"
|
||
|
db_pass: str = "reworkd_platform"
|
||
|
db_base: str = "default"
|
||
|
db_echo: bool = False
|
||
|
db_ca_path: Optional[str] = None
|
||
|
|
||
|
# Variables for Pinecone DB
|
||
|
pinecone_api_key: Optional[str] = None
|
||
|
pinecone_index_name: Optional[str] = None
|
||
|
pinecone_environment: Optional[str] = None
|
||
|
|
||
|
# Sentry's configuration.
|
||
|
sentry_dsn: Optional[str] = None
|
||
|
sentry_sample_rate: float = 1.0
|
||
|
|
||
|
kafka_bootstrap_servers: Union[str, List[str]] = []
|
||
|
kafka_username: Optional[str] = None
|
||
|
kafka_password: Optional[str] = None
|
||
|
kafka_ssal_mechanism: SASL_MECHANISM = "PLAIN"
|
||
|
|
||
|
# Websocket settings
|
||
|
pusher_app_id: Optional[str] = None
|
||
|
pusher_key: Optional[str] = None
|
||
|
pusher_secret: Optional[str] = None
|
||
|
pusher_cluster: Optional[str] = None
|
||
|
|
||
|
# Application Settings
|
||
|
ff_mock_mode_enabled: bool = False # Controls whether calls are mocked
|
||
|
max_loops: int = 25 # Maximum number of loops to run
|
||
|
|
||
|
# Settings for sid
|
||
|
sid_client_id: Optional[str] = None
|
||
|
sid_client_secret: Optional[str] = None
|
||
|
sid_redirect_uri: Optional[str] = None
|
||
|
|
||
|
@property
|
||
|
def kafka_consumer_group(self) -> str:
|
||
|
"""
|
||
|
Kafka consumer group will be the name of the host in development
|
||
|
mode, making it easier to share a dev cluster.
|
||
|
"""
|
||
|
|
||
|
if self.environment == "development":
|
||
|
return platform.node()
|
||
|
|
||
|
return "platform"
|
||
|
|
||
|
@property
|
||
|
def db_url(self) -> URL:
|
||
|
return URL.build(
|
||
|
scheme="mysql+aiomysql",
|
||
|
host=self.db_host,
|
||
|
port=self.db_port,
|
||
|
user=self.db_user,
|
||
|
password=self.db_pass,
|
||
|
path=f"/{self.db_base}",
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def pusher_enabled(self) -> bool:
|
||
|
return all(
|
||
|
[
|
||
|
self.pusher_app_id,
|
||
|
self.pusher_key,
|
||
|
self.pusher_secret,
|
||
|
self.pusher_cluster,
|
||
|
]
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def kafka_enabled(self) -> bool:
|
||
|
return all(
|
||
|
[
|
||
|
self.kafka_bootstrap_servers,
|
||
|
self.kafka_username,
|
||
|
self.kafka_password,
|
||
|
]
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def helicone_enabled(self) -> bool:
|
||
|
return all(
|
||
|
[
|
||
|
self.helicone_api_base,
|
||
|
self.helicone_api_key,
|
||
|
]
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def sid_enabled(self) -> bool:
|
||
|
return all(
|
||
|
[
|
||
|
self.sid_client_id,
|
||
|
self.sid_client_secret,
|
||
|
self.sid_redirect_uri,
|
||
|
]
|
||
|
)
|
||
|
|
||
|
class Config:
|
||
|
env_file = ".env"
|
||
|
env_prefix = ENV_PREFIX
|
||
|
env_file_encoding = "utf-8"
|
||
|
|
||
|
|
||
|
settings = Settings()
|