94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
from pydantic import BaseModel, Field
|
|
|
|
from private_gpt.settings.settings_loader import load_active_profiles
|
|
|
|
|
|
class CorsSettings(BaseModel):
|
|
"""CORS configuration.
|
|
|
|
For more details on the CORS configuration, see:
|
|
# * https://fastapi.tiangolo.com/tutorial/cors/
|
|
# * https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
|
"""
|
|
|
|
enabled: bool = Field(
|
|
description="Flag indicating if CORS headers are set or not."
|
|
"If set to True, the CORS headers will be set to allow all origins, methods and headers."
|
|
)
|
|
allow_credentials: bool = Field(
|
|
description="Indicate that cookies should be supported for cross-origin requests",
|
|
default=False,
|
|
)
|
|
allow_origins: list[str] = Field(
|
|
description="A list of origins that should be permitted to make cross-origin requests.",
|
|
default=[],
|
|
)
|
|
allow_origin_regex: list[str] = Field(
|
|
description="A regex string to match against origins that should be permitted to make cross-origin requests.",
|
|
default=None,
|
|
)
|
|
allow_methods: list[str] = Field(
|
|
description="A list of HTTP methods that should be allowed for cross-origin requests.",
|
|
default=[
|
|
"GET",
|
|
],
|
|
)
|
|
allow_headers: list[str] = Field(
|
|
description="A list of HTTP request headers that should be supported for cross-origin requests.",
|
|
default=[],
|
|
)
|
|
|
|
|
|
class ServerSettings(BaseModel):
|
|
env_name: str = Field(
|
|
description="Name of the environment (prod, staging, local...)"
|
|
)
|
|
port: int = Field(description="Port of PrivateGPT FastAPI server, defaults to 8001")
|
|
cors: CorsSettings = Field(
|
|
description="CORS configuration", default=CorsSettings(enabled=False)
|
|
)
|
|
|
|
|
|
class DataSettings(BaseModel):
|
|
local_data_folder: str = Field(
|
|
description="Path to local storage."
|
|
"It will be treated as an absolute path if it starts with /"
|
|
)
|
|
|
|
|
|
class LLMSettings(BaseModel):
|
|
mode: str = Field(enum=["local", "open_ai", "sagemaker", "mock"])
|
|
|
|
|
|
class LocalSettings(BaseModel):
|
|
llm_hf_repo_id: str
|
|
llm_hf_model_file: str
|
|
embedding_hf_model_name: str
|
|
|
|
|
|
class SagemakerSettings(BaseModel):
|
|
llm_endpoint_name: str
|
|
embedding_endpoint_name: str
|
|
|
|
|
|
class OpenAISettings(BaseModel):
|
|
api_key: str
|
|
|
|
|
|
class UISettings(BaseModel):
|
|
enabled: bool
|
|
path: str
|
|
|
|
|
|
class Settings(BaseModel):
|
|
server: ServerSettings
|
|
data: DataSettings
|
|
ui: UISettings
|
|
llm: LLMSettings
|
|
local: LocalSettings
|
|
sagemaker: SagemakerSettings
|
|
openai: OpenAISettings
|
|
|
|
|
|
settings = Settings(**load_active_profiles())
|