mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-09-17 07:00:15 +00:00
feat(core): APP use new SDK component (#1050)
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import uuid
|
||||
from functools import cache
|
||||
from typing import List, Optional
|
||||
|
||||
@@ -10,7 +11,7 @@ from dbgpt.util import PaginationResult
|
||||
|
||||
from ..config import APP_NAME, SERVE_APP_NAME, SERVE_SERVICE_COMPONENT_NAME, ServeConfig
|
||||
from ..service.service import Service
|
||||
from .schemas import ServeRequest, ServerResponse
|
||||
from .schemas import MessageVo, ServeRequest, ServerResponse
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -94,40 +95,6 @@ async def test_auth():
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@router.post(
|
||||
"/", response_model=Result[ServerResponse], dependencies=[Depends(check_api_key)]
|
||||
)
|
||||
async def create(
|
||||
request: ServeRequest, service: Service = Depends(get_service)
|
||||
) -> Result[ServerResponse]:
|
||||
"""Create a new Conversation entity
|
||||
|
||||
Args:
|
||||
request (ServeRequest): The request
|
||||
service (Service): The service
|
||||
Returns:
|
||||
ServerResponse: The response
|
||||
"""
|
||||
return Result.succ(service.create(request))
|
||||
|
||||
|
||||
@router.put(
|
||||
"/", response_model=Result[ServerResponse], dependencies=[Depends(check_api_key)]
|
||||
)
|
||||
async def update(
|
||||
request: ServeRequest, service: Service = Depends(get_service)
|
||||
) -> Result[ServerResponse]:
|
||||
"""Update a Conversation entity
|
||||
|
||||
Args:
|
||||
request (ServeRequest): The request
|
||||
service (Service): The service
|
||||
Returns:
|
||||
ServerResponse: The response
|
||||
"""
|
||||
return Result.succ(service.update(request))
|
||||
|
||||
|
||||
@router.post(
|
||||
"/query",
|
||||
response_model=Result[ServerResponse],
|
||||
@@ -147,6 +114,45 @@ async def query(
|
||||
return Result.succ(service.get(request))
|
||||
|
||||
|
||||
@router.post(
|
||||
"/new",
|
||||
response_model=Result[ServerResponse],
|
||||
dependencies=[Depends(check_api_key)],
|
||||
)
|
||||
async def dialogue_new(
|
||||
chat_mode: str = "chat_normal",
|
||||
user_name: str = None,
|
||||
# TODO remove user id
|
||||
user_id: str = None,
|
||||
sys_code: str = None,
|
||||
):
|
||||
user_name = user_name or user_id
|
||||
unique_id = uuid.uuid1()
|
||||
res = ServerResponse(
|
||||
user_input="",
|
||||
conv_uid=str(unique_id),
|
||||
chat_mode=chat_mode,
|
||||
user_name=user_name,
|
||||
sys_code=sys_code,
|
||||
)
|
||||
return Result.succ(res)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/delete",
|
||||
dependencies=[Depends(check_api_key)],
|
||||
)
|
||||
async def delete(con_uid: str, service: Service = Depends(get_service)):
|
||||
"""Delete a Conversation entity
|
||||
|
||||
Args:
|
||||
con_uid (str): The conversation UID
|
||||
service (Service): The service
|
||||
"""
|
||||
service.delete(ServeRequest(conv_uid=con_uid))
|
||||
return Result.succ(None)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/query_page",
|
||||
response_model=Result[PaginationResult[ServerResponse]],
|
||||
@@ -155,7 +161,7 @@ async def query(
|
||||
async def query_page(
|
||||
request: ServeRequest,
|
||||
page: Optional[int] = Query(default=1, description="current page"),
|
||||
page_size: Optional[int] = Query(default=20, description="page size"),
|
||||
page_size: Optional[int] = Query(default=10, description="page size"),
|
||||
service: Service = Depends(get_service),
|
||||
) -> Result[PaginationResult[ServerResponse]]:
|
||||
"""Query Conversation entities
|
||||
@@ -171,6 +177,37 @@ async def query_page(
|
||||
return Result.succ(service.get_list_by_page(request, page, page_size))
|
||||
|
||||
|
||||
@router.get(
|
||||
"/list",
|
||||
response_model=Result[List[ServerResponse]],
|
||||
dependencies=[Depends(check_api_key)],
|
||||
)
|
||||
async def list_latest_conv(
|
||||
user_name: str = None,
|
||||
user_id: str = None,
|
||||
sys_code: str = None,
|
||||
page: Optional[int] = Query(default=1, description="current page"),
|
||||
page_size: Optional[int] = Query(default=10, description="page size"),
|
||||
service: Service = Depends(get_service),
|
||||
) -> Result[List[ServerResponse]]:
|
||||
"""Return latest conversations"""
|
||||
request = ServeRequest(
|
||||
user_name=user_name or user_id,
|
||||
sys_code=sys_code,
|
||||
)
|
||||
return Result.succ(service.get_list_by_page(request, page, page_size).items)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/messages/history",
|
||||
response_model=Result[List[MessageVo]],
|
||||
dependencies=[Depends(check_api_key)],
|
||||
)
|
||||
async def get_history_messages(con_uid: str, service: Service = Depends(get_service)):
|
||||
"""Get the history messages of a conversation"""
|
||||
return Result.succ(service.get_history_messages(ServeRequest(conv_uid=con_uid)))
|
||||
|
||||
|
||||
def init_endpoints(system_app: SystemApp) -> None:
|
||||
"""Initialize the endpoints"""
|
||||
global global_system_app
|
||||
|
@@ -1,4 +1,6 @@
|
||||
# Define your Pydantic schemas here
|
||||
from typing import Any, Optional
|
||||
|
||||
from dbgpt._private.pydantic import BaseModel, Field
|
||||
|
||||
from ..config import SERVE_APP_NAME_HUMP
|
||||
@@ -7,15 +9,133 @@ from ..config import SERVE_APP_NAME_HUMP
|
||||
class ServeRequest(BaseModel):
|
||||
"""Conversation request model"""
|
||||
|
||||
# TODO define your own fields here
|
||||
|
||||
class Config:
|
||||
title = f"ServeRequest for {SERVE_APP_NAME_HUMP}"
|
||||
|
||||
# Just for query
|
||||
chat_mode: str = Field(
|
||||
default=None,
|
||||
description="The chat mode.",
|
||||
examples=[
|
||||
"chat_normal",
|
||||
],
|
||||
)
|
||||
conv_uid: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The conversation uid.",
|
||||
examples=[
|
||||
"5e7100bc-9017-11ee-9876-8fe019728d79",
|
||||
],
|
||||
)
|
||||
user_name: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The user name.",
|
||||
examples=[
|
||||
"zhangsan",
|
||||
],
|
||||
)
|
||||
sys_code: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The system code.",
|
||||
examples=[
|
||||
"dbgpt",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class ServerResponse(BaseModel):
|
||||
"""Conversation response model"""
|
||||
|
||||
# TODO define your own fields here
|
||||
class Config:
|
||||
title = f"ServerResponse for {SERVE_APP_NAME_HUMP}"
|
||||
|
||||
conv_uid: str = Field(
|
||||
...,
|
||||
description="The conversation uid.",
|
||||
examples=[
|
||||
"5e7100bc-9017-11ee-9876-8fe019728d79",
|
||||
],
|
||||
)
|
||||
user_input: str = Field(
|
||||
...,
|
||||
description="The user input, we return it as the summary the conversation.",
|
||||
examples=[
|
||||
"Hello world",
|
||||
],
|
||||
)
|
||||
chat_mode: str = Field(
|
||||
...,
|
||||
description="The chat mode.",
|
||||
examples=[
|
||||
"chat_normal",
|
||||
],
|
||||
)
|
||||
select_param: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The select param.",
|
||||
examples=[
|
||||
"my_knowledge_space_name",
|
||||
],
|
||||
)
|
||||
model_name: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The model name.",
|
||||
examples=[
|
||||
"vicuna-13b-v1.5",
|
||||
],
|
||||
)
|
||||
user_name: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The user name.",
|
||||
examples=[
|
||||
"zhangsan",
|
||||
],
|
||||
)
|
||||
sys_code: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The system code.",
|
||||
examples=[
|
||||
"dbgpt",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class MessageVo(BaseModel):
|
||||
role: str = Field(
|
||||
...,
|
||||
description="The role that sends out the current message.",
|
||||
examples=["human", "ai", "view"],
|
||||
)
|
||||
context: str = Field(
|
||||
...,
|
||||
description="The current message content.",
|
||||
examples=[
|
||||
"Hello",
|
||||
"Hi, how are you?",
|
||||
],
|
||||
)
|
||||
|
||||
order: int = Field(
|
||||
...,
|
||||
description="The current message order.",
|
||||
examples=[
|
||||
1,
|
||||
2,
|
||||
],
|
||||
)
|
||||
|
||||
time_stamp: Optional[Any] = Field(
|
||||
default=None,
|
||||
description="The current message time stamp.",
|
||||
examples=[
|
||||
"2023-01-07 09:00:00",
|
||||
],
|
||||
)
|
||||
|
||||
model_name: Optional[str] = Field(
|
||||
default=None,
|
||||
description="The model name.",
|
||||
examples=[
|
||||
"vicuna-13b-v1.5",
|
||||
],
|
||||
)
|
||||
|
Reference in New Issue
Block a user