MCPcopy
hub / github.com/1Panel-dev/MaxKB / ChatSerializers

Class ChatSerializers

apps/chat/serializers/chat.py:285–528  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

283
284
285class ChatSerializers(serializers.Serializer):
286 chat_id = serializers.UUIDField(required=True, label=_("Conversation ID"))
287 chat_user_id = serializers.CharField(required=True, label=_("Client id"))
288 chat_user_type = serializers.CharField(required=True, label=_("Client Type"))
289 application_id = serializers.UUIDField(required=True, allow_null=True,
290 label=_("Application ID"))
291 debug = serializers.BooleanField(required=False, label=_("Debug"))
292 ip_address = serializers.CharField(required=False, label=_("IP Address"), allow_null=True, allow_blank=True)
293 source = serializers.JSONField(required=False, label=_("Source"))
294
295 def is_valid_application_workflow(self, *, raise_exception=False):
296 self.is_valid_intraday_access_num()
297
298 def is_valid_chat_id(self, chat_info: ChatInfo):
299 if self.data.get('application_id') is not None and self.data.get('application_id') != str(
300 chat_info.application_id):
301 raise ChatException(500, _("Conversation does not exist"))
302
303 def is_valid_intraday_access_num(self):
304 if not self.data.get('debug') and [ChatUserType.ANONYMOUS_USER.value,
305 ChatUserType.CHAT_USER.value].__contains__(
306 self.data.get('chat_user_type')):
307 access_client = QuerySet(ApplicationChatUserStats).filter(chat_user_id=self.data.get('chat_user_id'),
308 application_id=self.data.get(
309 'application_id')).first()
310 if access_client is None:
311 access_client = ApplicationChatUserStats(chat_user_id=self.data.get('chat_user_id'),
312 chat_user_type=self.data.get('chat_user_type'),
313 application_id=self.data.get('application_id'),
314 access_num=0,
315 intraday_access_num=0)
316 access_client.save()
317
318 application_access_token = QuerySet(ApplicationAccessToken).filter(
319 application_id=self.data.get('application_id')).first()
320 if application_access_token.access_num <= access_client.intraday_access_num:
321 raise AppChatNumOutOfBoundsFailed(1002, _("The number of visits exceeds today's visits"))
322
323 def is_valid_application_simple(self, *, chat_info: ChatInfo, raise_exception=False):
324 self.is_valid_intraday_access_num()
325 model_id = chat_info.application.model_id
326 if model_id is None:
327 return chat_info
328 model = QuerySet(Model).filter(id=model_id).first()
329 if model is None:
330 return chat_info
331 if model.status == Status.ERROR:
332 raise ChatException(500, _("The current model is not available"))
333 if model.status == Status.DOWNLOAD:
334 raise ChatException(500, _("The model is downloading, please try again later"))
335 return chat_info
336
337 def chat_simple(self, chat_info: ChatInfo, instance, base_to_response):
338 message = instance.get('message')
339 re_chat = instance.get('re_chat')
340 stream = instance.get('stream')
341 chat_user_id = self.data.get('chat_user_id')
342 chat_user_type = self.data.get('chat_user_type')

Callers 7

postMethod · 0.90
call_toolMethod · 0.90
executeMethod · 0.90
executeMethod · 0.90
chatMethod · 0.85
generate_chatMethod · 0.85
chatMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected