fffffwl commited on
Commit
d3512ba
·
1 Parent(s): 23d25ab

optimized prompt

Browse files
Files changed (1) hide show
  1. app.py +19 -5
app.py CHANGED
@@ -653,18 +653,32 @@ def run_query(requirements: str):
653
  else:
654
  scored, _ = _score_items(filtered, keyword, debug=False)
655
  if scored:
656
- scored.sort(key=lambda t: t[1], reverse=True)
657
- filtered = [c for c, _, _ in scored]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
658
  # If MCP returned items but filtering removed all (e.g., many items missing prize), show unfiltered
659
  if not filtered and items:
660
  filtered = items
661
  status = f"{status} (no matches; showing unfiltered)"
662
- plan_text, _ = _generate_plan_fixed(scored, keyword, days_ahead, debug=False) if ok and scored else ("", "")
663
 
664
  # Build a map from id to (score, reason) for star display
665
  id_to_score_reason: dict[str, tuple[float, str]] = {}
666
- if ok:
667
- for c, s, r in (scored if 'scored' in locals() else []):
668
  id_to_score_reason[c.id] = (s, r)
669
 
670
  rows = []
 
653
  else:
654
  scored, _ = _score_items(filtered, keyword, debug=False)
655
  if scored:
656
+ # Blend LLM relevance with normalized prize to unify ranking
657
+ # prize_norm in [0,1] across the current candidate set
658
+ prizes = [c.prize for c, _, _ in scored]
659
+ pmin = min(prizes) if prizes else 0.0
660
+ pmax = max(prizes) if prizes else 0.0
661
+ denom = (pmax - pmin) if (pmax - pmin) > 0 else 1.0
662
+ def prize_norm(v: float) -> float:
663
+ return max(0.0, min(1.0, (v - pmin) / denom))
664
+
665
+ alpha = 0.75 # relevance weight; 25% weight to prize
666
+ ranked = []
667
+ for c, s, r in scored:
668
+ cs = alpha * float(s) + (1 - alpha) * prize_norm(c.prize)
669
+ ranked.append((c, cs, r))
670
+ ranked.sort(key=lambda t: t[1], reverse=True)
671
+ filtered = [c for c, _, _ in ranked]
672
  # If MCP returned items but filtering removed all (e.g., many items missing prize), show unfiltered
673
  if not filtered and items:
674
  filtered = items
675
  status = f"{status} (no matches; showing unfiltered)"
676
+ plan_text, _ = _generate_plan_fixed(ranked, keyword, days_ahead, debug=False) if ok and 'ranked' in locals() and ranked else ("", "")
677
 
678
  # Build a map from id to (score, reason) for star display
679
  id_to_score_reason: dict[str, tuple[float, str]] = {}
680
+ if ok and 'ranked' in locals():
681
+ for c, s, r in ranked:
682
  id_to_score_reason[c.id] = (s, r)
683
 
684
  rows = []