Skip to main content

openai_interface/evals/runs/
delete.rs

1//! Delete an eval run via `DELETE /evals/{eval_id}/runs/{run_id}`.
2//!
3//! > ![warn] This module is untested!
4//! > If you encounter any issues, please report them on the repository.
5
6use url::Url;
7
8use crate::{
9    errors::OapiError,
10    rest::delete::{Delete, DeleteNoStream},
11};
12
13/// Deletes an eval run by its ID.
14#[derive(Debug, Clone)]
15pub struct DeleteEvalRunRequest<'a> {
16    /// The ID of the eval, e.g. `eval_...`.
17    pub eval_id: &'a str,
18    /// The ID of the run to delete, e.g. `evalrun_...`.
19    pub run_id: &'a str,
20}
21
22impl Delete for DeleteEvalRunRequest<'_> {
23    /// Builds the URL for the request.
24    ///
25    /// `base_url` should be like <https://api.openai.com/v1>
26    fn build_url(&self, base_url: &str) -> Result<String, OapiError> {
27        let mut url = Url::parse(base_url.trim_end_matches('/')).map_err(OapiError::UrlError)?;
28        url.path_segments_mut()
29            .map_err(|_| OapiError::UrlCannotBeBase(base_url.to_string()))?
30            .push("evals")
31            .push(self.eval_id)
32            .push("runs")
33            .push(self.run_id);
34        Ok(url.to_string())
35    }
36}
37
38impl DeleteNoStream for DeleteEvalRunRequest<'_> {
39    type Response = DeleteEvalRunResponse;
40}
41
42/// The response of an eval run deletion.
43#[derive(Debug, Clone, serde::Deserialize)]
44pub struct DeleteEvalRunResponse {
45    /// The ID of the run that was deleted.
46    pub id: String,
47    /// Whether the run was deleted successfully.
48    pub deleted: bool,
49    /// The object type (`eval.run.deleted`), if the provider sends
50    /// it.
51    #[serde(default)]
52    pub object: Option<String>,
53}
54
55crate::impl_from_str!(DeleteEvalRunResponse);