feat: implement t-604 keyword prompt moderation
This commit is contained in:
@@ -29,6 +29,8 @@ from apps.billing.services import (
|
||||
mark_call_success,
|
||||
)
|
||||
|
||||
from apps.moderation.services import moderate_prompt
|
||||
|
||||
from .errors import api_error
|
||||
from .storage import save_generated_image
|
||||
|
||||
@@ -60,6 +62,7 @@ def generate_title_response(*, user, api_key, request_data: Mapping[str, Any]) -
|
||||
alias = request_data.get("model") or None
|
||||
resolution = normalize_resolution(request_data.get("resolution") or "1K") or "1K"
|
||||
parameters = dict(request_data.get("parameters") or {})
|
||||
moderate_prompt_or_raise(user=user, api_key=api_key, prompt=prompt)
|
||||
image_input = load_image_input(request_data)
|
||||
|
||||
model_alias = resolve_model_alias_or_raise(CallRecord.OperationType.TITLE, alias)
|
||||
@@ -134,6 +137,7 @@ def generate_image_response(*, user, api_key, request, request_data: Mapping[str
|
||||
resolution = normalize_resolution(request_data.get("resolution") or "1K") or "1K"
|
||||
aspect_ratio = request_data.get("aspect_ratio") or "1:1"
|
||||
parameters = dict(request_data.get("parameters") or {})
|
||||
moderate_prompt_or_raise(user=user, api_key=api_key, prompt=prompt)
|
||||
image_input = load_image_input(request_data)
|
||||
|
||||
model_alias = resolve_model_alias_or_raise(CallRecord.OperationType.IMAGE, alias)
|
||||
@@ -202,6 +206,12 @@ def generate_image_response(*, user, api_key, request, request_data: Mapping[str
|
||||
}
|
||||
|
||||
|
||||
def moderate_prompt_or_raise(*, user, api_key, prompt: str) -> None:
|
||||
outcome = moderate_prompt(user=user, api_key=api_key, prompt=prompt)
|
||||
if outcome.blocked:
|
||||
raise ApiRequestError("content_blocked", "输入内容未通过安全审核", status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
def resolve_model_alias_or_raise(operation_type: str, alias: str | None):
|
||||
try:
|
||||
return resolve_model_alias(operation_type, alias)
|
||||
|
||||
Reference in New Issue
Block a user