config.py 2.23 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
####################################

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

30
UPLOAD_DIR = f"{DATA_DIR}/uploads"
31
UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
Timothy J. Baek's avatar
Timothy J. Baek committed
32

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

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

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

41
42
43
44
####################################
# OLLAMA_API_BASE_URL
####################################

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

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

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

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

63
####################################
64
# WEBUI_VERSION
65
66
####################################

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

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

73
WEBUI_AUTH = True
74

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

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

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

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

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