Fine Tuning
Methods
Domain Types
Dpo Hyperparameters
-
class DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
Dpo Method
-
class DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
Reinforcement Hyperparameters
-
class ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
Reinforcement Method
-
class ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
Supervised Hyperparameters
-
class SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
Supervised Method
-
class SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
Jobs
Create fine-tuning job
fine_tuning.jobs.create(**kwargs) -> FineTuningJob
post /fine_tuning/jobs
Creates a fine-tuning job which begins the process of creating a new model from a given dataset.
Response includes details of the enqueued job including job status and the name of the fine-tuned models once complete.
Parameters
-
model: String | :"babbage-002" | :"davinci-002" | :"gpt-3.5-turbo" | :"gpt-4o-mini"The name of the model to fine-tune. You can select one of the supported models.
-
String = String -
Model = :"babbage-002" | :"davinci-002" | :"gpt-3.5-turbo" | :"gpt-4o-mini"The name of the model to fine-tune. You can select one of the supported models.
-
:"babbage-002" -
:"davinci-002" -
:"gpt-3.5-turbo" -
:"gpt-4o-mini"
-
-
-
training_file: StringThe ID of an uploaded file that contains training data.
See upload file for how to upload a file.
Your dataset must be formatted as a JSONL file. Additionally, you must upload your file with the purpose
fine-tune.The contents of the file should differ depending on if the model uses the chat, completions format, or if the fine-tuning method uses the preference format.
See the fine-tuning guide for more details.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value is now deprecated in favor of
method, and should be passed in under themethodparameter.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
integrations: Array[Integration{ type, wandb}]A list of integrations to enable for your fine-tuning job.
-
type: :wandbThe type of integration to enable. Currently, only "wandb" (Weights and Biases) is supported.
:wandb
-
wandb: Wandb{ project, entity, name, tags}The settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
seed: IntegerThe seed controls the reproducibility of the job. Passing in the same seed and job parameters should produce the same results, but may differ in rare cases. If a seed is not specified, one will be generated for you.
-
suffix: StringA string of up to 64 characters that will be added to your fine-tuned model name.
For example, a
suffixof "custom-model-name" would produce a model name likeft:gpt-4o-mini:openai:custom-model-name:7p4lURel. -
validation_file: StringThe ID of an uploaded file that contains validation data.
If you provide this file, the data is used to generate validation metrics periodically during fine-tuning. These metrics can be viewed in the fine-tuning results file. The same data should not be present in both train and validation files.
Your dataset must be formatted as a JSONL file. You must upload your file with the purpose
fine-tune.See the fine-tuning guide for more details.
Returns
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
fine_tuning_job = openai.fine_tuning.jobs.create(model: :"gpt-4o-mini", training_file: "file-abc123")
puts(fine_tuning_job)
Response
{
"id": "id",
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"param": "param"
},
"fine_tuned_model": "fine_tuned_model",
"finished_at": 0,
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
},
"model": "model",
"object": "fine_tuning.job",
"organization_id": "organization_id",
"result_files": [
"file-abc123"
],
"seed": 0,
"status": "validating_files",
"trained_tokens": 0,
"training_file": "training_file",
"validation_file": "validation_file",
"estimated_finish": 0,
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": "entity",
"name": "name",
"tags": [
"custom-tag"
]
}
}
],
"metadata": {
"foo": "string"
},
"method": {
"type": "supervised",
"dpo": {
"hyperparameters": {
"batch_size": "auto",
"beta": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
},
"reinforcement": {
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
},
"hyperparameters": {
"batch_size": "auto",
"compute_multiplier": "auto",
"eval_interval": "auto",
"eval_samples": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
"reasoning_effort": "default"
}
},
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
}
}
}
List fine-tuning jobs
fine_tuning.jobs.list(**kwargs) -> CursorPage<FineTuningJob>
get /fine_tuning/jobs
List your organization's fine-tuning jobs
Parameters
-
after: StringIdentifier for the last job from the previous pagination request.
-
limit: IntegerNumber of fine-tuning jobs to retrieve.
-
metadata: Hash[Symbol, String]Optional metadata filter. To filter, use the syntax
metadata[k]=v. Alternatively, setmetadata=nullto indicate no metadata.
Returns
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
page = openai.fine_tuning.jobs.list
puts(page)
Response
{
"data": [
{
"id": "id",
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"param": "param"
},
"fine_tuned_model": "fine_tuned_model",
"finished_at": 0,
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
},
"model": "model",
"object": "fine_tuning.job",
"organization_id": "organization_id",
"result_files": [
"file-abc123"
],
"seed": 0,
"status": "validating_files",
"trained_tokens": 0,
"training_file": "training_file",
"validation_file": "validation_file",
"estimated_finish": 0,
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": "entity",
"name": "name",
"tags": [
"custom-tag"
]
}
}
],
"metadata": {
"foo": "string"
},
"method": {
"type": "supervised",
"dpo": {
"hyperparameters": {
"batch_size": "auto",
"beta": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
},
"reinforcement": {
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
},
"hyperparameters": {
"batch_size": "auto",
"compute_multiplier": "auto",
"eval_interval": "auto",
"eval_samples": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
"reasoning_effort": "default"
}
},
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
}
}
}
],
"has_more": true,
"object": "list"
}
Retrieve fine-tuning job
fine_tuning.jobs.retrieve(fine_tuning_job_id) -> FineTuningJob
get /fine_tuning/jobs/{fine_tuning_job_id}
Get info about a fine-tuning job.
Parameters
fine_tuning_job_id: String
Returns
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
fine_tuning_job = openai.fine_tuning.jobs.retrieve("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(fine_tuning_job)
Response
{
"id": "id",
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"param": "param"
},
"fine_tuned_model": "fine_tuned_model",
"finished_at": 0,
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
},
"model": "model",
"object": "fine_tuning.job",
"organization_id": "organization_id",
"result_files": [
"file-abc123"
],
"seed": 0,
"status": "validating_files",
"trained_tokens": 0,
"training_file": "training_file",
"validation_file": "validation_file",
"estimated_finish": 0,
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": "entity",
"name": "name",
"tags": [
"custom-tag"
]
}
}
],
"metadata": {
"foo": "string"
},
"method": {
"type": "supervised",
"dpo": {
"hyperparameters": {
"batch_size": "auto",
"beta": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
},
"reinforcement": {
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
},
"hyperparameters": {
"batch_size": "auto",
"compute_multiplier": "auto",
"eval_interval": "auto",
"eval_samples": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
"reasoning_effort": "default"
}
},
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
}
}
}
List fine-tuning events
fine_tuning.jobs.list_events(fine_tuning_job_id, **kwargs) -> CursorPage<FineTuningJobEvent>
get /fine_tuning/jobs/{fine_tuning_job_id}/events
Get status updates for a fine-tuning job.
Parameters
-
fine_tuning_job_id: String -
after: StringIdentifier for the last event from the previous pagination request.
-
limit: IntegerNumber of events to retrieve.
Returns
-
class FineTuningJobEventFine-tuning job event object
-
id: StringThe object identifier.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
level: :info | :warn | :errorThe log level of the event.
-
:info -
:warn -
:error
-
-
message: StringThe message of the event.
-
object: :"fine_tuning.job.event"The object type, which is always "fine_tuning.job.event".
:"fine_tuning.job.event"
-
data: untypedThe data associated with the event.
-
type: :message | :metricsThe type of event.
-
:message -
:metrics
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
page = openai.fine_tuning.jobs.list_events("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(page)
Response
{
"data": [
{
"id": "id",
"created_at": 0,
"level": "info",
"message": "message",
"object": "fine_tuning.job.event",
"data": {},
"type": "message"
}
],
"has_more": true,
"object": "list"
}
Cancel fine-tuning
fine_tuning.jobs.cancel(fine_tuning_job_id) -> FineTuningJob
post /fine_tuning/jobs/{fine_tuning_job_id}/cancel
Immediately cancel a fine-tune job.
Parameters
fine_tuning_job_id: String
Returns
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
fine_tuning_job = openai.fine_tuning.jobs.cancel("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(fine_tuning_job)
Response
{
"id": "id",
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"param": "param"
},
"fine_tuned_model": "fine_tuned_model",
"finished_at": 0,
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
},
"model": "model",
"object": "fine_tuning.job",
"organization_id": "organization_id",
"result_files": [
"file-abc123"
],
"seed": 0,
"status": "validating_files",
"trained_tokens": 0,
"training_file": "training_file",
"validation_file": "validation_file",
"estimated_finish": 0,
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": "entity",
"name": "name",
"tags": [
"custom-tag"
]
}
}
],
"metadata": {
"foo": "string"
},
"method": {
"type": "supervised",
"dpo": {
"hyperparameters": {
"batch_size": "auto",
"beta": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
},
"reinforcement": {
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
},
"hyperparameters": {
"batch_size": "auto",
"compute_multiplier": "auto",
"eval_interval": "auto",
"eval_samples": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
"reasoning_effort": "default"
}
},
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
}
}
}
Pause fine-tuning
fine_tuning.jobs.pause(fine_tuning_job_id) -> FineTuningJob
post /fine_tuning/jobs/{fine_tuning_job_id}/pause
Pause a fine-tune job.
Parameters
fine_tuning_job_id: String
Returns
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
fine_tuning_job = openai.fine_tuning.jobs.pause("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(fine_tuning_job)
Response
{
"id": "id",
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"param": "param"
},
"fine_tuned_model": "fine_tuned_model",
"finished_at": 0,
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
},
"model": "model",
"object": "fine_tuning.job",
"organization_id": "organization_id",
"result_files": [
"file-abc123"
],
"seed": 0,
"status": "validating_files",
"trained_tokens": 0,
"training_file": "training_file",
"validation_file": "validation_file",
"estimated_finish": 0,
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": "entity",
"name": "name",
"tags": [
"custom-tag"
]
}
}
],
"metadata": {
"foo": "string"
},
"method": {
"type": "supervised",
"dpo": {
"hyperparameters": {
"batch_size": "auto",
"beta": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
},
"reinforcement": {
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
},
"hyperparameters": {
"batch_size": "auto",
"compute_multiplier": "auto",
"eval_interval": "auto",
"eval_samples": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
"reasoning_effort": "default"
}
},
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
}
}
}
Resume fine-tuning
fine_tuning.jobs.resume(fine_tuning_job_id) -> FineTuningJob
post /fine_tuning/jobs/{fine_tuning_job_id}/resume
Resume a fine-tune job.
Parameters
fine_tuning_job_id: String
Returns
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
fine_tuning_job = openai.fine_tuning.jobs.resume("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(fine_tuning_job)
Response
{
"id": "id",
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"param": "param"
},
"fine_tuned_model": "fine_tuned_model",
"finished_at": 0,
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
},
"model": "model",
"object": "fine_tuning.job",
"organization_id": "organization_id",
"result_files": [
"file-abc123"
],
"seed": 0,
"status": "validating_files",
"trained_tokens": 0,
"training_file": "training_file",
"validation_file": "validation_file",
"estimated_finish": 0,
"integrations": [
{
"type": "wandb",
"wandb": {
"project": "my-wandb-project",
"entity": "entity",
"name": "name",
"tags": [
"custom-tag"
]
}
}
],
"metadata": {
"foo": "string"
},
"method": {
"type": "supervised",
"dpo": {
"hyperparameters": {
"batch_size": "auto",
"beta": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
},
"reinforcement": {
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
},
"hyperparameters": {
"batch_size": "auto",
"compute_multiplier": "auto",
"eval_interval": "auto",
"eval_samples": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto",
"reasoning_effort": "default"
}
},
"supervised": {
"hyperparameters": {
"batch_size": "auto",
"learning_rate_multiplier": "auto",
"n_epochs": "auto"
}
}
}
}
Domain Types
Fine Tuning Job
-
class FineTuningJobThe
fine_tuning.jobobject represents a fine-tuning job that has been created through the API.-
id: StringThe object identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
error: Error{ code, message, param}For fine-tuning jobs that have
failed, this will contain more information on the cause of the failure.-
code: StringA machine-readable error code.
-
message: StringA human-readable error message.
-
param: StringThe parameter that was invalid, usually
training_fileorvalidation_file. This field will be null if the failure was not parameter-specific.
-
-
fine_tuned_model: StringThe name of the fine-tuned model that is being created. The value will be null if the fine-tuning job is still running.
-
finished_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running.
-
hyperparameters: Hyperparameters{ batch_size, learning_rate_multiplier, n_epochs}The hyperparameters used for the fine-tuning job. This value will only be returned when running
supervisedjobs.-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
model: StringThe base model that is being fine-tuned.
-
object: :"fine_tuning.job"The object type, which is always "fine_tuning.job".
:"fine_tuning.job"
-
organization_id: StringThe organization that owns the fine-tuning job.
-
result_files: Array[String]The compiled results file ID(s) for the fine-tuning job. You can retrieve the results with the Files API.
-
seed: IntegerThe seed used for the fine-tuning job.
-
status: :validating_files | :queued | :running | 3 moreThe current status of the fine-tuning job, which can be either
validating_files,queued,running,succeeded,failed, orcancelled.-
:validating_files -
:queued -
:running -
:succeeded -
:failed -
:cancelled
-
-
trained_tokens: IntegerThe total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running.
-
training_file: StringThe file ID used for training. You can retrieve the training data with the Files API.
-
validation_file: StringThe file ID used for validation. You can retrieve the validation results with the Files API.
-
estimated_finish: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job is estimated to finish. The value will be null if the fine-tuning job is not running.
-
integrations: Array[FineTuningJobWandbIntegrationObject]A list of integrations to enable for this fine-tuning job.
-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
-
metadata: MetadataSet of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard.
Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters.
-
method_: Method{ type, dpo, reinforcement, supervised}The method used for fine-tuning.
-
type: :supervised | :dpo | :reinforcementThe type of method. Is either
supervised,dpo, orreinforcement.-
:supervised -
:dpo -
:reinforcement
-
-
dpo: DpoMethodConfiguration for the DPO fine-tuning method.
-
hyperparameters: DpoHyperparametersThe hyperparameters used for the DPO fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
beta: :auto | FloatThe beta value for the DPO method. A higher beta value will increase the weight of the penalty between the policy and reference model.
-
Beta = :auto:auto
-
Float = Float
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
reinforcement: ReinforcementMethodConfiguration for the reinforcement fine-tuning method.
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
hyperparameters: ReinforcementHyperparametersThe hyperparameters used for the reinforcement fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
compute_multiplier: :auto | FloatMultiplier on amount of compute used for exploring search space during training.
-
ComputeMultiplier = :auto:auto
-
Float = Float
-
-
eval_interval: :auto | IntegerThe number of training steps between evaluation runs.
-
EvalInterval = :auto:auto
-
Integer = Integer
-
-
eval_samples: :auto | IntegerNumber of evaluation samples to generate per training step.
-
EvalSamples = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
reasoning_effort: :default | :low | :medium | :highLevel of reasoning effort.
-
:default -
:low -
:medium -
:high
-
-
-
-
supervised: SupervisedMethodConfiguration for the supervised fine-tuning method.
-
hyperparameters: SupervisedHyperparametersThe hyperparameters used for the fine-tuning job.
-
batch_size: :auto | IntegerNumber of examples in each batch. A larger batch size means that model parameters are updated less frequently, but with lower variance.
-
BatchSize = :auto:auto
-
Integer = Integer
-
-
learning_rate_multiplier: :auto | FloatScaling factor for the learning rate. A smaller learning rate may be useful to avoid overfitting.
-
LearningRateMultiplier = :auto:auto
-
Float = Float
-
-
n_epochs: :auto | IntegerThe number of epochs to train the model for. An epoch refers to one full cycle through the training dataset.
-
NEpochs = :auto:auto
-
Integer = Integer
-
-
-
-
-
Fine Tuning Job Event
-
class FineTuningJobEventFine-tuning job event object
-
id: StringThe object identifier.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the fine-tuning job was created.
-
level: :info | :warn | :errorThe log level of the event.
-
:info -
:warn -
:error
-
-
message: StringThe message of the event.
-
object: :"fine_tuning.job.event"The object type, which is always "fine_tuning.job.event".
:"fine_tuning.job.event"
-
data: untypedThe data associated with the event.
-
type: :message | :metricsThe type of event.
-
:message -
:metrics
-
-
Fine Tuning Job Wandb Integration
-
class FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
Fine Tuning Job Wandb Integration Object
-
class FineTuningJobWandbIntegrationObject-
type: :wandbThe type of the integration being enabled for the fine-tuning job
:wandb
-
wandb: FineTuningJobWandbIntegrationThe settings for your integration with Weights and Biases. This payload specifies the project that metrics will be sent to. Optionally, you can set an explicit display name for your run, add tags to your run, and set a default entity (team, username, etc) to be associated with your run.
-
project: StringThe name of the project that the new run will be created under.
-
entity: StringThe entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.
-
name: StringA display name to set for the run. If not set, we will use the Job ID as the name.
-
tags: Array[String]A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
-
-
Checkpoints
List fine-tuning checkpoints
fine_tuning.jobs.checkpoints.list(fine_tuning_job_id, **kwargs) -> CursorPage<FineTuningJobCheckpoint>
get /fine_tuning/jobs/{fine_tuning_job_id}/checkpoints
List checkpoints for a fine-tuning job.
Parameters
-
fine_tuning_job_id: String -
after: StringIdentifier for the last checkpoint ID from the previous pagination request.
-
limit: IntegerNumber of checkpoints to retrieve.
Returns
-
class FineTuningJobCheckpointThe
fine_tuning.job.checkpointobject represents a model checkpoint for a fine-tuning job that is ready to use.-
id: StringThe checkpoint identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the checkpoint was created.
-
fine_tuned_model_checkpoint: StringThe name of the fine-tuned checkpoint model that is created.
-
fine_tuning_job_id: StringThe name of the fine-tuning job that this checkpoint was created from.
-
metrics: Metrics{ full_valid_loss, full_valid_mean_token_accuracy, step, 4 more}Metrics at the step number during the fine-tuning job.
-
full_valid_loss: Float -
full_valid_mean_token_accuracy: Float -
step: Float -
train_loss: Float -
train_mean_token_accuracy: Float -
valid_loss: Float -
valid_mean_token_accuracy: Float
-
-
object: :"fine_tuning.job.checkpoint"The object type, which is always "fine_tuning.job.checkpoint".
:"fine_tuning.job.checkpoint"
-
step_number: IntegerThe step number that the checkpoint was created at.
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
page = openai.fine_tuning.jobs.checkpoints.list("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(page)
Response
{
"data": [
{
"id": "id",
"created_at": 0,
"fine_tuned_model_checkpoint": "fine_tuned_model_checkpoint",
"fine_tuning_job_id": "fine_tuning_job_id",
"metrics": {
"full_valid_loss": 0,
"full_valid_mean_token_accuracy": 0,
"step": 0,
"train_loss": 0,
"train_mean_token_accuracy": 0,
"valid_loss": 0,
"valid_mean_token_accuracy": 0
},
"object": "fine_tuning.job.checkpoint",
"step_number": 0
}
],
"has_more": true,
"object": "list",
"first_id": "first_id",
"last_id": "last_id"
}
Domain Types
Fine Tuning Job Checkpoint
-
class FineTuningJobCheckpointThe
fine_tuning.job.checkpointobject represents a model checkpoint for a fine-tuning job that is ready to use.-
id: StringThe checkpoint identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the checkpoint was created.
-
fine_tuned_model_checkpoint: StringThe name of the fine-tuned checkpoint model that is created.
-
fine_tuning_job_id: StringThe name of the fine-tuning job that this checkpoint was created from.
-
metrics: Metrics{ full_valid_loss, full_valid_mean_token_accuracy, step, 4 more}Metrics at the step number during the fine-tuning job.
-
full_valid_loss: Float -
full_valid_mean_token_accuracy: Float -
step: Float -
train_loss: Float -
train_mean_token_accuracy: Float -
valid_loss: Float -
valid_mean_token_accuracy: Float
-
-
object: :"fine_tuning.job.checkpoint"The object type, which is always "fine_tuning.job.checkpoint".
:"fine_tuning.job.checkpoint"
-
step_number: IntegerThe step number that the checkpoint was created at.
-
Checkpoints
Permissions
List checkpoint permissions
fine_tuning.checkpoints.permissions.retrieve(fine_tuned_model_checkpoint, **kwargs) -> PermissionRetrieveResponse
get /fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions
NOTE: This endpoint requires an admin API key.
Organization owners can use this endpoint to view all permissions for a fine-tuned model checkpoint.
Parameters
-
fine_tuned_model_checkpoint: String -
after: StringIdentifier for the last permission ID from the previous pagination request.
-
limit: IntegerNumber of permissions to retrieve.
-
order: :ascending | :descendingThe order in which to retrieve permissions.
-
:ascending -
:descending
-
-
project_id: StringThe ID of the project to get permissions for.
Returns
-
class PermissionRetrieveResponse-
data: Array[Data{ id, created_at, object, project_id}]-
id: StringThe permission identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the permission was created.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
project_id: StringThe project identifier that the permission is for.
-
-
has_more: bool -
object: :list:list
-
first_id: String -
last_id: String
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
permission = openai.fine_tuning.checkpoints.permissions.retrieve("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(permission)
Response
{
"data": [
{
"id": "id",
"created_at": 0,
"object": "checkpoint.permission",
"project_id": "project_id"
}
],
"has_more": true,
"object": "list",
"first_id": "first_id",
"last_id": "last_id"
}
List checkpoint permissions
fine_tuning.checkpoints.permissions.list(fine_tuned_model_checkpoint, **kwargs) -> ConversationCursorPage<PermissionListResponse>
get /fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions
NOTE: This endpoint requires an admin API key.
Organization owners can use this endpoint to view all permissions for a fine-tuned model checkpoint.
Parameters
-
fine_tuned_model_checkpoint: String -
after: StringIdentifier for the last permission ID from the previous pagination request.
-
limit: IntegerNumber of permissions to retrieve.
-
order: :ascending | :descendingThe order in which to retrieve permissions.
-
:ascending -
:descending
-
-
project_id: StringThe ID of the project to get permissions for.
Returns
-
class PermissionListResponseThe
checkpoint.permissionobject represents a permission for a fine-tuned model checkpoint.-
id: StringThe permission identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the permission was created.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
project_id: StringThe project identifier that the permission is for.
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
page = openai.fine_tuning.checkpoints.permissions.list("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
puts(page)
Response
{
"data": [
{
"id": "id",
"created_at": 0,
"object": "checkpoint.permission",
"project_id": "project_id"
}
],
"has_more": true,
"object": "list",
"first_id": "first_id",
"last_id": "last_id"
}
Create checkpoint permissions
fine_tuning.checkpoints.permissions.create(fine_tuned_model_checkpoint, **kwargs) -> Page<PermissionCreateResponse>
post /fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions
NOTE: Calling this endpoint requires an admin API key.
This enables organization owners to share fine-tuned models with other projects in their organization.
Parameters
-
fine_tuned_model_checkpoint: String -
project_ids: Array[String]The project identifiers to grant access to.
Returns
-
class PermissionCreateResponseThe
checkpoint.permissionobject represents a permission for a fine-tuned model checkpoint.-
id: StringThe permission identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the permission was created.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
project_id: StringThe project identifier that the permission is for.
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
page = openai.fine_tuning.checkpoints.permissions.create(
"ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd",
project_ids: ["string"]
)
puts(page)
Response
{
"data": [
{
"id": "id",
"created_at": 0,
"object": "checkpoint.permission",
"project_id": "project_id"
}
],
"has_more": true,
"object": "list",
"first_id": "first_id",
"last_id": "last_id"
}
Delete checkpoint permission
fine_tuning.checkpoints.permissions.delete(permission_id, **kwargs) -> PermissionDeleteResponse
delete /fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions/{permission_id}
NOTE: This endpoint requires an admin API key.
Organization owners can use this endpoint to delete a permission for a fine-tuned model checkpoint.
Parameters
-
fine_tuned_model_checkpoint: String -
permission_id: String
Returns
-
class PermissionDeleteResponse-
id: StringThe ID of the fine-tuned model checkpoint permission that was deleted.
-
deleted: boolWhether the fine-tuned model checkpoint permission was successfully deleted.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
permission = openai.fine_tuning.checkpoints.permissions.delete(
"cp_zc4Q7MP6XxulcVzj4MZdwsAB",
fine_tuned_model_checkpoint: "ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd"
)
puts(permission)
Response
{
"id": "id",
"deleted": true,
"object": "checkpoint.permission"
}
Domain Types
Permission Retrieve Response
-
class PermissionRetrieveResponse-
data: Array[Data{ id, created_at, object, project_id}]-
id: StringThe permission identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the permission was created.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
project_id: StringThe project identifier that the permission is for.
-
-
has_more: bool -
object: :list:list
-
first_id: String -
last_id: String
-
Permission List Response
-
class PermissionListResponseThe
checkpoint.permissionobject represents a permission for a fine-tuned model checkpoint.-
id: StringThe permission identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the permission was created.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
project_id: StringThe project identifier that the permission is for.
-
Permission Create Response
-
class PermissionCreateResponseThe
checkpoint.permissionobject represents a permission for a fine-tuned model checkpoint.-
id: StringThe permission identifier, which can be referenced in the API endpoints.
-
created_at: IntegerThe Unix timestamp (in seconds) for when the permission was created.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
project_id: StringThe project identifier that the permission is for.
-
Permission Delete Response
-
class PermissionDeleteResponse-
id: StringThe ID of the fine-tuned model checkpoint permission that was deleted.
-
deleted: boolWhether the fine-tuned model checkpoint permission was successfully deleted.
-
object: :"checkpoint.permission"The object type, which is always "checkpoint.permission".
:"checkpoint.permission"
-
Alpha
Graders
Run grader
fine_tuning.alpha.graders.run(**kwargs) -> GraderRunResponse
post /fine_tuning/alpha/graders/run
Run a grader.
Parameters
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
model_sample: StringThe model sample to be evaluated. This value will be used to populate the
samplenamespace. See the guide for more details. Theoutput_jsonvariable will be populated if the model sample is a valid JSON string. -
item: untypedThe dataset item provided to the grader. This will be used to populate the
itemnamespace. See the guide for more details.
Returns
-
class GraderRunResponse-
metadata: Metadata{ errors, execution_time, name, 4 more}-
errors: Errors{ formula_parse_error, invalid_variable_error, model_grader_parse_error, 11 more}-
formula_parse_error: bool -
invalid_variable_error: bool -
model_grader_parse_error: bool -
model_grader_refusal_error: bool -
model_grader_server_error: bool -
model_grader_server_error_details: String -
other_error: bool -
python_grader_runtime_error: bool -
python_grader_runtime_error_details: String -
python_grader_server_error: bool -
python_grader_server_error_type: String -
sample_parse_error: bool -
truncated_observation_error: bool -
unresponsive_reward_error: bool
-
-
execution_time: Float -
name: String -
sampled_model_name: String -
scores: Hash[Symbol, untyped] -
token_usage: Integer -
type: String
-
-
model_grader_token_usage_per_model: Hash[Symbol, untyped] -
reward: Float -
sub_rewards: Hash[Symbol, untyped]
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
response = openai.fine_tuning.alpha.graders.run(
grader: {input: "input", name: "name", operation: :eq, reference: "reference", type: :string_check},
model_sample: "model_sample"
)
puts(response)
Response
{
"metadata": {
"errors": {
"formula_parse_error": true,
"invalid_variable_error": true,
"model_grader_parse_error": true,
"model_grader_refusal_error": true,
"model_grader_server_error": true,
"model_grader_server_error_details": "model_grader_server_error_details",
"other_error": true,
"python_grader_runtime_error": true,
"python_grader_runtime_error_details": "python_grader_runtime_error_details",
"python_grader_server_error": true,
"python_grader_server_error_type": "python_grader_server_error_type",
"sample_parse_error": true,
"truncated_observation_error": true,
"unresponsive_reward_error": true
},
"execution_time": 0,
"name": "name",
"sampled_model_name": "sampled_model_name",
"scores": {
"foo": "bar"
},
"token_usage": 0,
"type": "type"
},
"model_grader_token_usage_per_model": {
"foo": "bar"
},
"reward": 0,
"sub_rewards": {
"foo": "bar"
}
}
Validate grader
fine_tuning.alpha.graders.validate(**kwargs) -> GraderValidateResponse
post /fine_tuning/alpha/graders/validate
Validate a grader.
Parameters
-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
Returns
-
class GraderValidateResponse-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-
Example
require "openai"
openai = OpenAI::Client.new(api_key: "My API Key")
response = openai.fine_tuning.alpha.graders.validate(
grader: {input: "input", name: "name", operation: :eq, reference: "reference", type: :string_check}
)
puts(response)
Response
{
"grader": {
"input": "input",
"name": "name",
"operation": "eq",
"reference": "reference",
"type": "string_check"
}
}
Domain Types
Grader Run Response
-
class GraderRunResponse-
metadata: Metadata{ errors, execution_time, name, 4 more}-
errors: Errors{ formula_parse_error, invalid_variable_error, model_grader_parse_error, 11 more}-
formula_parse_error: bool -
invalid_variable_error: bool -
model_grader_parse_error: bool -
model_grader_refusal_error: bool -
model_grader_server_error: bool -
model_grader_server_error_details: String -
other_error: bool -
python_grader_runtime_error: bool -
python_grader_runtime_error_details: String -
python_grader_server_error: bool -
python_grader_server_error_type: String -
sample_parse_error: bool -
truncated_observation_error: bool -
unresponsive_reward_error: bool
-
-
execution_time: Float -
name: String -
sampled_model_name: String -
scores: Hash[Symbol, untyped] -
token_usage: Integer -
type: String
-
-
model_grader_token_usage_per_model: Hash[Symbol, untyped] -
reward: Float -
sub_rewards: Hash[Symbol, untyped]
-
Grader Validate Response
-
class GraderValidateResponse-
grader: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreThe grader used for the fine-tuning job.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
input: StringThe input text. This may include template strings.
-
name: StringThe name of the grader.
-
operation: :eq | :ne | :like | :ilikeThe string check operation to perform. One of
eq,ne,like, orilike.-
:eq -
:ne -
:like -
:ilike
-
-
reference: StringThe reference text. This may include template strings.
-
type: :string_checkThe object type, which is always
string_check.:string_check
-
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
evaluation_metric: :cosine | :fuzzy_match | :bleu | 8 moreThe evaluation metric to use. One of
cosine,fuzzy_match,bleu,gleu,meteor,rouge_1,rouge_2,rouge_3,rouge_4,rouge_5, orrouge_l.-
:cosine -
:fuzzy_match -
:bleu -
:gleu -
:meteor -
:rouge_1 -
:rouge_2 -
:rouge_3 -
:rouge_4 -
:rouge_5 -
:rouge_l
-
-
input: StringThe text being graded.
-
name: StringThe name of the grader.
-
reference: StringThe text being graded against.
-
type: :text_similarityThe type of grader.
:text_similarity
-
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
name: StringThe name of the grader.
-
source: StringThe source code of the python script.
-
type: :pythonThe object type, which is always
python.:python
-
image_tag: StringThe image tag to use for the python script.
-
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
input: Array[Input{ content, role, type}]The input messages evaluated by the grader. Supports text, output text, input image, and input audio content blocks, and may include template strings.
-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
text: StringThe text input to the model.
-
type: :input_textThe type of the input item. Always
input_text.:input_text
-
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
input_audio: InputAudio{ data, format_}-
data: StringBase64-encoded audio data.
-
format_: :mp3 | :wavThe format of the audio data. Currently supported formats are
mp3andwav.-
:mp3 -
:wav
-
-
-
type: :input_audioThe type of the input item. Always
input_audio.:input_audio
-
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
model: StringThe model to use for the evaluation.
-
name: StringThe name of the grader.
-
type: :score_modelThe object type, which is always
score_model.:score_model
-
range: Array[Float]The range of the score. Defaults to
[0, 1]. -
sampling_params: SamplingParams{ max_completions_tokens, reasoning_effort, seed, 2 more}The sampling parameters for the model.
-
max_completions_tokens: IntegerThe maximum number of tokens the grader model may generate in its response.
-
reasoning_effort: ReasoningEffortConstrains effort on reasoning for reasoning models. Currently supported values are
none,minimal,low,medium,high, andxhigh. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.-
gpt-5.1defaults tonone, which does not perform reasoning. The supported reasoning values forgpt-5.1arenone,low,medium, andhigh. Tool calls are supported for all reasoning values in gpt-5.1. -
All models before
gpt-5.1default tomediumreasoning effort, and do not supportnone. -
The
gpt-5-promodel defaults to (and only supports)highreasoning effort. -
xhighis supported for all models aftergpt-5.1-codex-max. -
:none -
:minimal -
:low -
:medium -
:high -
:xhigh
-
-
seed: IntegerA seed value to initialize the randomness, during sampling.
-
temperature: FloatA higher temperature increases randomness in the outputs.
-
top_p: FloatAn alternative to temperature for nucleus sampling; 1.0 includes all tokens.
-
-
-
class MultiGraderA MultiGrader object combines the output of multiple graders to produce a single score.
-
calculate_output: StringA formula to calculate the output based on grader results.
-
graders: StringCheckGrader | TextSimilarityGrader | PythonGrader | 2 moreA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class StringCheckGraderA StringCheckGrader object that performs a string comparison between input and reference using a specified operation.
-
class TextSimilarityGraderA TextSimilarityGrader object which grades text based on similarity metrics.
-
class PythonGraderA PythonGrader object that runs a python script on the input.
-
class ScoreModelGraderA ScoreModelGrader object that uses a model to assign a score to the input.
-
class LabelModelGraderA LabelModelGrader object which uses a model to assign labels to each item in the evaluation.
-
input: Array[Input{ content, role, type}]-
content: String | ResponseInputText | OutputText{ text, type} | 3 moreInputs to the model - can contain template strings. Supports text, output text, input images, and input audio, either as a single item or an array of items.
-
String = StringA text input to the model.
-
class ResponseInputTextA text input to the model.
-
class OutputTextA text output from the model.
-
text: StringThe text output from the model.
-
type: :output_textThe type of the output text. Always
output_text.:output_text
-
-
class InputImageAn image input block used within EvalItem content arrays.
-
image_url: StringThe URL of the image input.
-
type: :input_imageThe type of the image input. Always
input_image.:input_image
-
detail: StringThe detail level of the image to be sent to the model. One of
high,low, orauto. Defaults toauto.
-
-
class ResponseInputAudioAn audio input to the model.
-
GraderInputs = Array[GraderInputItem]A list of inputs, each of which may be either an input text, output text, input image, or input audio object.
-
-
role: :user | :assistant | :system | :developerThe role of the message input. One of
user,assistant,system, ordeveloper.-
:user -
:assistant -
:system -
:developer
-
-
type: :messageThe type of the message input. Always
message.:message
-
-
labels: Array[String]The labels to assign to each item in the evaluation.
-
model: StringThe model to use for the evaluation. Must support structured outputs.
-
name: StringThe name of the grader.
-
passing_labels: Array[String]The labels that indicate a passing result. Must be a subset of labels.
-
type: :label_modelThe object type, which is always
label_model.:label_model
-
-
-
name: StringThe name of the grader.
-
type: :multiThe object type, which is always
multi.:multi
-
-
-