in genai-for-marketing/backend_apis/app/main.py [0:0]
def create_campaign(user_id: str,data: CampaignCreateRequest
) -> CampaignCreateResponse:
"""Campaing Creation and content generation with PaLM API
Parameters:
user_id: str
campaign_name: str
theme: str
brief: dict = {
"gender_select_theme":"Male",
"age_select_theme":"20-30",
"objective_select_theme":"Drive Awareness",
"competitor_select_theme":"Fashion Forward"
}
Returns:
id (str): Response of generated Campaign ID
campaign_name:str
workspace_asset: dict
"""
gender_select_theme = data.brief.gender_select_theme
age_select_theme = data.brief.age_select_theme
objective_select_theme = data.brief.objective_select_theme
competitor_select_theme = data.brief.competitor_select_theme
async def generate_campaign() -> tuple:
return await asyncio.gather(
utils_prompt.async_predict_text_gemini(
BRAND_STATEMENT_PROMPT_TEMPLATE.format(
gender_select_theme,
age_select_theme,
objective_select_theme,
competitor_select_theme,
BRAND_OVERVIEW)
),
utils_prompt.async_predict_text_gemini(
PRIMARY_MSG_PROMPT_TEMPLATE.format(
gender_select_theme,
age_select_theme,
objective_select_theme,
competitor_select_theme,
BRAND_OVERVIEW)
),
utils_prompt.async_predict_text_gemini(
COMMS_CHANNEL_PROMPT_TEMPLATE.format(
gender_select_theme,
age_select_theme,
objective_select_theme,
competitor_select_theme)
))
try:
generated_tuple = asyncio.run(generate_campaign())
print(generated_tuple)
brand_statement = generated_tuple[0]
primary_message = generated_tuple[1]
comm_channels = generated_tuple[2]
brief_scenario = (
f'Targeting gender: {gender_select_theme}, '
f'Age group: {age_select_theme}, '
f'Campaign objective: {objective_select_theme}, '
f'Competitor: {competitor_select_theme}')
workspace_asset = post_brief_create_upload(BriefCreateRequest(
campaign_name=data.campaign_name,
business_name=BUSINESS_NAME,
brief_scenario=brief_scenario,
brand_statement=brand_statement,
primary_message=primary_message,
comm_channels=comm_channels
))
except Exception as e:
print("Failed in Creating Content Asset")
raise HTTPException(status_code=400, detail=str(e))
else:
campaign = Campaign(
name=data.campaign_name,
theme=data.theme,
brief=data.brief,
workspace_assets=workspace_asset
)
update_time,campaign_id = utils_firebase.create_campaign(
user_id=user_id,
campaign=campaign
)
print(update_time,campaign_id)
return CampaignCreateResponse(
id=campaign_id,
campaign_name=data.campaign_name,
theme=data.theme,
workspace_assets=workspace_asset
)