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…
Reference in a new issue