forked from open-webui/open-webui
		
	backend: make the data directory and the artifacts from the frontend customizable using environment variables
Signed-off-by: lucasew <lucas59356@gmail.com>
This commit is contained in:
		
							parent
							
								
									e3503d6617
								
							
						
					
					
						commit
						5b26d2a686
					
				
					 4 changed files with 16 additions and 14 deletions
				
			
		|  | @ -1,4 +1,6 @@ | ||||||
| from peewee import * | from peewee import * | ||||||
|  | from config import DATA_DIR | ||||||
| 
 | 
 | ||||||
| DB = SqliteDatabase("./data/ollama.db") | 
 | ||||||
|  | DB = SqliteDatabase(str(DATA_DIR / "ollama.db")) | ||||||
| DB.connect() | DB.connect() | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ import json | ||||||
| 
 | 
 | ||||||
| from utils.misc import calculate_sha256 | from utils.misc import calculate_sha256 | ||||||
| 
 | 
 | ||||||
| from config import OLLAMA_API_BASE_URL | from config import OLLAMA_API_BASE_URL, DATA_DIR, UPLOAD_DIR | ||||||
| from constants import ERROR_MESSAGES | from constants import ERROR_MESSAGES | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -96,8 +96,7 @@ async def download( | ||||||
|     file_name = parse_huggingface_url(url) |     file_name = parse_huggingface_url(url) | ||||||
| 
 | 
 | ||||||
|     if file_name: |     if file_name: | ||||||
|         os.makedirs("./uploads", exist_ok=True) |         file_path = str(UPLOAD_DIR / file_name) | ||||||
|         file_path = os.path.join("./uploads", f"{file_name}") |  | ||||||
| 
 | 
 | ||||||
|         return StreamingResponse( |         return StreamingResponse( | ||||||
|             download_file_stream(url, file_path, file_name), |             download_file_stream(url, file_path, file_name), | ||||||
|  | @ -109,16 +108,15 @@ async def download( | ||||||
| 
 | 
 | ||||||
| @router.post("/upload") | @router.post("/upload") | ||||||
| def upload(file: UploadFile = File(...)): | def upload(file: UploadFile = File(...)): | ||||||
|     os.makedirs("./data/uploads", exist_ok=True) |     file_path = UPLOAD_DIR / file.filename | ||||||
|     file_path = os.path.join("./data/uploads", file.filename) |  | ||||||
| 
 | 
 | ||||||
|     # Save file in chunks |     # Save file in chunks | ||||||
|     with open(file_path, "wb+") as f: |     with file_path.open("wb+") as f: | ||||||
|         for chunk in file.file: |         for chunk in file.file: | ||||||
|             f.write(chunk) |             f.write(chunk) | ||||||
| 
 | 
 | ||||||
|     def file_process_stream(): |     def file_process_stream(): | ||||||
|         total_size = os.path.getsize(file_path) |         total_size = os.path.getsize(str(file_path)) | ||||||
|         chunk_size = 1024 * 1024 |         chunk_size = 1024 * 1024 | ||||||
|         try: |         try: | ||||||
|             with open(file_path, "rb") as f: |             with open(file_path, "rb") as f: | ||||||
|  |  | ||||||
|  | @ -24,10 +24,12 @@ except ImportError: | ||||||
| # File Upload | # File Upload | ||||||
| #################################### | #################################### | ||||||
| 
 | 
 | ||||||
|  | DATA_DIR = Path(os.getenv("DATA_DIR", './data')).resolve() | ||||||
| 
 | 
 | ||||||
| UPLOAD_DIR = "./data/uploads" | UPLOAD_DIR = DATA_DIR / "uploads" | ||||||
| Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True) | UPLOAD_DIR.mkdir(parents=True, exist_ok=True) | ||||||
| 
 | 
 | ||||||
|  | WEB_DIR = Path(os.getenv("WEB_DIR", "../build")) | ||||||
| 
 | 
 | ||||||
| #################################### | #################################### | ||||||
| # ENV (dev,test,prod) | # ENV (dev,test,prod) | ||||||
|  | @ -82,10 +84,10 @@ if WEBUI_AUTH and WEBUI_JWT_SECRET_KEY == "": | ||||||
| # RAG | # RAG | ||||||
| #################################### | #################################### | ||||||
| 
 | 
 | ||||||
| CHROMA_DATA_PATH = "./data/vector_db" | CHROMA_DATA_PATH = DATA_DIR / "vector_db" | ||||||
| EMBED_MODEL = "all-MiniLM-L6-v2" | EMBED_MODEL = "all-MiniLM-L6-v2" | ||||||
| CHROMA_CLIENT = chromadb.PersistentClient( | CHROMA_CLIENT = chromadb.PersistentClient( | ||||||
|     path=CHROMA_DATA_PATH, settings=Settings(allow_reset=True) |     path=str(CHROMA_DATA_PATH), settings=Settings(allow_reset=True) | ||||||
| ) | ) | ||||||
| CHUNK_SIZE = 1500 | CHUNK_SIZE = 1500 | ||||||
| CHUNK_OVERLAP = 100 | CHUNK_OVERLAP = 100 | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ from apps.openai.main import app as openai_app | ||||||
| from apps.web.main import app as webui_app | from apps.web.main import app as webui_app | ||||||
| from apps.rag.main import app as rag_app | from apps.rag.main import app as rag_app | ||||||
| 
 | 
 | ||||||
| from config import ENV | from config import ENV, WEB_DIR | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SPAStaticFiles(StaticFiles): | class SPAStaticFiles(StaticFiles): | ||||||
|  | @ -58,4 +58,4 @@ app.mount("/openai/api", openai_app) | ||||||
| app.mount("/rag/api/v1", rag_app) | app.mount("/rag/api/v1", rag_app) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| app.mount("/", SPAStaticFiles(directory="../build", html=True), name="spa-static-files") | app.mount("/", SPAStaticFiles(directory=str(WEB_DIR), html=True), name="spa-static-files") | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 lucasew
						lucasew