import re from typing import Any, Literal, Union from openai._types import NOT_GIVEN, NotGiven from openai.resources.moderations import Moderations from openai.types import ModerationCreateResponse from openai.types.moderation import Categories, CategoryScores, Moderation from core.model_runtime.errors.invoke import InvokeAuthorizationError class MockModerationClass: def moderation_create(self: Moderations,*, input: Union[str, list[str]], model: Union[str, Literal["text-moderation-latest", "text-moderation-stable"]] | NotGiven = NOT_GIVEN, **kwargs: Any ) -> ModerationCreateResponse: if isinstance(input, str): input = [input] if not re.match(r'^(https?):\/\/[^\s\/$.?#].[^\s]*$', self._client.base_url.__str__()): raise InvokeAuthorizationError('Invalid base url') if len(self._client.api_key) < 18: raise InvokeAuthorizationError('Invalid API key') for text in input: result = [] if 'kill' in text: moderation_categories = { 'harassment': False, 'harassment/threatening': False, 'hate': False, 'hate/threatening': False, 'self-harm': False, 'self-harm/instructions': False, 'self-harm/intent': False, 'sexual': False, 'sexual/minors': False, 'violence': False, 'violence/graphic': False } moderation_categories_scores = { 'harassment': 1.0, 'harassment/threatening': 1.0, 'hate': 1.0, 'hate/threatening': 1.0, 'self-harm': 1.0, 'self-harm/instructions': 1.0, 'self-harm/intent': 1.0, 'sexual': 1.0, 'sexual/minors': 1.0, 'violence': 1.0, 'violence/graphic': 1.0 } result.append(Moderation( flagged=True, categories=Categories(**moderation_categories), category_scores=CategoryScores(**moderation_categories_scores) )) else: moderation_categories = { 'harassment': False, 'harassment/threatening': False, 'hate': False, 'hate/threatening': False, 'self-harm': False, 'self-harm/instructions': False, 'self-harm/intent': False, 'sexual': False, 'sexual/minors': False, 'violence': False, 'violence/graphic': False } moderation_categories_scores = { 'harassment': 0.0, 'harassment/threatening': 0.0, 'hate': 0.0, 'hate/threatening': 0.0, 'self-harm': 0.0, 'self-harm/instructions': 0.0, 'self-harm/intent': 0.0, 'sexual': 0.0, 'sexual/minors': 0.0, 'violence': 0.0, 'violence/graphic': 0.0 } result.append(Moderation( flagged=False, categories=Categories(**moderation_categories), category_scores=CategoryScores(**moderation_categories_scores) )) return ModerationCreateResponse( id='shiroii kuloko', model=model, results=result )