From 0eeafe6b115e55c1a603f00879d50071c98870df Mon Sep 17 00:00:00 2001 From: Derek Xu Date: Fri, 7 Nov 2025 14:42:21 -0800 Subject: [PATCH 1/2] fix the base model requirement --- eval_protocol/cli_commands/create_rft.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/eval_protocol/cli_commands/create_rft.py b/eval_protocol/cli_commands/create_rft.py index 1f903d4b..52362580 100644 --- a/eval_protocol/cli_commands/create_rft.py +++ b/eval_protocol/cli_commands/create_rft.py @@ -487,16 +487,18 @@ def create_rft_command(args) -> int: return 1 # Build training config/body - # Ensure base model is explicitly provided for clarity - if not getattr(args, "base_model", None): - print( - "Error: --base-model is required. Please specify the base model resource id (e.g., accounts/{account}/models/)." - ) + # Exactly one of base-model or warm-start-from must be provided + base_model = getattr(args, "base_model", None) + warm_start_from = getattr(args, "warm_start_from", None) + if (base_model is None and warm_start_from is None) or (base_model is not None and warm_start_from is not None): + print("Error: exactly one of --base-model or --warm-start-from must be specified.") return 1 - training_config: Dict[str, Any] = {"baseModel": args.base_model} - if getattr(args, "warm_start_from", None): - training_config["warmStartFrom"] = args.warm_start_from + training_config: Dict[str, Any] = {} + if base_model is not None: + training_config["baseModel"] = base_model + if warm_start_from is not None: + training_config["warmStartFrom"] = warm_start_from # Optional hyperparameters for key, arg_name in [ From 61ca3d755eb7ca874ad04f27c843e153ad0c0345 Mon Sep 17 00:00:00 2001 From: Derek Xu Date: Fri, 7 Nov 2025 14:46:57 -0800 Subject: [PATCH 2/2] tighten validation --- eval_protocol/cli_commands/create_rft.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/eval_protocol/cli_commands/create_rft.py b/eval_protocol/cli_commands/create_rft.py index 52362580..5828b3ea 100644 --- a/eval_protocol/cli_commands/create_rft.py +++ b/eval_protocol/cli_commands/create_rft.py @@ -488,16 +488,21 @@ def create_rft_command(args) -> int: # Build training config/body # Exactly one of base-model or warm-start-from must be provided - base_model = getattr(args, "base_model", None) - warm_start_from = getattr(args, "warm_start_from", None) - if (base_model is None and warm_start_from is None) or (base_model is not None and warm_start_from is not None): + base_model_raw = getattr(args, "base_model", None) + warm_start_from_raw = getattr(args, "warm_start_from", None) + # Treat empty/whitespace strings as not provided + base_model = base_model_raw.strip() if isinstance(base_model_raw, str) else base_model_raw + warm_start_from = warm_start_from_raw.strip() if isinstance(warm_start_from_raw, str) else warm_start_from_raw + has_base_model = bool(base_model) + has_warm_start = bool(warm_start_from) + if (not has_base_model and not has_warm_start) or (has_base_model and has_warm_start): print("Error: exactly one of --base-model or --warm-start-from must be specified.") return 1 training_config: Dict[str, Any] = {} - if base_model is not None: + if has_base_model: training_config["baseModel"] = base_model - if warm_start_from is not None: + if has_warm_start: training_config["warmStartFrom"] = warm_start_from # Optional hyperparameters