forked from open-webui/open-webui
		
	fix
This commit is contained in:
		
							parent
							
								
									704f7e369c
								
							
						
					
					
						commit
						8aa47ea6bc
					
				
					 2 changed files with 47 additions and 35 deletions
				
			
		|  | @ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||||||
| 
 | 
 | ||||||
| ## [0.1.122] - 2024-04-27 | ## [0.1.122] - 2024-04-27 | ||||||
| 
 | 
 | ||||||
|  | ### Added | ||||||
|  | 
 | ||||||
| - **🌟 Enhanced RAG Pipeline**: Now with hybrid searching via 'BM25', reranking powered by 'CrossEncoder', and configurable relevance score thresholds. | - **🌟 Enhanced RAG Pipeline**: Now with hybrid searching via 'BM25', reranking powered by 'CrossEncoder', and configurable relevance score thresholds. | ||||||
| - **🛢️ External Database Support**: Seamlessly connect to custom SQLite or Postgres databases using the 'DATABASE_URL' environment variable. | - **🛢️ External Database Support**: Seamlessly connect to custom SQLite or Postgres databases using the 'DATABASE_URL' environment variable. | ||||||
| - **🌐 Remote ChromaDB Support**: Introducing the capability to connect to remote ChromaDB servers. | - **🌐 Remote ChromaDB Support**: Introducing the capability to connect to remote ChromaDB servers. | ||||||
|  |  | ||||||
|  | @ -28,6 +28,7 @@ log.setLevel(SRC_LOG_LEVELS["LITELLM"]) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| from config import ( | from config import ( | ||||||
|  |     ENABLE_LITELLM, | ||||||
|     ENABLE_MODEL_FILTER, |     ENABLE_MODEL_FILTER, | ||||||
|     MODEL_FILTER_LIST, |     MODEL_FILTER_LIST, | ||||||
|     DATA_DIR, |     DATA_DIR, | ||||||
|  | @ -59,6 +60,8 @@ LITELLM_CONFIG_DIR = f"{DATA_DIR}/litellm/config.yaml" | ||||||
| with open(LITELLM_CONFIG_DIR, "r") as file: | with open(LITELLM_CONFIG_DIR, "r") as file: | ||||||
|     litellm_config = yaml.safe_load(file) |     litellm_config = yaml.safe_load(file) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | app.state.ENABLE = ENABLE_LITELLM | ||||||
| app.state.CONFIG = litellm_config | app.state.CONFIG = litellm_config | ||||||
| 
 | 
 | ||||||
| # Global variable to store the subprocess reference | # Global variable to store the subprocess reference | ||||||
|  | @ -209,49 +212,56 @@ async def update_config(form_data: LiteLLMConfigForm, user=Depends(get_admin_use | ||||||
| @app.get("/models") | @app.get("/models") | ||||||
| @app.get("/v1/models") | @app.get("/v1/models") | ||||||
| async def get_models(user=Depends(get_current_user)): | async def get_models(user=Depends(get_current_user)): | ||||||
|     while not background_process: |  | ||||||
|         await asyncio.sleep(0.1) |  | ||||||
| 
 | 
 | ||||||
|     url = f"http://localhost:{LITELLM_PROXY_PORT}/v1" |     if app.state.ENABLE: | ||||||
|     r = None |         while not background_process: | ||||||
|     try: |             await asyncio.sleep(0.1) | ||||||
|         r = requests.request(method="GET", url=f"{url}/models") |  | ||||||
|         r.raise_for_status() |  | ||||||
| 
 | 
 | ||||||
|         data = r.json() |         url = f"http://localhost:{LITELLM_PROXY_PORT}/v1" | ||||||
|  |         r = None | ||||||
|  |         try: | ||||||
|  |             r = requests.request(method="GET", url=f"{url}/models") | ||||||
|  |             r.raise_for_status() | ||||||
| 
 | 
 | ||||||
|         if app.state.ENABLE_MODEL_FILTER: |             data = r.json() | ||||||
|             if user and user.role == "user": | 
 | ||||||
|                 data["data"] = list( |             if app.state.ENABLE_MODEL_FILTER: | ||||||
|                     filter( |                 if user and user.role == "user": | ||||||
|                         lambda model: model["id"] in app.state.MODEL_FILTER_LIST, |                     data["data"] = list( | ||||||
|                         data["data"], |                         filter( | ||||||
|  |                             lambda model: model["id"] in app.state.MODEL_FILTER_LIST, | ||||||
|  |                             data["data"], | ||||||
|  |                         ) | ||||||
|                     ) |                     ) | ||||||
|                 ) |  | ||||||
| 
 | 
 | ||||||
|         return data |             return data | ||||||
|     except Exception as e: |         except Exception as e: | ||||||
| 
 | 
 | ||||||
|         log.exception(e) |             log.exception(e) | ||||||
|         error_detail = "Open WebUI: Server Connection Error" |             error_detail = "Open WebUI: Server Connection Error" | ||||||
|         if r is not None: |             if r is not None: | ||||||
|             try: |                 try: | ||||||
|                 res = r.json() |                     res = r.json() | ||||||
|                 if "error" in res: |                     if "error" in res: | ||||||
|                     error_detail = f"External: {res['error']}" |                         error_detail = f"External: {res['error']}" | ||||||
|             except: |                 except: | ||||||
|                 error_detail = f"External: {e}" |                     error_detail = f"External: {e}" | ||||||
| 
 | 
 | ||||||
|  |             return { | ||||||
|  |                 "data": [ | ||||||
|  |                     { | ||||||
|  |                         "id": model["model_name"], | ||||||
|  |                         "object": "model", | ||||||
|  |                         "created": int(time.time()), | ||||||
|  |                         "owned_by": "openai", | ||||||
|  |                     } | ||||||
|  |                     for model in app.state.CONFIG["model_list"] | ||||||
|  |                 ], | ||||||
|  |                 "object": "list", | ||||||
|  |             } | ||||||
|  |     else: | ||||||
|         return { |         return { | ||||||
|             "data": [ |             "data": [], | ||||||
|                 { |  | ||||||
|                     "id": model["model_name"], |  | ||||||
|                     "object": "model", |  | ||||||
|                     "created": int(time.time()), |  | ||||||
|                     "owned_by": "openai", |  | ||||||
|                 } |  | ||||||
|                 for model in app.state.CONFIG["model_list"] |  | ||||||
|             ], |  | ||||||
|             "object": "list", |             "object": "list", | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek