mirror of
https://git.mirrors.martin98.com/https://github.com/open-webui/open-webui
synced 2025-08-18 04:25:52 +08:00
enh: models display author name
This commit is contained in:
parent
03b606925e
commit
a2a25fb571
@ -1,3 +1,5 @@
|
|||||||
|
# TODO: move socket to webui app
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import socketio
|
import socketio
|
||||||
import logging
|
import logging
|
||||||
|
@ -5,7 +5,7 @@ from typing import Optional
|
|||||||
from open_webui.apps.webui.internal.db import Base, JSONField, get_db
|
from open_webui.apps.webui.internal.db import Base, JSONField, get_db
|
||||||
from open_webui.env import SRC_LOG_LEVELS
|
from open_webui.env import SRC_LOG_LEVELS
|
||||||
|
|
||||||
from open_webui.apps.webui.models.groups import Groups
|
from open_webui.apps.webui.models.users import Users, UserResponse
|
||||||
|
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
from pydantic import BaseModel, ConfigDict
|
||||||
@ -124,20 +124,12 @@ class ModelModel(BaseModel):
|
|||||||
####################
|
####################
|
||||||
|
|
||||||
|
|
||||||
class ModelResponse(BaseModel):
|
class ModelUserResponse(ModelModel):
|
||||||
id: str
|
user: Optional[UserResponse] = None
|
||||||
user_id: str
|
|
||||||
base_model_id: Optional[str] = None
|
|
||||||
|
|
||||||
name: str
|
|
||||||
params: ModelParams
|
|
||||||
meta: ModelMeta
|
|
||||||
|
|
||||||
access_control: Optional[dict] = None
|
class ModelResponse(ModelModel):
|
||||||
|
pass
|
||||||
is_active: bool
|
|
||||||
updated_at: int # timestamp in epoch
|
|
||||||
created_at: int # timestamp in epoch
|
|
||||||
|
|
||||||
|
|
||||||
class ModelForm(BaseModel):
|
class ModelForm(BaseModel):
|
||||||
@ -181,10 +173,15 @@ class ModelsTable:
|
|||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
return [ModelModel.model_validate(model) for model in db.query(Model).all()]
|
return [ModelModel.model_validate(model) for model in db.query(Model).all()]
|
||||||
|
|
||||||
def get_models(self) -> list[ModelModel]:
|
def get_models(self) -> list[ModelUserResponse]:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
return [
|
return [
|
||||||
ModelModel.model_validate(model)
|
ModelUserResponse.model_validate(
|
||||||
|
{
|
||||||
|
**ModelModel.model_validate(model).model_dump(),
|
||||||
|
"user": Users.get_user_by_id(model.user_id).model_dump(),
|
||||||
|
}
|
||||||
|
)
|
||||||
for model in db.query(Model).filter(Model.base_model_id != None).all()
|
for model in db.query(Model).filter(Model.base_model_id != None).all()
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -197,8 +194,8 @@ class ModelsTable:
|
|||||||
|
|
||||||
def get_models_by_user_id(
|
def get_models_by_user_id(
|
||||||
self, user_id: str, permission: str = "write"
|
self, user_id: str, permission: str = "write"
|
||||||
) -> list[ModelModel]:
|
) -> list[ModelUserResponse]:
|
||||||
models = self.get_all_models()
|
models = self.get_models()
|
||||||
return [
|
return [
|
||||||
model
|
model
|
||||||
for model in models
|
for model in models
|
||||||
|
@ -62,6 +62,14 @@ class UserModel(BaseModel):
|
|||||||
####################
|
####################
|
||||||
|
|
||||||
|
|
||||||
|
class UserResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
name: str
|
||||||
|
email: str
|
||||||
|
role: str
|
||||||
|
profile_image_url: str
|
||||||
|
|
||||||
|
|
||||||
class UserRoleUpdateForm(BaseModel):
|
class UserRoleUpdateForm(BaseModel):
|
||||||
id: str
|
id: str
|
||||||
role: str
|
role: str
|
||||||
|
@ -4,6 +4,7 @@ from open_webui.apps.webui.models.models import (
|
|||||||
ModelForm,
|
ModelForm,
|
||||||
ModelModel,
|
ModelModel,
|
||||||
ModelResponse,
|
ModelResponse,
|
||||||
|
ModelUserResponse,
|
||||||
Models,
|
Models,
|
||||||
)
|
)
|
||||||
from open_webui.constants import ERROR_MESSAGES
|
from open_webui.constants import ERROR_MESSAGES
|
||||||
@ -22,7 +23,7 @@ router = APIRouter()
|
|||||||
###########################
|
###########################
|
||||||
|
|
||||||
|
|
||||||
@router.get("/", response_model=list[ModelResponse])
|
@router.get("/", response_model=list[ModelUserResponse])
|
||||||
async def get_models(id: Optional[str] = None, user=Depends(get_verified_user)):
|
async def get_models(id: Optional[str] = None, user=Depends(get_verified_user)):
|
||||||
if user.role == "admin":
|
if user.role == "admin":
|
||||||
return Models.get_models()
|
return Models.get_models()
|
||||||
|
@ -284,8 +284,13 @@
|
|||||||
>
|
>
|
||||||
<div class=" font-semibold line-clamp-1">{model.name}</div>
|
<div class=" font-semibold line-clamp-1">{model.name}</div>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<div class=" text-xs overflow-hidden text-ellipsis line-clamp-1 text-gray-500">
|
|
||||||
{model?.meta?.description ?? model.id}
|
<div class="flex gap-1 text-xs overflow-hidden">
|
||||||
|
<Tooltip content={model?.user?.email} className="flex shrink-0" placement="top-start">
|
||||||
|
<div class="shrink-0 text-gray-500">
|
||||||
|
By <span class=" capitalize">{model?.user?.name ?? model?.user?.email}</span>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user