from __future__ import annotations import argparse import json import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) def main() -> None: from plant.training import build_plant_training_plan, write_llamafactory_dataset_info parser = argparse.ArgumentParser(description="Create a Plant Discovery training plan.") parser.add_argument("--config", default="plant/models.yaml") parser.add_argument("--dataset", default="data/plant_training.jsonl") parser.add_argument("--output-dir", default="checkpoints/plant_lora") parser.add_argument("--adapter-repo", default="your-username/minicpm-v46-plant-lora") parser.add_argument("--corrected-examples", type=int, default=0) parser.add_argument( "--write-llamafactory-info", action="store_true", help="Write a LLaMA-Factory dataset_info JSON preview.", ) args = parser.parse_args() plan = build_plant_training_plan( config_path=args.config, dataset_path=args.dataset, output_dir=args.output_dir, adapter_repo=args.adapter_repo, corrected_examples=args.corrected_examples, ) payload = plan.to_dict() if args.write_llamafactory_info: payload["llamafactory_dataset_info"] = str( write_llamafactory_dataset_info(args.dataset) ) print(json.dumps(payload, indent=2, ensure_ascii=False)) if __name__ == "__main__": main()