feat: The demonstration page supports modifying dialogue summaries

This commit is contained in:
shaohuzhang1 2025-02-21 10:56:37 +08:00
parent bb557fd187
commit 752e1ebc53
6 changed files with 67 additions and 3 deletions

View File

@ -66,6 +66,10 @@ def valid_model_params_setting(model_id, model_params_setting):
credential.get_model_params_setting_form(model.model_name).valid_form(model_params_setting)
class ReAbstractInstanceSerializers(serializers.Serializer):
abstract = serializers.CharField(required=True, error_messages=ErrMessage.char(_("abstract")))
class ChatSerializers(serializers.Serializer):
class Operate(serializers.Serializer):
chat_id = serializers.UUIDField(required=True, error_messages=ErrMessage.uuid(_("Conversation ID")))
@ -78,6 +82,15 @@ class ChatSerializers(serializers.Serializer):
is_deleted=True)
return True
def re_abstract(self, instance, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
ReAbstractInstanceSerializers(data=instance).is_valid(raise_exception=True)
QuerySet(Chat).filter(id=self.data.get('chat_id'), application_id=self.data.get('application_id')).update(
abstract=instance.get('abstract'))
return True
def delete(self, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)

View File

@ -23,6 +23,34 @@ class ChatClientHistoryApi(ApiMixin):
description=_('Application ID'))
]
class Operate(ApiMixin):
@staticmethod
def get_request_params_api():
return [openapi.Parameter(name='application_id',
in_=openapi.IN_PATH,
type=openapi.TYPE_STRING,
required=True,
description=_('Application ID')),
openapi.Parameter(name='chat_id',
in_=openapi.IN_PATH,
type=openapi.TYPE_STRING,
required=True,
description=_('Conversation ID')),
]
class ReAbstract(ApiMixin):
@staticmethod
def get_request_body_api():
return openapi.Schema(
type=openapi.TYPE_OBJECT,
required=['abstract'],
properties={
'abstract': openapi.Schema(type=openapi.TYPE_STRING, title=_("abstract"),
description=_("abstract"))
}
)
class OpenAIChatApi(ApiMixin):
@staticmethod

View File

@ -150,7 +150,7 @@ class ChatView(APIView):
operation_id=_("Get the conversation list"),
manual_parameters=ChatApi.get_request_params_api(),
responses=result.get_api_array_response(ChatApi.get_response_body_api()),
tags=[_("Application/Conversation Log")]
tags=[_("Application/Conversation Log")]
)
@has_permissions(
ViewPermission([RoleConstants.ADMIN, RoleConstants.USER, RoleConstants.APPLICATION_KEY],
@ -222,6 +222,23 @@ class ChatView(APIView):
data={'application_id': application_id, 'user_id': request.user.id,
'chat_id': chat_id}).logic_delete())
@action(methods=['PUT'], detail=False)
@swagger_auto_schema(operation_summary=_("Client modifies dialogue summary"),
operation_id=_("Client modifies dialogue summary"),
request_body=ChatClientHistoryApi.Operate.ReAbstract.get_request_body_api(),
tags=[_("Application/Conversation Log")])
@has_permissions(ViewPermission(
[RoleConstants.APPLICATION_ACCESS_TOKEN],
[lambda r, keywords: Permission(group=Group.APPLICATION, operate=Operate.USE,
dynamic_tag=keywords.get('application_id'))],
compare=CompareConstants.AND),
compare=CompareConstants.AND)
def put(self, request: Request, application_id: str, chat_id: str):
return result.success(
ChatSerializers.Operate(
data={'application_id': application_id, 'user_id': request.user.id,
'chat_id': chat_id}).re_abstract(request.data))
class Page(APIView):
authentication_classes = [TokenAuth]

View File

@ -6753,3 +6753,5 @@ msgstr ""
msgid "Image download failed, check network"
msgstr ""
msgid "Client modifies dialogue summary"
msgstr ""

View File

@ -6892,4 +6892,5 @@ msgstr "超出许可证使用限制。"
msgid "Image download failed, check network"
msgstr "图片下载失败,请检查网络"
msgid "Client modifies dialogue summary"
msgstr "客户端修改对话摘要"

View File

@ -6902,4 +6902,7 @@ msgid "License usage limit exceeded."
msgstr "超出許可證使用限制。"
msgid "Image download failed, check network"
msgstr "圖片下載失敗,檢查網絡"
msgstr "圖片下載失敗,檢查網絡"
msgid "Client modifies dialogue summary"
msgstr "用戶端修改對話摘要"