cli.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """命令行入口:python -m creation_knowledge.cli run --urls <...>"""
  2. from __future__ import annotations
  3. import argparse
  4. import json
  5. from creation_knowledge.pipeline import run_pipeline
  6. def build_parser() -> argparse.ArgumentParser:
  7. parser = argparse.ArgumentParser(prog="creation_knowledge")
  8. sub = parser.add_subparsers(dest="command", required=True)
  9. run = sub.add_parser("run", help="跑流水线:拉取->提取->筛选->拆分->解构->组装[->入库]")
  10. run.add_argument("--urls", nargs="+", required=True, help="帖子链接或 content_id")
  11. run.add_argument("--env-file", default=".env", help="环境变量文件路径")
  12. run.add_argument("--ingest", action="store_true",
  13. help="开启真实入库(默认关闭,只组装+存库)")
  14. return parser
  15. def main() -> int:
  16. args = build_parser().parse_args()
  17. if args.command == "run":
  18. results = run_pipeline(
  19. args.urls,
  20. env_file=args.env_file,
  21. ingest_enabled=True if args.ingest else False,
  22. )
  23. for r in results:
  24. print(json.dumps(r, ensure_ascii=False))
  25. ok = sum(1 for r in results if r["status"] == "done")
  26. rej = sum(1 for r in results if r["status"] == "rejected")
  27. fail = len(results) - ok - rej
  28. print(f"\n汇总:done={ok} rejected={rej} failed={fail} / 共 {len(results)}")
  29. return 0
  30. if __name__ == "__main__":
  31. raise SystemExit(main())