dynamo_async_openai/
fine_tuning.rs1use serde::Serialize;
12
13use crate::{
14 Client,
15 config::Config,
16 error::OpenAIError,
17 types::{
18 CreateFineTuningJobRequest, FineTuningJob, ListFineTuningJobCheckpointsResponse,
19 ListFineTuningJobEventsResponse, ListPaginatedFineTuningJobsResponse,
20 },
21};
22
23pub struct FineTuning<'c, C: Config> {
27 client: &'c Client<C>,
28}
29
30impl<'c, C: Config> FineTuning<'c, C> {
31 pub fn new(client: &'c Client<C>) -> Self {
32 Self { client }
33 }
34
35 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
41 pub async fn create(
42 &self,
43 request: CreateFineTuningJobRequest,
44 ) -> Result<FineTuningJob, OpenAIError> {
45 self.client.post("/fine_tuning/jobs", request).await
46 }
47
48 #[crate::byot(T0 = serde::Serialize, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
50 pub async fn list_paginated<Q>(
51 &self,
52 query: &Q,
53 ) -> Result<ListPaginatedFineTuningJobsResponse, OpenAIError>
54 where
55 Q: Serialize + ?Sized,
56 {
57 self.client
58 .get_with_query("/fine_tuning/jobs", &query)
59 .await
60 }
61
62 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
66 pub async fn retrieve(&self, fine_tuning_job_id: &str) -> Result<FineTuningJob, OpenAIError> {
67 self.client
68 .get(format!("/fine_tuning/jobs/{fine_tuning_job_id}").as_str())
69 .await
70 }
71
72 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
74 pub async fn cancel(&self, fine_tuning_job_id: &str) -> Result<FineTuningJob, OpenAIError> {
75 self.client
76 .post(
77 format!("/fine_tuning/jobs/{fine_tuning_job_id}/cancel").as_str(),
78 (),
79 )
80 .await
81 }
82
83 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
85 pub async fn list_events<Q>(
86 &self,
87 fine_tuning_job_id: &str,
88 query: &Q,
89 ) -> Result<ListFineTuningJobEventsResponse, OpenAIError>
90 where
91 Q: Serialize + ?Sized,
92 {
93 self.client
94 .get_with_query(
95 format!("/fine_tuning/jobs/{fine_tuning_job_id}/events").as_str(),
96 &query,
97 )
98 .await
99 }
100
101 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
102 pub async fn list_checkpoints<Q>(
103 &self,
104 fine_tuning_job_id: &str,
105 query: &Q,
106 ) -> Result<ListFineTuningJobCheckpointsResponse, OpenAIError>
107 where
108 Q: Serialize + ?Sized,
109 {
110 self.client
111 .get_with_query(
112 format!("/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints").as_str(),
113 &query,
114 )
115 .await
116 }
117}