dynamo_async_openai/
batches.rs1use serde::Serialize;
12
13use crate::{
14 Client,
15 config::Config,
16 error::OpenAIError,
17 types::{Batch, BatchRequest, ListBatchesResponse},
18};
19
20pub struct Batches<'c, C: Config> {
24 client: &'c Client<C>,
25}
26
27impl<'c, C: Config> Batches<'c, C> {
28 pub fn new(client: &'c Client<C>) -> Self {
29 Self { client }
30 }
31
32 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
34 pub async fn create(&self, request: BatchRequest) -> Result<Batch, OpenAIError> {
35 self.client.post("/batches", request).await
36 }
37
38 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
40 pub async fn list<Q>(&self, query: &Q) -> Result<ListBatchesResponse, OpenAIError>
41 where
42 Q: Serialize + ?Sized,
43 {
44 self.client.get_with_query("/batches", &query).await
45 }
46
47 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
49 pub async fn retrieve(&self, batch_id: &str) -> Result<Batch, OpenAIError> {
50 self.client.get(&format!("/batches/{batch_id}")).await
51 }
52
53 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
55 pub async fn cancel(&self, batch_id: &str) -> Result<Batch, OpenAIError> {
56 self.client
57 .post(
58 &format!("/batches/{batch_id}/cancel"),
59 serde_json::json!({}),
60 )
61 .await
62 }
63}