config.py 2.24 KB
Newer Older
1
import os
Timothy J. Baek's avatar
Timothy J. Baek committed
2
3


4
import chromadb
Timothy J. Baek's avatar
Timothy J. Baek committed
5
6
from chromadb import Settings

7
8
9

from secrets import token_bytes
from base64 import b64encode
Timothy J. Baek's avatar
Timothy J. Baek committed
10

11
from constants import ERROR_MESSAGES
Timothy J. Baek's avatar
Timothy J. Baek committed
12

Timothy J. Baek's avatar
Timothy J. Baek committed
13
14
15

from pathlib import Path

lucasew's avatar
lucasew committed
16
17
try:
    from dotenv import load_dotenv, find_dotenv
18

lucasew's avatar
lucasew committed
19
20
21
    load_dotenv(find_dotenv("../.env"))
except ImportError:
    print("dotenv not installed, skipping...")
Timothy J. Baek's avatar
Timothy J. Baek committed
22

Timothy J. Baek's avatar
Timothy J. Baek committed
23
24
25
26
27

####################################
# File Upload
####################################

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

30
UPLOAD_DIR = f"{DATA_DIR}/uploads"
Timothy J. Baek's avatar
Timothy J. Baek committed
31

lucasew's avatar
lucasew committed
32
33
34
Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True)

FRONTEND_BUILD_DIR = str(Path(os.getenv("FRONTEND_BUILD_DIR", "../build")))
Timothy J. Baek's avatar
Timothy J. Baek committed
35

36
37
38
39
####################################
# ENV (dev,test,prod)
####################################

Timothy J. Baek's avatar
Timothy J. Baek committed
40
41
ENV = os.environ.get("ENV", "dev")

42
43
44
45
####################################
# OLLAMA_API_BASE_URL
####################################

46
47
48
OLLAMA_API_BASE_URL = os.environ.get(
    "OLLAMA_API_BASE_URL", "http://localhost:11434/api"
)
Timothy J. Baek's avatar
Timothy J. Baek committed
49
50
51
52

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

Timothy J. Baek's avatar
Timothy J. Baek committed
54
55
56
57
58
####################################
# OPENAI_API
####################################

OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")
59
60
61
62
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
63

64
####################################
65
# WEBUI_VERSION
66
67
####################################

Timothy J. Baek's avatar
Timothy J. Baek committed
68
WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.61")
69
70

####################################
71
# WEBUI_AUTH (Required for security)
72
73
####################################

74
WEBUI_AUTH = True
75

Timothy J. Baek's avatar
Timothy J. Baek committed
76
77
78
79
80
####################################
# WEBUI_JWT_SECRET_KEY
####################################

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

Timothy J. Baek's avatar
Timothy J. Baek committed
82
83
if WEBUI_AUTH and WEBUI_JWT_SECRET_KEY == "":
    raise ValueError(ERROR_MESSAGES.ENV_VAR_NOT_FOUND)
84
85
86
87
88

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

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