mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-28 05:42:51 +00:00
feat: 对话增加历史记录 API
This commit is contained in:
parent
eb5a5abe4b
commit
dcc7d082af
|
|
@ -56,6 +56,18 @@ class ChatSerializers(serializers.Serializer):
|
|||
QuerySet(Chat).filter(id=self.data.get('chat_id'), application_id=self.data.get('application_id')).delete()
|
||||
return True
|
||||
|
||||
class ClientChatHistory(serializers.Serializer):
|
||||
application_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("应用id"))
|
||||
client_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("客户端id"))
|
||||
|
||||
def page(self, current_page: int, page_size: int, with_valid=True):
|
||||
if with_valid:
|
||||
self.is_valid(raise_exception=True)
|
||||
queryset = QuerySet(Chat).filter(client_id=self.data.get('client_id'),
|
||||
application_id=self.data.get('application_id'))
|
||||
queryset = queryset.order_by('-create_time')
|
||||
return page_search(current_page, page_size, queryset, lambda row: ChatSerializerModel(row).data)
|
||||
|
||||
class Query(serializers.Serializer):
|
||||
abstract = serializers.CharField(required=False, error_messages=ErrMessage.char("摘要"))
|
||||
history_day = serializers.IntegerField(required=True, error_messages=ErrMessage.integer("历史天数"))
|
||||
|
|
@ -282,6 +294,12 @@ class ChatRecordSerializerModel(serializers.ModelSerializer):
|
|||
'create_time', 'update_time']
|
||||
|
||||
|
||||
class ChatSerializerModel(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Chat
|
||||
fields = ['id', 'application_id', 'abstract', 'client_id']
|
||||
|
||||
|
||||
class ChatRecordSerializer(serializers.Serializer):
|
||||
class Operate(serializers.Serializer):
|
||||
chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid("对话id"))
|
||||
|
|
|
|||
|
|
@ -12,6 +12,17 @@ from application.swagger_api.application_api import ApplicationApi
|
|||
from common.mixins.api_mixin import ApiMixin
|
||||
|
||||
|
||||
class ChatClientHistoryApi(ApiMixin):
|
||||
@staticmethod
|
||||
def get_request_params_api():
|
||||
return [openapi.Parameter(name='application_id',
|
||||
in_=openapi.IN_PATH,
|
||||
type=openapi.TYPE_STRING,
|
||||
required=True,
|
||||
description='应用id')
|
||||
]
|
||||
|
||||
|
||||
class ChatApi(ApiMixin):
|
||||
@staticmethod
|
||||
def get_request_body_api():
|
||||
|
|
@ -80,7 +91,7 @@ class ChatApi(ApiMixin):
|
|||
'problem_optimization'],
|
||||
properties={
|
||||
'id': openapi.Schema(type=openapi.TYPE_STRING, title="应用id",
|
||||
description="应用id,修改的时候传,创建的时候不传"),
|
||||
description="应用id,修改的时候传,创建的时候不传"),
|
||||
'model_id': openapi.Schema(type=openapi.TYPE_STRING, title="模型id", description="模型id"),
|
||||
'dataset_id_list': openapi.Schema(type=openapi.TYPE_ARRAY,
|
||||
items=openapi.Schema(type=openapi.TYPE_STRING),
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ urlpatterns = [
|
|||
path('application/<int:current_page>/<int:page_size>', views.Application.Page.as_view(), name='application_page'),
|
||||
path('application/<str:application_id>/chat/open', views.ChatView.Open.as_view()),
|
||||
path("application/chat/open", views.ChatView.OpenTemp.as_view()),
|
||||
path("application/<str:application_id>/chat/client/<int:current_page>/<int:page_size>",
|
||||
views.ChatView.ClientChatHistoryPage.as_view()),
|
||||
path('application/<str:application_id>/chat/export', views.ChatView.Export.as_view(), name='export'),
|
||||
path('application/<str:application_id>/chat', views.ChatView.as_view(), name='chats'),
|
||||
path('application/<str:application_id>/chat/<int:current_page>/<int:page_size>', views.ChatView.Page.as_view()),
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ from rest_framework.views import APIView
|
|||
|
||||
from application.serializers.chat_message_serializers import ChatMessageSerializer
|
||||
from application.serializers.chat_serializers import ChatSerializers, ChatRecordSerializer
|
||||
from application.swagger_api.chat_api import ChatApi, VoteApi, ChatRecordApi, ImproveApi, ChatRecordImproveApi
|
||||
from application.swagger_api.chat_api import ChatApi, VoteApi, ChatRecordApi, ImproveApi, ChatRecordImproveApi, \
|
||||
ChatClientHistoryApi
|
||||
from common.auth import TokenAuth, has_permissions
|
||||
from common.constants.authentication_type import AuthenticationType
|
||||
from common.constants.permission_constants import Permission, Group, Operate, \
|
||||
|
|
@ -137,6 +138,28 @@ class ChatView(APIView):
|
|||
data={'application_id': application_id, 'user_id': request.user.id,
|
||||
'chat_id': chat_id}).delete())
|
||||
|
||||
class ClientChatHistoryPage(APIView):
|
||||
authentication_classes = [TokenAuth]
|
||||
|
||||
@action(methods=['GET'], detail=False)
|
||||
@swagger_auto_schema(operation_summary="分页获取客户端对话列表",
|
||||
operation_id="分页获取客户端对话列表",
|
||||
manual_parameters=result.get_page_request_params(
|
||||
ChatClientHistoryApi.get_request_params_api()),
|
||||
responses=result.get_page_api_response(ChatApi.get_response_body_api()),
|
||||
tags=["应用/对话日志"]
|
||||
)
|
||||
@has_permissions(
|
||||
ViewPermission([RoleConstants.APPLICATION_ACCESS_TOKEN],
|
||||
[lambda r, keywords: Permission(group=Group.APPLICATION, operate=Operate.USE,
|
||||
dynamic_tag=keywords.get('application_id'))])
|
||||
)
|
||||
def get(self, request: Request, application_id: str, current_page: int, page_size: int):
|
||||
return result.success(ChatSerializers.ClientChatHistory(
|
||||
data={'client_id': request.auth.client_id, 'application_id': application_id}).page(
|
||||
current_page=current_page,
|
||||
page_size=page_size))
|
||||
|
||||
class Page(APIView):
|
||||
authentication_classes = [TokenAuth]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue