2828from dashscope .finetune .reinforcement import (
2929 FunctionType ,
3030 DatasetsType ,
31+ TrainingType ,
3132)
3233from dashscope .finetune .reinforcement import (
3334 RewardInput ,
@@ -171,11 +172,14 @@ def submit_job(
171172 hyper_parameters : Optional [Dict [str , str ]] = None ,
172173 resources : Optional [Dict [str , str ]] = None ,
173174 job_name : Optional [str ] = None ,
175+ teacher_model : Optional [str ] = None ,
174176 ** kwargs ,
175177 ) -> FineTune :
176178 """
177179 Submit RL tuning job to the platform.
178180 """
181+ teacher_model = teacher_model or self .tuning .teacher_model
182+
179183 # Resolve job name (fallback to class default)
180184 if job_name :
181185 self .tuning .name = job_name
@@ -230,6 +234,15 @@ def submit_job(
230234 if resources :
231235 self .tuning .training .resources = resources
232236
237+ training_type = self .tuning .training .type
238+ if teacher_model :
239+ training_type = TrainingType .PG_OPD
240+ elif training_type == TrainingType .PG_OPD :
241+ raise ValueErrorWithCode (
242+ f"teacher_model is required when training.type is { training_type } " ,
243+ error_code = 3006 ,
244+ )
245+
233246 request = {
234247 "model" : self .tuning .model .name ,
235248 "training_datasets" : [ds .model_dump () for ds in training_datasets ],
@@ -240,7 +253,8 @@ def submit_job(
240253 "rewards" : rewards ,
241254 "hyper_parameters" : self .tuning .training .hyper_parameters ,
242255 "resource_config" : self .tuning .training .resources ,
243- "training_type" : str (self .tuning .training .type ),
256+ "training_type" : str (training_type ),
257+ "teacher_model" : teacher_model ,
244258 "job_name" : job_name_with_suffix ,
245259 }
246260 request = deep_remove_none (request )
@@ -287,6 +301,7 @@ async def run(
287301 hyper_parameters : Optional [Dict [str , str ]] = None ,
288302 resources : Optional [Dict [str , str ]] = None ,
289303 job_name : Optional [str ] = None ,
304+ teacher_model : Optional [str ] = None ,
290305 ** kwargs ,
291306 ) -> FineTune :
292307 """
@@ -315,6 +330,7 @@ async def run(
315330 hyper_parameters = hyper_parameters ,
316331 resources = resources ,
317332 job_name = job_name ,
333+ teacher_model = teacher_model ,
318334 ** kwargs ,
319335 )
320336 except Exception as e :
0 commit comments