config.py 3.4 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

####################################
# WEBUI
####################################

DEFAULT_MODELS = os.environ.get("DEFAULT_MODELS", None)
DEFAULT_PROMPT_SUGGESTIONS = os.environ.get(
    "DEFAULT_PROMPT_SUGGESTIONS",
    [
        {
            "title": ["Help me study", "vocabulary for a college entrance exam"],
            "content": "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.",
        },
        {
            "title": ["Give me ideas", "for what to do with my kids' art"],
            "content": "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.",
        },
        {
            "title": ["Tell me a fun fact", "about the Roman Empire"],
            "content": "Tell me a random fun fact about the Roman Empire",
        },
        {
            "title": ["Show me a code snippet", "of a website's sticky header"],
            "content": "Show me a code snippet of a website's sticky header in CSS and JavaScript.",
        },
    ],
)

88
####################################
89
# WEBUI_VERSION
90
91
####################################

Timothy J. Baek's avatar
Timothy J. Baek committed
92
WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.61")
93
94

####################################
95
# WEBUI_AUTH (Required for security)
96
97
####################################

98
WEBUI_AUTH = True
99

Timothy J. Baek's avatar
Timothy J. Baek committed
100
101
102
103
104
####################################
# WEBUI_JWT_SECRET_KEY
####################################

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

Timothy J. Baek's avatar
Timothy J. Baek committed
106
107
if WEBUI_AUTH and WEBUI_JWT_SECRET_KEY == "":
    raise ValueError(ERROR_MESSAGES.ENV_VAR_NOT_FOUND)
108
109
110
111
112

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

113
CHROMA_DATA_PATH = f"{DATA_DIR}/vector_db"
114
EMBED_MODEL = "all-MiniLM-L6-v2"
Timothy J. Baek's avatar
Timothy J. Baek committed
115
116
117
CHROMA_CLIENT = chromadb.PersistentClient(
    path=CHROMA_DATA_PATH, settings=Settings(allow_reset=True)
)
118
119
CHUNK_SIZE = 1500
CHUNK_OVERLAP = 100