1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Default, Serialize, Deserialize)]
19pub struct CreateFineTuningJobRequest {
20 pub model: String,
22
23 pub training_file: String,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub hyperparameters: Option<Hyperparameters>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub suffix: Option<String>,
33
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub validation_file: Option<String>,
37
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub integrations: Option<Vec<Integration>>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub seed: Option<i64>,
45}
46
47#[derive(Clone, Debug, Default, Serialize, Deserialize)]
49pub struct Hyperparameters {
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub batch_size: Option<HyperparameterValue>,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub learning_rate_multiplier: Option<HyperparameterValue>,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub n_epochs: Option<HyperparameterValue>,
61}
62
63#[derive(Clone, Debug, Serialize, Deserialize)]
65#[serde(untagged)]
66pub enum HyperparameterValue {
67 Auto(String),
68 Number(f64),
69}
70
71#[derive(Clone, Debug, Serialize, Deserialize)]
73pub struct Integration {
74 #[serde(rename = "type")]
76 pub integration_type: String,
77
78 pub wandb: WandbIntegration,
80}
81
82#[derive(Clone, Debug, Serialize, Deserialize)]
84pub struct WandbIntegration {
85 pub project: String,
87
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub name: Option<String>,
91
92 #[serde(skip_serializing_if = "Option::is_none")]
94 pub entity: Option<String>,
95
96 #[serde(skip_serializing_if = "Option::is_none")]
98 pub tags: Option<Vec<String>>,
99}
100
101#[derive(Clone, Debug, Serialize, Deserialize)]
103pub struct FineTuningJob {
104 pub id: String,
106
107 pub created_at: i64,
109
110 #[serde(skip_serializing_if = "Option::is_none")]
112 pub error: Option<FineTuningError>,
113
114 #[serde(skip_serializing_if = "Option::is_none")]
116 pub fine_tuned_model: Option<String>,
117
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub finished_at: Option<i64>,
121
122 pub hyperparameters: Hyperparameters,
124
125 pub model: String,
127
128 pub object: String,
130
131 pub organization_id: String,
133
134 pub result_files: Vec<String>,
136
137 pub status: String,
139
140 #[serde(skip_serializing_if = "Option::is_none")]
142 pub trained_tokens: Option<i64>,
143
144 pub training_file: String,
146
147 #[serde(skip_serializing_if = "Option::is_none")]
149 pub validation_file: Option<String>,
150
151 #[serde(skip_serializing_if = "Option::is_none")]
153 pub integrations: Option<Vec<Integration>>,
154
155 #[serde(skip_serializing_if = "Option::is_none")]
157 pub seed: Option<i64>,
158
159 #[serde(skip_serializing_if = "Option::is_none")]
161 pub estimated_finish: Option<i64>,
162}
163
164#[derive(Clone, Debug, Serialize, Deserialize)]
166pub struct FineTuningError {
167 pub code: String,
169
170 pub message: String,
172
173 #[serde(skip_serializing_if = "Option::is_none")]
175 pub param: Option<String>,
176}
177
178#[derive(Clone, Debug, Serialize, Deserialize)]
180pub struct ListFineTuningJobsResponse {
181 pub object: String,
182 pub data: Vec<FineTuningJob>,
183 pub has_more: bool,
184}
185
186#[derive(Clone, Debug, Serialize, Deserialize)]
188pub struct FineTuningJobEvent {
189 pub id: String,
190 pub created_at: i64,
191 pub level: String,
192 pub message: String,
193 pub object: String,
194}
195
196#[derive(Clone, Debug, Serialize, Deserialize)]
198pub struct ListFineTuningJobEventsResponse {
199 pub object: String,
200 pub data: Vec<FineTuningJobEvent>,
201}
202
203#[derive(Clone, Debug, Serialize, Deserialize)]
205pub struct FineTuningJobCheckpoint {
206 pub id: String,
208
209 pub created_at: i64,
211
212 pub fine_tuned_model_checkpoint: String,
214
215 pub step_number: i64,
217
218 pub metrics: HashMap<String, f64>,
220
221 pub fine_tuning_job_id: String,
223
224 pub object: String,
226}
227
228#[derive(Clone, Debug, Serialize, Deserialize)]
230pub struct ListFineTuningJobCheckpointsResponse {
231 pub object: String,
232 pub data: Vec<FineTuningJobCheckpoint>,
233 pub first_id: Option<String>,
234 pub last_id: Option<String>,
235 pub has_more: bool,
236}