feat: (0.6)New UI (#1855)

Co-authored-by: 夏姜 <wenfengjiang.jwf@digital-engine.com>
Co-authored-by: aries_ckt <916701291@qq.com>
Co-authored-by: wb-lh513319 <wb-lh513319@alibaba-inc.com>
Co-authored-by: csunny <cfqsunny@163.com>
This commit is contained in:
明天
2024-08-21 17:37:45 +08:00
committed by GitHub
parent 3fc82693ba
commit b124ecc10b
824 changed files with 93371 additions and 2515 deletions

View File

@@ -125,8 +125,8 @@ async def query(
)
async def dialogue_new(
chat_mode: str = "chat_normal",
app_code: str = None,
user_name: str = None,
# TODO remove user id
user_id: str = None,
sys_code: str = None,
):
@@ -136,6 +136,7 @@ async def dialogue_new(
user_input="",
conv_uid=str(unique_id),
chat_mode=chat_mode,
app_code=app_code,
user_name=user_name,
sys_code=sys_code,
)
@@ -157,6 +158,24 @@ async def delete(con_uid: str, service: Service = Depends(get_service)):
return Result.succ(None)
@router.post(
"/clear",
dependencies=[Depends(check_api_key)],
)
async def clear(
con_uid: str,
service: Service = Depends(get_service),
):
"""Clear a Conversation entity
Args:
con_uid (str): The conversation UID
service (Service): The service
"""
service.clear(ServeRequest(conv_uid=con_uid))
return Result.succ(None)
@router.post(
"/query_page",
response_model=Result[PaginationResult[ServerResponse]],

View File

@@ -74,6 +74,13 @@ class ServerResponse(BaseModel):
"chat_normal",
],
)
app_code: Optional[str] = Field(
default=None,
description="The chat app code.",
examples=[
"app_code_xxx",
],
)
select_param: Optional[str] = Field(
default=None,
description="The select param.",
@@ -149,6 +156,14 @@ class MessageVo(BaseModel):
],
)
feedback: Optional[Dict] = Field(
default={},
description="feedback info",
examples=[
"{}",
],
)
def to_dict(self, **kwargs) -> Dict[str, Any]:
"""Convert the model to a dictionary"""
return model_to_dict(self, **kwargs)

View File

@@ -60,10 +60,11 @@ class ServeDao(BaseDao[ServeEntity, ServeRequest, ServerResponse]):
"""
# TODO implement your own logic here, transfer the entity to a response
return ServerResponse(
app_code=entity.app_code,
conv_uid=entity.conv_uid,
user_input=entity.summary,
chat_mode=entity.chat_mode,
user_name=entity.user_name,
user_name="",
sys_code=entity.sys_code,
)

View File

@@ -14,6 +14,7 @@ from dbgpt.storage.metadata import BaseDao
from dbgpt.storage.metadata._base_dao import REQ, RES
from dbgpt.util.pagination_utils import PaginationResult
from ...feedback.api.endpoints import get_service
from ..api.schemas import MessageVo, ServeRequest, ServerResponse
from ..config import SERVE_CONFIG_KEY_PREFIX, SERVE_SERVICE_COMPONENT_NAME, ServeConfig
from ..models.models import ServeDao, ServeEntity
@@ -149,6 +150,15 @@ class Service(BaseService[ServeEntity, ServeRequest, ServerResponse]):
conv: StorageConversation = self.create_storage_conv(request)
conv.delete()
def clear(self, request: ServeRequest) -> None:
"""Clear current conversation and its messages
Args:
request (ServeRequest): The request
"""
conv: StorageConversation = self.create_storage_conv(request)
conv.clear()
def get_list(self, request: ServeRequest) -> List[ServerResponse]:
"""Get a list of Conversation entities
@@ -192,13 +202,27 @@ class Service(BaseService[ServeEntity, ServeRequest, ServerResponse]):
conv: StorageConversation = self.create_storage_conv(request)
result = []
messages = _append_view_messages(conv.messages)
feedback_service = get_service()
feedbacks = feedback_service.list_conv_feedbacks(conv_uid=request.conv_uid)
fb_map = {fb.message_id: fb.to_dict() for fb in feedbacks}
for msg in messages:
feedback = {}
if (
msg.round_index is not None
and fb_map.get(str(msg.round_index)) is not None
):
feedback = fb_map.get(str(msg.round_index))
result.append(
MessageVo(
role=msg.type,
context=msg.content,
order=msg.round_index,
model_name=self.config.default_model,
feedback=feedback,
)
)
return result