Underground-Digital/Workflow-Engine
0
1import re2from typing import Any, Literal, Union3 4from openai._types import NOT_GIVEN, NotGiven5from openai.resources.moderations import Moderations6from openai.types import ModerationCreateResponse7from openai.types.moderation import Categories, CategoryScores, Moderation8 9from core.model_runtime.errors.invoke import InvokeAuthorizationError10 11 12class MockModerationClass:13 def moderation_create(14 self: Moderations,15 *,16 input: Union[str, list[str]],17 model: Union[str, Literal["text-moderation-latest", "text-moderation-stable"]] | NotGiven = NOT_GIVEN,18 **kwargs: Any,19 ) -> ModerationCreateResponse:20 if isinstance(input, str):21 input = [input]22 23 if not re.match(r"^(https?):\/\/[^\s\/$.?#].[^\s]*$", str(self._client.base_url)):24 raise InvokeAuthorizationError("Invalid base url")25 26 if len(self._client.api_key) < 18:27 raise InvokeAuthorizationError("Invalid API key")28 29 for text in input:30 result = []31 if "kill" in text:32 moderation_categories = {33 "harassment": False,34 "harassment/threatening": False,35 "hate": False,36 "hate/threatening": False,37 "self-harm": False,38 "self-harm/instructions": False,39 "self-harm/intent": False,40 "sexual": False,41 "sexual/minors": False,42 "violence": False,43 "violence/graphic": False,44 "illicit": False,45 "illicit/violent": False,46 }47 moderation_categories_scores = {48 "harassment": 1.0,49 "harassment/threatening": 1.0,50 "hate": 1.0,51 "hate/threatening": 1.0,52 "self-harm": 1.0,53 "self-harm/instructions": 1.0,54 "self-harm/intent": 1.0,55 "sexual": 1.0,56 "sexual/minors": 1.0,57 "violence": 1.0,58 "violence/graphic": 1.0,59 "illicit": 1.0,60 "illicit/violent": 1.0,61 }62 category_applied_input_types = {63 "sexual": ["text", "image"],64 "hate": ["text"],65 "harassment": ["text"],66 "self-harm": ["text", "image"],67 "sexual/minors": ["text"],68 "hate/threatening": ["text"],69 "violence/graphic": ["text", "image"],70 "self-harm/intent": ["text", "image"],71 "self-harm/instructions": ["text", "image"],72 "harassment/threatening": ["text"],73 "violence": ["text", "image"],74 "illicit": ["text"],75 "illicit/violent": ["text"],76 }77 result.append(78 Moderation(79 flagged=True,80 categories=Categories(**moderation_categories),81 category_scores=CategoryScores(**moderation_categories_scores),82 category_applied_input_types=category_applied_input_types,83 )84 )85 else:86 moderation_categories = {87 "harassment": False,88 "harassment/threatening": False,89 "hate": False,90 "hate/threatening": False,91 "self-harm": False,92 "self-harm/instructions": False,93 "self-harm/intent": False,94 "sexual": False,95 "sexual/minors": False,96 "violence": False,97 "violence/graphic": False,98 "illicit": False,99 "illicit/violent": False,100 }101 moderation_categories_scores = {102 "harassment": 0.0,103 "harassment/threatening": 0.0,104 "hate": 0.0,105 "hate/threatening": 0.0,106 "self-harm": 0.0,107 "self-harm/instructions": 0.0,108 "self-harm/intent": 0.0,109 "sexual": 0.0,110 "sexual/minors": 0.0,111 "violence": 0.0,112 "violence/graphic": 0.0,113 "illicit": 0.0,114 "illicit/violent": 0.0,115 }116 category_applied_input_types = {117 "sexual": ["text", "image"],118 "hate": ["text"],119 "harassment": ["text"],120 "self-harm": ["text", "image"],121 "sexual/minors": ["text"],122 "hate/threatening": ["text"],123 "violence/graphic": ["text", "image"],124 "self-harm/intent": ["text", "image"],125 "self-harm/instructions": ["text", "image"],126 "harassment/threatening": ["text"],127 "violence": ["text", "image"],128 "illicit": ["text"],129 "illicit/violent": ["text"],130 }131 result.append(132 Moderation(133 flagged=False,134 categories=Categories(**moderation_categories),135 category_scores=CategoryScores(**moderation_categories_scores),136 category_applied_input_types=category_applied_input_types,137 )138 )139 140 return ModerationCreateResponse(id="shiroii kuloko", model=model, results=result)141 