Spaces:
Running
Running
File size: 1,881 Bytes
d68e65a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
from fastapi.responses import JSONResponse
from google import genai
# from app.models.moderation_data import ModerationData
from app.models.moderation_response import ModerationResponse
from app.models.schemas import ModerationRequest
from app.models.standard_response import StandardResponse
from app.models.schemas import ModerationData
def to_json_response(data: StandardResponse) -> JSONResponse:
return JSONResponse(content=data.model_dump(), status_code=data.status)
def moderate_content(request: ModerationRequest) -> ModerationResponse:
flagged_for = {}
scores = {}
corrected_content = None
original_content = request.content
if "misinfo" in request.checkFor:
correct_info = request.identify_misinfo()
if correct_info.startswith("False"):
flagged_for["misinfo"] = 1
corrected_content = str(correct_info[6:])
request.correct_typos()
result = request.classify_moderation()
result["misinfo"] = flagged_for.get("misinfo", 0)
for category in request.checkFor:
scores[category] = result[category]
if result[category] > request.threshold:
flagged_for[category] = result[category]
cleaned_content = request.content
if len(flagged_for) > 0:
if list(flagged_for.keys()) == ["misinfo"]:
# Do nothing
pass
else:
gemini_response = request.cleanse_content()
cleaned_content = gemini_response
payload = ModerationData(
flagged_for=flagged_for,
cleaned_content=cleaned_content,
corrected_content=corrected_content,
original_content=original_content,
scores=scores,
)
response = ModerationResponse(
error=False, title="Cleaned", status=200, payload=payload
)
return response
|