chore: restructured project
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import contextlib
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
from celery import shared_task
|
||||
|
||||
from apps.campaign.models import CampaignReport
|
||||
from integrations.yandexai.generators.ad_text import YandexAIAdTextGenerator
|
||||
from integrations.yandexai.moderation import YandexAIModerator
|
||||
|
||||
|
||||
@shared_task
|
||||
def generate_ad_text_task(advertiser_name: str, ad_title: str) -> str | None:
|
||||
return YandexAIAdTextGenerator().generate_ad_text(
|
||||
advertiser_name, ad_title
|
||||
)
|
||||
|
||||
|
||||
@shared_task(ignore_result=True)
|
||||
def moderate_campaign_task(
|
||||
report_id: int, ad_title: str, ad_text: str
|
||||
) -> None:
|
||||
with ThreadPoolExecutor(max_workers=2) as executor:
|
||||
future_text = executor.submit(
|
||||
YandexAIModerator().get_moderation_verdict, ad_text
|
||||
)
|
||||
future_title = executor.submit(
|
||||
YandexAIModerator().get_moderation_verdict, ad_title
|
||||
)
|
||||
|
||||
ad_text_verdict = future_text.result()
|
||||
ad_title_verdict = future_title.result()
|
||||
|
||||
overall_verdict = ad_title_verdict or ad_text_verdict
|
||||
|
||||
with contextlib.suppress(CampaignReport.DoesNotExist):
|
||||
report = CampaignReport.objects.get(id=report_id)
|
||||
report.flagged_by_llm = overall_verdict
|
||||
report.save()
|
||||
Reference in New Issue
Block a user