async_openai/
eval_runs.rs1use serde::Serialize;
2
3use crate::{
4 config::Config,
5 error::OpenAIError,
6 eval_run_output_items::EvalRunOutputItems,
7 types::evals::{CreateEvalRunRequest, DeleteEvalRunResponse, EvalRun, EvalRunList},
8 Client,
9};
10
11pub struct EvalRuns<'c, C: Config> {
12 client: &'c Client<C>,
13 pub eval_id: String,
14}
15
16impl<'c, C: Config> EvalRuns<'c, C> {
17 pub fn new(client: &'c Client<C>, eval_id: &str) -> Self {
18 Self {
19 client,
20 eval_id: eval_id.into(),
21 }
22 }
23
24 pub fn output_items(&self, run_id: &str) -> EvalRunOutputItems<'_, C> {
26 EvalRunOutputItems::new(self.client, &self.eval_id, run_id)
27 }
28
29 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
31 pub async fn list<Q>(&self, query: &Q) -> Result<EvalRunList, OpenAIError>
32 where
33 Q: Serialize + ?Sized,
34 {
35 self.client
36 .get_with_query(&format!("/evals/{}/runs", self.eval_id), &query)
37 .await
38 }
39
40 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
42 pub async fn create(&self, request: CreateEvalRunRequest) -> Result<EvalRun, OpenAIError> {
43 self.client
44 .post(&format!("/evals/{}/runs", self.eval_id), request)
45 .await
46 }
47
48 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
50 pub async fn retrieve(&self, run_id: &str) -> Result<EvalRun, OpenAIError> {
51 self.client
52 .get(&format!("/evals/{}/runs/{}", self.eval_id, run_id))
53 .await
54 }
55
56 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
58 pub async fn cancel(&self, run_id: &str) -> Result<EvalRun, OpenAIError> {
59 self.client
60 .post(
61 &format!("/evals/{}/runs/{}", self.eval_id, run_id),
62 serde_json::json!({}),
63 )
64 .await
65 }
66
67 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
69 pub async fn delete(&self, run_id: &str) -> Result<DeleteEvalRunResponse, OpenAIError> {
70 self.client
71 .delete(&format!("/evals/{}/runs/{}", self.eval_id, run_id))
72 .await
73 }
74}