async_openai/
eval_run_output_items.rs

1use serde::Serialize;
2
3use crate::{
4    config::Config,
5    error::OpenAIError,
6    types::evals::{EvalRunOutputItem, EvalRunOutputItemList},
7    Client,
8};
9
10pub struct EvalRunOutputItems<'c, C: Config> {
11    client: &'c Client<C>,
12    pub eval_id: String,
13    pub run_id: String,
14}
15
16impl<'c, C: Config> EvalRunOutputItems<'c, C> {
17    pub fn new(client: &'c Client<C>, eval_id: &str, run_id: &str) -> Self {
18        Self {
19            client,
20            eval_id: eval_id.into(),
21            run_id: run_id.into(),
22        }
23    }
24
25    /// Get a list of output items for an evaluation run.
26    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
27    pub async fn list<Q>(&self, query: &Q) -> Result<EvalRunOutputItemList, OpenAIError>
28    where
29        Q: Serialize + ?Sized,
30    {
31        self.client
32            .get_with_query(
33                &format!("/evals/{}/runs/{}/output_items", self.eval_id, self.run_id),
34                &query,
35            )
36            .await
37    }
38
39    /// Get an evaluation run output item by ID.
40    #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
41    pub async fn retrieve(&self, output_item_id: &str) -> Result<EvalRunOutputItem, OpenAIError> {
42        self.client
43            .get(&format!(
44                "/evals/{}/runs/{}/output_items/{}",
45                self.eval_id, self.run_id, output_item_id
46            ))
47            .await
48    }
49}