enh: knowledge author info

This commit is contained in:
Timothy Jaeryang Baek
2024-11-18 05:51:01 -08:00
parent a2a25fb571
commit 6c3e6710ef
5 changed files with 44 additions and 23 deletions

View File

@@ -8,6 +8,7 @@ from open_webui.apps.webui.internal.db import Base, get_db
from open_webui.env import SRC_LOG_LEVELS
from open_webui.apps.webui.models.files import FileMetadataResponse
from open_webui.apps.webui.models.users import Users, UserResponse
from pydantic import BaseModel, ConfigDict
@@ -79,17 +80,15 @@ class KnowledgeModel(BaseModel):
####################
class KnowledgeResponse(BaseModel):
id: str
name: str
description: str
data: Optional[dict] = None
meta: Optional[dict] = None
class KnowledgeUserModel(KnowledgeModel):
user: Optional[UserResponse] = None
access_control: Optional[dict] = None
created_at: int # timestamp in epoch
updated_at: int # timestamp in epoch
class KnowledgeResponse(KnowledgeModel):
files: Optional[list[FileMetadataResponse | dict]] = None
class KnowledgeUserResponse(KnowledgeUserModel):
files: Optional[list[FileMetadataResponse | dict]] = None
@@ -127,10 +126,15 @@ class KnowledgeTable:
except Exception:
return None
def get_knowledge_bases(self) -> list[KnowledgeModel]:
def get_knowledge_bases(self) -> list[KnowledgeUserModel]:
with get_db() as db:
return [
KnowledgeModel.model_validate(knowledge)
KnowledgeUserModel.model_validate(
{
**KnowledgeModel.model_validate(knowledge).model_dump(),
"user": Users.get_user_by_id(knowledge.user_id).model_dump(),
}
)
for knowledge in db.query(Knowledge)
.order_by(Knowledge.updated_at.desc())
.all()
@@ -138,7 +142,7 @@ class KnowledgeTable:
def get_knowledge_bases_by_user_id(
self, user_id: str, permission: str = "write"
) -> list[KnowledgeModel]:
) -> list[KnowledgeUserModel]:
knowledge_bases = self.get_knowledge_bases()
return [
knowledge_base

View File

@@ -8,6 +8,7 @@ from open_webui.apps.webui.models.knowledge import (
Knowledges,
KnowledgeForm,
KnowledgeResponse,
KnowledgeUserResponse,
)
from open_webui.apps.webui.models.files import Files, FileModel
from open_webui.apps.retrieval.vector.connector import VECTOR_DB_CLIENT
@@ -32,7 +33,7 @@ router = APIRouter()
############################
@router.get("/", response_model=list[KnowledgeResponse])
@router.get("/", response_model=list[KnowledgeUserResponse])
async def get_knowledge(user=Depends(get_verified_user)):
knowledge_bases = []
@@ -77,7 +78,7 @@ async def get_knowledge(user=Depends(get_verified_user)):
return knowledge_bases
@router.get("/list", response_model=list[KnowledgeResponse])
@router.get("/list", response_model=list[KnowledgeUserResponse])
async def get_knowledge_list(user=Depends(get_verified_user)):
knowledge_bases = []