config.py 2.33 KB
Newer Older
1
2
import os
import chromadb
Timothy J. Baek's avatar
Timothy J. Baek committed
3
from chromadb import Settings
4
5
from secrets import token_bytes
from base64 import b64encode
6
from constants import ERROR_MESSAGES
Timothy J. Baek's avatar
Timothy J. Baek committed
7
8
from pathlib import Path

lucasew's avatar
lucasew committed
9
10
try:
    from dotenv import load_dotenv, find_dotenv
11

lucasew's avatar
lucasew committed
12
13
14
    load_dotenv(find_dotenv("../.env"))
except ImportError:
    print("dotenv not installed, skipping...")
Timothy J. Baek's avatar
Timothy J. Baek committed
15

Timothy J. Baek's avatar
Timothy J. Baek committed
16
17

####################################
Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
18
# ENV (dev,test,prod)
Timothy J. Baek's avatar
Timothy J. Baek committed
19
20
####################################

Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
21
ENV = os.environ.get("ENV", "dev")
Timothy J. Baek's avatar
Timothy J. Baek committed
22
23


Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
24
25
26
####################################
# DATA/FRONTEND BUILD DIR
####################################
lucasew's avatar
lucasew committed
27

Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
28
DATA_DIR = str(Path(os.getenv("DATA_DIR", "./data")).resolve())
lucasew's avatar
lucasew committed
29
FRONTEND_BUILD_DIR = str(Path(os.getenv("FRONTEND_BUILD_DIR", "../build")))
Timothy J. Baek's avatar
Timothy J. Baek committed
30

31
####################################
Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
32
# File Upload DIR
33
34
####################################

Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
35
36
UPLOAD_DIR = f"{DATA_DIR}/uploads"
Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True)
Timothy J. Baek's avatar
Timothy J. Baek committed
37

38
39
40
41
####################################
# OLLAMA_API_BASE_URL
####################################

42
43
44
OLLAMA_API_BASE_URL = os.environ.get(
    "OLLAMA_API_BASE_URL", "http://localhost:11434/api"
)
Timothy J. Baek's avatar
Timothy J. Baek committed
45
46
47
48

if ENV == "prod":
    if OLLAMA_API_BASE_URL == "/ollama/api":
        OLLAMA_API_BASE_URL = "http://host.docker.internal:11434/api"
49

Timothy J. Baek's avatar
Timothy J. Baek committed
50
51
52
53
54
####################################
# OPENAI_API
####################################

OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")
55
56
57
58
OPENAI_API_BASE_URL = os.environ.get("OPENAI_API_BASE_URL", "")

if OPENAI_API_BASE_URL == "":
    OPENAI_API_BASE_URL = "https://api.openai.com/v1"
Timothy J. Baek's avatar
Timothy J. Baek committed
59

60
####################################
61
# WEBUI_VERSION
62
63
####################################

Timothy J. Baek's avatar
Timothy J. Baek committed
64
WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.61")
65
66

####################################
67
# WEBUI_AUTH (Required for security)
68
69
####################################

70
WEBUI_AUTH = True
71

Timothy J. Baek's avatar
Timothy J. Baek committed
72
73
74
75
76
####################################
# WEBUI_JWT_SECRET_KEY
####################################

WEBUI_JWT_SECRET_KEY = os.environ.get("WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t")
77

Timothy J. Baek's avatar
Timothy J. Baek committed
78
79
if WEBUI_AUTH and WEBUI_JWT_SECRET_KEY == "":
    raise ValueError(ERROR_MESSAGES.ENV_VAR_NOT_FOUND)
80
81
82
83
84

####################################
# RAG
####################################

85
CHROMA_DATA_PATH = f"{DATA_DIR}/vector_db"
86
EMBED_MODEL = "all-MiniLM-L6-v2"
Timothy J. Baek's avatar
Timothy J. Baek committed
87
CHROMA_CLIENT = chromadb.PersistentClient(
lucasew's avatar
lucasew committed
88
    path=CHROMA_DATA_PATH, settings=Settings(allow_reset=True)
Timothy J. Baek's avatar
Timothy J. Baek committed
89
)
90
91
CHUNK_SIZE = 1500
CHUNK_OVERLAP = 100