async_openai_alt/
fine_tuning.rs1use serde::Serialize;
2
3use crate::{
4 config::Config,
5 error::OpenAIError,
6 types::{
7 CreateFineTuningJobRequest, FineTuningJob, ListFineTuningJobCheckpointsResponse,
8 ListFineTuningJobEventsResponse, ListPaginatedFineTuningJobsResponse,
9 },
10 Client,
11};
12
13pub struct FineTuning<'c, C: Config> {
17 client: &'c Client<C>,
18}
19
20impl<'c, C: Config> FineTuning<'c, C> {
21 pub fn new(client: &'c Client<C>) -> Self {
22 Self { client }
23 }
24
25 pub async fn create(
31 &self,
32 request: CreateFineTuningJobRequest,
33 ) -> Result<FineTuningJob, OpenAIError> {
34 self.client.post("/fine_tuning/jobs", request).await
35 }
36
37 pub async fn list_paginated<Q>(
39 &self,
40 query: &Q,
41 ) -> Result<ListPaginatedFineTuningJobsResponse, OpenAIError>
42 where
43 Q: Serialize + ?Sized,
44 {
45 self.client.get_with_query("/fine_tuning/jobs", query).await
46 }
47
48 pub async fn retrieve(&self, fine_tuning_job_id: &str) -> Result<FineTuningJob, OpenAIError> {
52 self.client
53 .get(format!("/fine_tuning/jobs/{fine_tuning_job_id}").as_str())
54 .await
55 }
56
57 pub async fn cancel(&self, fine_tuning_job_id: &str) -> Result<FineTuningJob, OpenAIError> {
59 self.client
60 .post(
61 format!("/fine_tuning/jobs/{fine_tuning_job_id}/cancel").as_str(),
62 (),
63 )
64 .await
65 }
66
67 pub async fn list_events<Q>(
69 &self,
70 fine_tuning_job_id: &str,
71 query: &Q,
72 ) -> Result<ListFineTuningJobEventsResponse, OpenAIError>
73 where
74 Q: Serialize + ?Sized,
75 {
76 self.client
77 .get_with_query(
78 format!("/fine_tuning/jobs/{fine_tuning_job_id}/events").as_str(),
79 query,
80 )
81 .await
82 }
83
84 pub async fn list_checkpoints<Q>(
85 &self,
86 fine_tuning_job_id: &str,
87 query: &Q,
88 ) -> Result<ListFineTuningJobCheckpointsResponse, OpenAIError>
89 where
90 Q: Serialize + ?Sized,
91 {
92 self.client
93 .get_with_query(
94 format!("/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints").as_str(),
95 query,
96 )
97 .await
98 }
99}