choonkeat / elm-openai / OpenAI.FineTune

Fine-tuning lets you get more out of the models available through the API by providing:

See https://beta.openai.com/docs/guides/fine-tuning

create : Input -> Ext.Http.TaskInput (Ext.Http.Error String) FineTune

https://beta.openai.com/docs/api-reference/fine-tunes/create

get : OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String) FineTune

https://beta.openai.com/docs/api-reference/fine-tunes/retrieve

list : Ext.Http.TaskInput (Ext.Http.Error String) (List FineTune)

https://beta.openai.com/docs/api-reference/fine-tunes/list

listEvents : OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String) (List Event)

https://beta.openai.com/docs/api-reference/fine-tunes/events

cancel : OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String) FineTune

https://beta.openai.com/docs/api-reference/fine-tunes/cancel

delete : OpenAI.ModelID.ModelID -> Ext.Http.TaskInput (Ext.Http.Error String) OpenAI.Common.DeleteOutput

https://beta.openai.com/docs/api-reference/fine-tunes/delete-model


type alias Input =
{ training_file_id : String
, validation_file : Maybe String
, model : Maybe BaseModel
, n_epochs : Maybe Basics.Int
, batch_size : Maybe Basics.Int
, learning_rate_multiplier : Maybe Basics.Float
, prompt_loss_weight : Maybe Basics.Float
, compute_classification_metrics : Maybe Basics.Bool
, classification_n_classes : Maybe Basics.Int
, classification_positive_class : Maybe String
, classification_betas : Maybe (List Basics.Float)
, suffix : Maybe String 
}


type BaseModel
    = Ada
    | Babbage
    | Curie
    | Davinci
    | FineTuned String

The name of the base model to fine-tune. You can select one of "ada", "babbage", "curie", "davinci", or a fine-tuned model created after 2022-04-21. To learn more about these models, see the Models documentation.


type alias FineTune =
{ id : String
, object : String
, model : OpenAI.ModelID.ModelID
, created_at : Time.Posix
, events : List Event
, fine_tuned_model : Maybe String
, hyperparams : HyperParameters
, organization_id : String
, result_files : List OpenAI.Common.File
, status : JobStatus
, validation_files : List OpenAI.Common.File
, training_files : List OpenAI.Common.File
, updated_at : Time.Posix 
}


type alias HyperParameters =
{ batch_size : Basics.Int
, learning_rate_multiplier : Basics.Float
, n_epochs : Basics.Int
, prompt_loss_weight : Basics.Float 
}


type JobStatus
    = Pending
    | Succeeded
    | Cancelled
    | Other String


type alias Event =
{ object : String
, created_at : Time.Posix
, level : String
, message : String 
}