MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / main

Function main

experiments/token_cost/measure_day_token_usage.py:403–554  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

401
402
403def main() -> None:
404 parser = argparse.ArgumentParser(description="Measure real embedding / LLM token usage for one day's dataset pipeline.")
405 parser.add_argument("--date", default="2026-03-01", help="Target day in YYYY-MM-DD.")
406 parser.add_argument("--must-count", type=int, default=1, help="How many must_read papers to include per user.")
407 parser.add_argument("--high-count", type=int, default=1, help="How many high_relevant papers to include per user.")
408 parser.add_argument("--maybe-count", type=int, default=2, help="How many maybe_interested papers to include per user.")
409 parser.add_argument("--edge-count", type=int, default=1, help="How many edge_relevant papers to include per user.")
410 parser.add_argument("--pdf-mode", default=os.environ.get("READING_REPORT_PDF_MODE", "always"), help="Reading report PDF mode: always / smart / off.")
411 args = parser.parse_args()
412
413 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
414 measurement_dir = MEASUREMENT_ROOT / f"measure_{args.date.replace('-', '')}_{timestamp}"
415 measurement_dir.mkdir(parents=True, exist_ok=True)
416
417 tracker = TokenTracker()
418 original_init, original_get_client = _patch_token_usage(tracker)
419 _reset_embedding_runtime_cache(measurement_dir)
420 os.environ["READING_REPORT_PDF_MODE"] = str(args.pdf_mode).strip()
421
422 try:
423 papers = _fetch_papers_for_exact_day(args.date)
424 print(f"[Collected] {len(papers)} unique papers for {args.date}")
425
426 with tracker.stage("paper_embedding"):
427 prepared_papers = daily_push_agent.prepare_paper_features(copy.deepcopy(papers))
428
429 profiles = _load_profiles()
430 roles = _load_roles()
431 weights = daily_push_agent.load_scoring_weights()
432 report_cache = _build_existing_report_cache()
433
434 per_user_rows: List[Dict[str, Any]] = []
435
436 for role_name, role_data in sorted(roles.items(), key=lambda item: item[0]):
437 user_id = str(role_data.get("user_id") or "")
438 profile = profiles.get(user_id)
439 if not profile:
440 continue
441
442 scored = daily_push_agent.sort_and_categorize(copy.deepcopy(prepared_papers), profile, weights)
443 selected = _simulate_selection(
444 scored,
445 must_count=args.must_count,
446 high_count=args.high_count,
447 maybe_count=args.maybe_count,
448 edge_count=args.edge_count,
449 )
450
451 if not selected:
452 per_user_rows.append(
453 {
454 "role_name": role_name,
455 "user_id": user_id,
456 "paper_pool_count": len(scored),
457 "selected_reports": 0,
458 "generated_reports": 0,
459 "reused_reports": 0,
460 "must_read_selected": 0,

Callers 1

Calls 15

stageMethod · 0.95
TokenTrackerClass · 0.85
_patch_token_usageFunction · 0.85
_load_profilesFunction · 0.85
_load_rolesFunction · 0.85
_simulate_selectionFunction · 0.85
_build_summary_tablesFunction · 0.85
_write_csvFunction · 0.85
_to_markdownFunction · 0.85

Tested by

no test coverage detected