()
| 1335 | |
| 1336 | |
| 1337 | async def main(): |
| 1338 | global TARGET_MODEL, TARGET_LANGUAGE, BATCH_SIZE, MAX_REFLECTION_ROUNDS, OPTIMIZATION_THRESHOLD, JUDGE_MODE, PUSH_TIMEOUT |
| 1339 | |
| 1340 | parser = argparse.ArgumentParser(description='LeetCode Self-Reflection Agent') |
| 1341 | parser.add_argument("--config", default=os.path.join(root, "configs", "tool_calling_agent.py"), |
| 1342 | help="config file path") |
| 1343 | parser.add_argument("--benchmark", default="leetcode", help="benchmark name") |
| 1344 | parser.add_argument("--model", default=TARGET_MODEL, |
| 1345 | help=f"Model to use (default: {TARGET_MODEL})") |
| 1346 | parser.add_argument("--language", default=TARGET_LANGUAGE, choices=SUPPORTED_LANGUAGES, |
| 1347 | help=f"Programming language (default: {TARGET_LANGUAGE})") |
| 1348 | parser.add_argument("--max-rounds", type=int, default=MAX_REFLECTION_ROUNDS, |
| 1349 | help=f"Max reflection rounds (default: {MAX_REFLECTION_ROUNDS})") |
| 1350 | parser.add_argument("--batch-size", type=int, default=BATCH_SIZE, |
| 1351 | help=f"Batch size for evaluation (default: {BATCH_SIZE})") |
| 1352 | parser.add_argument("--opt-threshold", type=float, default=OPTIMIZATION_THRESHOLD, |
| 1353 | help=f"Performance optimization threshold in %% (default: {OPTIMIZATION_THRESHOLD}). " |
| 1354 | f"If runtime_beats or memory_beats exceeds this, stop optimizing. " |
| 1355 | f"Only used when --judge-mode=threshold.") |
| 1356 | parser.add_argument("--judge-mode", default=JUDGE_MODE, choices=["threshold", "llm"], |
| 1357 | help=f"Judge mode for stopping optimization (default: {JUDGE_MODE}). " |
| 1358 | f"'threshold': stop based on beats percentage threshold. " |
| 1359 | f"'llm': use LLM as a Judge to decide when to stop.") |
| 1360 | parser.add_argument("--push-timeout", type=float, default=PUSH_TIMEOUT, |
| 1361 | help=f"Push timeout in seconds (default: {PUSH_TIMEOUT}). " |
| 1362 | f"If queue is not full after this time, auto push.") |
| 1363 | parser.add_argument( |
| 1364 | '--cfg-options', |
| 1365 | nargs='+', |
| 1366 | action=DictAction, |
| 1367 | help='override settings') |
| 1368 | args = parser.parse_args() |
| 1369 | |
| 1370 | # 更新全局配置 |
| 1371 | TARGET_MODEL = args.model |
| 1372 | TARGET_LANGUAGE = args.language |
| 1373 | BATCH_SIZE = args.batch_size |
| 1374 | MAX_REFLECTION_ROUNDS = args.max_rounds |
| 1375 | OPTIMIZATION_THRESHOLD = args.opt_threshold |
| 1376 | JUDGE_MODE = args.judge_mode |
| 1377 | PUSH_TIMEOUT = args.push_timeout |
| 1378 | |
| 1379 | config.initialize(config_path=args.config, args=args) |
| 1380 | logger.initialize(config=config) |
| 1381 | |
| 1382 | logger.info("| 🧠 Initializing model manager...") |
| 1383 | if hasattr(model_manager, 'initialize'): |
| 1384 | await model_manager.initialize() |
| 1385 | |
| 1386 | benchmark_name = args.benchmark |
| 1387 | logger.info(f"| 🛠️ Initializing benchmark manager for {benchmark_name}...") |
| 1388 | |
| 1389 | await benchmark_manager.initialize(benchmark_names=[benchmark_name]) |
| 1390 | |
| 1391 | # 设置 benchmark 的语言 |
| 1392 | benchmark = await benchmark_manager.get(benchmark_name) |
| 1393 | if benchmark: |
| 1394 | benchmark.language = TARGET_LANGUAGE |
no test coverage detected