openai_api_rs/v1/
fine_tuning.rs

1use serde::{Deserialize, Serialize};
2
3use crate::impl_builder_methods;
4
5#[derive(Debug, Serialize, Clone)]
6pub struct CreateFineTuningJobRequest {
7    pub model: String,
8    pub training_file: String,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub hyperparameters: Option<HyperParameters>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub suffix: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub validation_file: Option<String>,
15}
16
17impl CreateFineTuningJobRequest {
18    pub fn new(model: String, training_file: String) -> Self {
19        Self {
20            model,
21            training_file,
22            hyperparameters: None,
23            suffix: None,
24            validation_file: None,
25        }
26    }
27}
28
29impl_builder_methods!(
30    CreateFineTuningJobRequest,
31    hyperparameters: HyperParameters,
32    suffix: String,
33    validation_file: String
34);
35
36#[derive(Debug, Serialize)]
37pub struct ListFineTuningJobsRequest {
38    // TODO pass as query params
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub after: Option<String>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub limit: Option<i64>,
43}
44
45impl ListFineTuningJobsRequest {
46    pub fn new(_fine_tune_id: String) -> Self {
47        Self {
48            after: None,
49            limit: None,
50        }
51    }
52}
53
54#[derive(Debug, Serialize)]
55pub struct ListFineTuningJobEventsRequest {
56    pub fine_tuning_job_id: String,
57    // TODO pass as query params
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub after: Option<String>,
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub limit: Option<i64>,
62}
63
64impl ListFineTuningJobEventsRequest {
65    pub fn new(fine_tuning_job_id: String) -> Self {
66        Self {
67            fine_tuning_job_id,
68            after: None,
69            limit: None,
70        }
71    }
72}
73
74#[derive(Debug, Serialize)]
75pub struct RetrieveFineTuningJobRequest {
76    pub fine_tuning_job_id: String,
77}
78
79impl RetrieveFineTuningJobRequest {
80    pub fn new(fine_tuning_job_id: String) -> Self {
81        Self { fine_tuning_job_id }
82    }
83}
84
85#[derive(Debug, Serialize)]
86pub struct CancelFineTuningJobRequest {
87    pub fine_tuning_job_id: String,
88}
89
90impl CancelFineTuningJobRequest {
91    pub fn new(fine_tuning_job_id: String) -> Self {
92        Self { fine_tuning_job_id }
93    }
94}
95
96#[derive(Debug, Deserialize, Serialize)]
97pub struct FineTuningPagination<T> {
98    pub object: String,
99    pub data: Vec<T>,
100    pub has_more: bool,
101}
102
103#[derive(Debug, Deserialize, Serialize)]
104pub struct FineTuningJobObject {
105    pub id: String,
106    pub created_at: i64,
107    pub error: Option<FineTuningJobError>,
108    pub fine_tuned_model: Option<String>,
109    pub finished_at: Option<String>,
110    pub hyperparameters: HyperParameters,
111    pub model: String,
112    pub object: String,
113    pub organization_id: String,
114    pub result_files: Vec<String>,
115    pub status: String,
116    pub trained_tokens: Option<i64>,
117    pub training_file: String,
118    pub validation_file: Option<String>,
119}
120
121#[derive(Debug, Deserialize, Serialize)]
122pub struct FineTuningJobError {
123    pub code: String,
124    pub message: String,
125    pub param: Option<String>,
126}
127
128#[derive(Debug, Deserialize, Serialize)]
129pub struct FineTuningJobEvent {
130    pub id: String,
131    pub created_at: i64,
132    pub level: String,
133    pub message: String,
134    pub object: String,
135}
136
137#[derive(Clone, Debug, Deserialize, Serialize)]
138pub struct HyperParameters {
139    #[serde(skip_serializing_if = "Option::is_none")]
140    pub batch_size: Option<String>,
141    #[serde(skip_serializing_if = "Option::is_none")]
142    pub learning_rate_multiplier: Option<String>,
143    #[serde(skip_serializing_if = "Option::is_none")]
144    pub n_epochs: Option<String>,
145}