Skip to main content

uarp_sdk/generated/api/
evaluations.rs

1// Code generated by @uarp/codegen from spec/openapi.json. DO NOT EDIT.
2//!
3//! Agent evaluation datasets and runs
4
5#![allow(unused_imports, clippy::too_many_arguments)]
6
7use reqwest::Method;
8use serde::{Deserialize, Serialize};
9
10use crate::client::{Client, Request, NO_BODY, NO_QUERY};
11use crate::error::Result;
12use crate::generated::models;
13use crate::multipart::{field_text, FilePart};
14use crate::util::encode_path;
15
16/// Agent evaluation datasets and runs
17#[derive(Debug, Clone)]
18pub struct EvaluationsApi {
19    pub(crate) client: Client,
20}
21
22impl Client {
23    /// Agent evaluation datasets and runs
24    pub fn evaluations(&self) -> EvaluationsApi {
25        EvaluationsApi { client: self.clone() }
26    }
27}
28
29impl EvaluationsApi {
30    /// Create custom webhook scorer
31    ///
32    /// `POST /api/v1/agents/{agentId}/scorers`
33    ///
34    /// Required scopes: `evaluations:write`.
35    pub async fn create_agent_scorer(&self, agent_id: &str, body: &serde_json::Map<String, serde_json::Value>) -> Result<serde_json::Map<String, serde_json::Value>> {
36        self.client
37            .request_json(Request {
38                method: Method::POST,
39                path: format!("/api/v1/agents/{}/scorers", encode_path(agent_id)),
40                query: NO_QUERY,
41                body: Some(body),
42                headers: Vec::new(),
43                idempotent: true,
44            })
45            .await
46    }
47
48    /// Create an evaluation dataset
49    ///
50    /// `POST /api/v1/agents/{agentId}/datasets`
51    ///
52    /// Required scopes: `evaluations:write`.
53    pub async fn create_dataset(&self, agent_id: &str, body: &models::CreateDatasetRequest) -> Result<serde_json::Value> {
54        self.client
55            .request_json(Request {
56                method: Method::POST,
57                path: format!("/api/v1/agents/{}/datasets", encode_path(agent_id)),
58                query: NO_QUERY,
59                body: Some(body),
60                headers: Vec::new(),
61                idempotent: true,
62            })
63            .await
64    }
65
66    /// Create an evaluation experiment
67    ///
68    /// Creates an experiment to compare evaluation results across multiple agent versions.
69    ///
70    /// `POST /api/v1/agents/{agentId}/experiments`
71    ///
72    /// Required scopes: `evaluations:write`.
73    pub async fn create_experiment(&self, agent_id: &str, body: &models::CreateExperimentRequest) -> Result<models::Experiment> {
74        self.client
75            .request_json(Request {
76                method: Method::POST,
77                path: format!("/api/v1/agents/{}/experiments", encode_path(agent_id)),
78                query: NO_QUERY,
79                body: Some(body),
80                headers: Vec::new(),
81                idempotent: true,
82            })
83            .await
84    }
85
86    /// Get evaluation dataset details
87    ///
88    /// `GET /api/v1/agents/{agentId}/datasets/{datasetId}`
89    ///
90    /// Required scopes: `evaluations:read`.
91    pub async fn get_dataset(&self, agent_id: &str, dataset_id: &str) -> Result<serde_json::Value> {
92        self.client
93            .request_json(Request {
94                method: Method::GET,
95                path: format!("/api/v1/agents/{}/datasets/{}", encode_path(agent_id), encode_path(dataset_id)),
96                query: NO_QUERY,
97                body: NO_BODY,
98                headers: Vec::new(),
99                idempotent: false,
100            })
101            .await
102    }
103
104    /// Get evaluation run results
105    ///
106    /// `GET /api/v1/agents/{agentId}/evaluations/{evalRunId}`
107    ///
108    /// Required scopes: `evaluations:read`.
109    pub async fn get_eval_run(&self, agent_id: &str, eval_run_id: &str) -> Result<serde_json::Value> {
110        self.client
111            .request_json(Request {
112                method: Method::GET,
113                path: format!("/api/v1/agents/{}/evaluations/{}", encode_path(agent_id), encode_path(eval_run_id)),
114                query: NO_QUERY,
115                body: NO_BODY,
116                headers: Vec::new(),
117                idempotent: false,
118            })
119            .await
120    }
121
122    /// Get experiment details
123    ///
124    /// `GET /api/v1/agents/{agentId}/experiments/{experimentId}`
125    ///
126    /// Required scopes: `evaluations:read`.
127    pub async fn get_experiment(&self, agent_id: &str, experiment_id: &str) -> Result<models::Experiment> {
128        self.client
129            .request_json(Request {
130                method: Method::GET,
131                path: format!("/api/v1/agents/{}/experiments/{}", encode_path(agent_id), encode_path(experiment_id)),
132                query: NO_QUERY,
133                body: NO_BODY,
134                headers: Vec::new(),
135                idempotent: false,
136            })
137            .await
138    }
139
140    /// List custom evaluation scorers
141    ///
142    /// `GET /api/v1/agents/{agentId}/scorers`
143    ///
144    /// Required scopes: `evaluations:read`.
145    pub async fn list_agent_scorers(&self, agent_id: &str) -> Result<models::ListAgentScorersResponse> {
146        self.client
147            .request_json(Request {
148                method: Method::GET,
149                path: format!("/api/v1/agents/{}/scorers", encode_path(agent_id)),
150                query: NO_QUERY,
151                body: NO_BODY,
152                headers: Vec::new(),
153                idempotent: false,
154            })
155            .await
156    }
157
158    /// List evaluation datasets for an agent
159    ///
160    /// `GET /api/v1/agents/{agentId}/datasets`
161    ///
162    /// Required scopes: `evaluations:read`.
163    pub async fn list_datasets(&self, agent_id: &str) -> Result<models::ListDatasetsResponse> {
164        self.client
165            .request_json(Request {
166                method: Method::GET,
167                path: format!("/api/v1/agents/{}/datasets", encode_path(agent_id)),
168                query: NO_QUERY,
169                body: NO_BODY,
170                headers: Vec::new(),
171                idempotent: false,
172            })
173            .await
174    }
175
176    /// List evaluation runs for an agent
177    ///
178    /// `GET /api/v1/agents/{agentId}/evaluations`
179    ///
180    /// Required scopes: `evaluations:read`.
181    pub async fn list_eval_runs(&self, agent_id: &str) -> Result<models::ListEvalRunsResponse> {
182        self.client
183            .request_json(Request {
184                method: Method::GET,
185                path: format!("/api/v1/agents/{}/evaluations", encode_path(agent_id)),
186                query: NO_QUERY,
187                body: NO_BODY,
188                headers: Vec::new(),
189                idempotent: false,
190            })
191            .await
192    }
193
194    /// Run an evaluation suite against an agent
195    ///
196    /// `POST /api/v1/agents/{agentId}/evaluations`
197    ///
198    /// Required scopes: `evaluations:write`.
199    pub async fn run(&self, agent_id: &str, body: &models::RunEvaluationRequest) -> Result<serde_json::Value> {
200        self.client
201            .request_json(Request {
202                method: Method::POST,
203                path: format!("/api/v1/agents/{}/evaluations", encode_path(agent_id)),
204                query: NO_QUERY,
205                body: Some(body),
206                headers: Vec::new(),
207                idempotent: true,
208            })
209            .await
210    }
211}