@@ -195,6 +195,50 @@ def list(cls, args):
195195 print (tags )
196196
197197
198+ class FineTuneCLI :
199+ @classmethod
200+ def list (cls , args ):
201+ resp = openai .FineTune .list ()
202+ print (resp )
203+
204+ @classmethod
205+ def create (cls , args ):
206+ create_args = {
207+ "train_file" : args .train_file ,
208+ }
209+ if args .test_file :
210+ create_args ["test_file" ] = args .test_file
211+ if args .base_model :
212+ create_args ["base_model" ] = args .base_model
213+ if args .hparams :
214+ try :
215+ hparams = json .loads (args .hparams )
216+ except json .decoder .JSONDecodeError :
217+ sys .stderr .write (
218+ "--hparams must be JSON decodable and match the hyperparameter arguments of the API"
219+ )
220+ sys .exit (1 )
221+ create_args .update (hparams )
222+
223+ resp = openai .FineTune .create (** create_args )
224+ print (resp )
225+
226+ @classmethod
227+ def get (cls , args ):
228+ resp = openai .FineTune .retrieve (id = args .id )
229+ print (resp )
230+
231+ @classmethod
232+ def events (cls , args ):
233+ resp = openai .FineTune .list_events (id = args .id )
234+ print (resp )
235+
236+ @classmethod
237+ def cancel (cls , args ):
238+ resp = openai .FineTune .cancel (id = args .id )
239+ print (resp )
240+
241+
198242def register (parser ):
199243 # Engine management
200244 subparsers = parser .add_subparsers (help = "All API subcommands" )
@@ -379,3 +423,30 @@ def help(args):
379423
380424 sub = subparsers .add_parser ("tags.list" )
381425 sub .set_defaults (func = Tag .list )
426+
427+ # /fine-tunes API
428+ sub = subparsers .add_parser ("fine_tunes.list" )
429+ sub .set_defaults (func = FineTuneCLI .list )
430+
431+ sub = subparsers .add_parser ("fine_tunes.create" )
432+ sub .add_argument ("-t" , "--train_file" , required = True , help = "File to train" )
433+ sub .add_argument ("--test_file" , help = "File to test" )
434+ sub .add_argument (
435+ "-b" ,
436+ "--base_model" ,
437+ help = "The model name to start the run from" ,
438+ )
439+ sub .add_argument ("-p" , "--hparams" , help = "Hyperparameter JSON" )
440+ sub .set_defaults (func = FineTuneCLI .create )
441+
442+ sub = subparsers .add_parser ("fine_tunes.get" )
443+ sub .add_argument ("-i" , "--id" , required = True , help = "The id of the fine-tune job" )
444+ sub .set_defaults (func = FineTuneCLI .get )
445+
446+ sub = subparsers .add_parser ("fine_tunes.events" )
447+ sub .add_argument ("-i" , "--id" , required = True , help = "The id of the fine-tune job" )
448+ sub .set_defaults (func = FineTuneCLI .events )
449+
450+ sub = subparsers .add_parser ("fine_tunes.cancel" )
451+ sub .add_argument ("-i" , "--id" , required = True , help = "The id of the fine-tune job" )
452+ sub .set_defaults (func = FineTuneCLI .cancel )
0 commit comments