userIdc2024 commited on
Commit
b4c756a
·
verified ·
1 Parent(s): 76163e3

Update backend/main.py

Browse files
Files changed (1) hide show
  1. backend/main.py +25 -18
backend/main.py CHANGED
@@ -33,10 +33,15 @@ class ResearchRequest(BaseModel):
33
  method: Literal["gpt", "claude"]
34
 
35
 
36
- class ResearchResponse(BaseModel):
 
37
  output: list[ImageAdEssentials]
38
 
39
 
 
 
 
 
40
  # --- Endpoints ---
41
 
42
  @app.get("/api/target-audiences")
@@ -48,25 +53,27 @@ def get_target_audiences():
48
  @app.post("/api/research", response_model=ResearchResponse)
49
  def run_research(req: ResearchRequest):
50
  """
51
- Run the researcher using the selected method (GPT or Claude).
52
- Returns a list of psychology triggers with angles and concepts.
53
  """
54
  try:
55
- # Join multiple audiences into a comma-separated string for the prompt
56
- audience_str = ", ".join(req.target_audience)
57
-
58
- if req.method == "gpt":
59
- result = researcher_gpt(
60
- audience_str, req.product_category, req.product_description
61
- )
62
- elif req.method == "claude":
63
- result = researcher_claude(
64
- audience_str, req.product_category, req.product_description
65
- )
66
- else:
67
- raise HTTPException(status_code=400, detail="Invalid method. Use 'gpt' or 'claude'.")
68
-
69
- return ResearchResponse(output=result)
 
 
70
 
71
  except ValueError as e:
72
  raise HTTPException(status_code=500, detail=str(e))
 
33
  method: Literal["gpt", "claude"]
34
 
35
 
36
+ class AudienceResult(BaseModel):
37
+ target_audience: str
38
  output: list[ImageAdEssentials]
39
 
40
 
41
+ class ResearchResponse(BaseModel):
42
+ results: list[AudienceResult]
43
+
44
+
45
  # --- Endpoints ---
46
 
47
  @app.get("/api/target-audiences")
 
53
  @app.post("/api/research", response_model=ResearchResponse)
54
  def run_research(req: ResearchRequest):
55
  """
56
+ Run the researcher for each target audience separately.
57
+ Returns grouped results one set of triggers per audience.
58
  """
59
  try:
60
+ all_results = []
61
+
62
+ for audience in req.target_audience:
63
+ if req.method == "gpt":
64
+ result = researcher_gpt(
65
+ audience, req.product_category, req.product_description
66
+ )
67
+ elif req.method == "claude":
68
+ result = researcher_claude(
69
+ audience, req.product_category, req.product_description
70
+ )
71
+ else:
72
+ raise HTTPException(status_code=400, detail="Invalid method. Use 'gpt' or 'claude'.")
73
+
74
+ all_results.append(AudienceResult(target_audience=audience, output=result))
75
+
76
+ return ResearchResponse(results=all_results)
77
 
78
  except ValueError as e:
79
  raise HTTPException(status_code=500, detail=str(e))