config.py 3.08 KB
Newer Older
Timothy J. Baek's avatar
Timothy J. Baek committed
1
from dotenv import load_dotenv, find_dotenv
2
import os
Timothy J. Baek's avatar
Timothy J. Baek committed
3
4


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

8
9
10

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

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

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

from pathlib import Path

Timothy J. Baek's avatar
Timothy J. Baek committed
17
load_dotenv(find_dotenv("../.env"))
Timothy J. Baek's avatar
Timothy J. Baek committed
18

Timothy J. Baek's avatar
Timothy J. Baek committed
19
20
21
22
23
24
25
26
27
28

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


UPLOAD_DIR = "./data/uploads"
Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True)


29
30
31
32
####################################
# ENV (dev,test,prod)
####################################

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

35
36
37
38
####################################
# OLLAMA_API_BASE_URL
####################################

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

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

Timothy J. Baek's avatar
Timothy J. Baek committed
47
48
49
50
51
####################################
# OPENAI_API
####################################

OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")
52
53
54
55
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
56

57
58
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

####################################
# 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.",
        },
    ],
)

85
####################################
86
# WEBUI_VERSION
87
88
####################################

Timothy J. Baek's avatar
Timothy J. Baek committed
89
WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.61")
90
91

####################################
92
# WEBUI_AUTH (Required for security)
93
94
####################################

95
WEBUI_AUTH = True
96

Timothy J. Baek's avatar
Timothy J. Baek committed
97
98
99
100
101
####################################
# WEBUI_JWT_SECRET_KEY
####################################

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

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

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

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