1use http::Method;
4
5use crate::generated::endpoints;
6
7use super::{
8 DeleteResponse, Eval, EvalOutputItem, EvalRun, EvalRunOutputItemsResource, EvalRunsResource,
9 EvalsResource, JsonRequestBuilder, ListRequestBuilder, encode_path_segment,
10};
11
12impl EvalsResource {
13 pub fn create(&self) -> JsonRequestBuilder<Eval> {
15 let endpoint = endpoints::evals::EVALS_CREATE;
16 JsonRequestBuilder::new(
17 self.client.clone(),
18 endpoint.id,
19 Method::POST,
20 endpoint.template,
21 )
22 }
23
24 pub fn retrieve(&self, eval_id: impl Into<String>) -> JsonRequestBuilder<Eval> {
26 let eval_id = encode_path_segment(eval_id.into());
27 let endpoint = endpoints::evals::EVALS_RETRIEVE;
28 JsonRequestBuilder::new(
29 self.client.clone(),
30 endpoint.id,
31 Method::GET,
32 endpoint.render(&[("eval_id", &eval_id)]),
33 )
34 }
35
36 pub fn update(&self, eval_id: impl Into<String>) -> JsonRequestBuilder<Eval> {
38 let eval_id = encode_path_segment(eval_id.into());
39 let endpoint = endpoints::evals::EVALS_UPDATE;
40 JsonRequestBuilder::new(
41 self.client.clone(),
42 endpoint.id,
43 Method::POST,
44 endpoint.render(&[("eval_id", &eval_id)]),
45 )
46 }
47
48 pub fn list(&self) -> ListRequestBuilder<Eval> {
50 let endpoint = endpoints::evals::EVALS_LIST;
51 ListRequestBuilder::new(self.client.clone(), endpoint.id, endpoint.template)
52 }
53
54 pub fn delete(&self, eval_id: impl Into<String>) -> JsonRequestBuilder<DeleteResponse> {
56 let eval_id = encode_path_segment(eval_id.into());
57 let endpoint = endpoints::evals::EVALS_DELETE;
58 JsonRequestBuilder::new(
59 self.client.clone(),
60 endpoint.id,
61 Method::DELETE,
62 endpoint.render(&[("eval_id", &eval_id)]),
63 )
64 }
65
66 pub fn runs(&self) -> EvalRunsResource {
68 EvalRunsResource::new(self.client.clone())
69 }
70}
71
72impl EvalRunsResource {
73 pub fn create(&self, eval_id: impl Into<String>) -> JsonRequestBuilder<EvalRun> {
75 let eval_id = encode_path_segment(eval_id.into());
76 let endpoint = endpoints::evals::EVALS_RUNS_CREATE;
77 JsonRequestBuilder::new(
78 self.client.clone(),
79 endpoint.id,
80 Method::POST,
81 endpoint.render(&[("eval_id", &eval_id)]),
82 )
83 }
84
85 pub fn retrieve(
87 &self,
88 eval_id: impl Into<String>,
89 run_id: impl Into<String>,
90 ) -> JsonRequestBuilder<EvalRun> {
91 let eval_id = encode_path_segment(eval_id.into());
92 let run_id = encode_path_segment(run_id.into());
93 let endpoint = endpoints::evals::EVALS_RUNS_RETRIEVE;
94 JsonRequestBuilder::new(
95 self.client.clone(),
96 endpoint.id,
97 Method::GET,
98 endpoint.render(&[("eval_id", &eval_id), ("run_id", &run_id)]),
99 )
100 }
101
102 pub fn list(&self, eval_id: impl Into<String>) -> ListRequestBuilder<EvalRun> {
104 let eval_id = encode_path_segment(eval_id.into());
105 let endpoint = endpoints::evals::EVALS_RUNS_LIST;
106 ListRequestBuilder::new(
107 self.client.clone(),
108 endpoint.id,
109 endpoint.render(&[("eval_id", &eval_id)]),
110 )
111 }
112
113 pub fn delete(
115 &self,
116 eval_id: impl Into<String>,
117 run_id: impl Into<String>,
118 ) -> JsonRequestBuilder<DeleteResponse> {
119 let eval_id = encode_path_segment(eval_id.into());
120 let run_id = encode_path_segment(run_id.into());
121 let endpoint = endpoints::evals::EVALS_RUNS_DELETE;
122 JsonRequestBuilder::new(
123 self.client.clone(),
124 endpoint.id,
125 Method::DELETE,
126 endpoint.render(&[("eval_id", &eval_id), ("run_id", &run_id)]),
127 )
128 }
129
130 pub fn cancel(
132 &self,
133 eval_id: impl Into<String>,
134 run_id: impl Into<String>,
135 ) -> JsonRequestBuilder<EvalRun> {
136 let eval_id = encode_path_segment(eval_id.into());
137 let run_id = encode_path_segment(run_id.into());
138 let endpoint = endpoints::evals::EVALS_RUNS_CANCEL;
139 JsonRequestBuilder::new(
140 self.client.clone(),
141 endpoint.id,
142 Method::POST,
143 endpoint.render(&[("eval_id", &eval_id), ("run_id", &run_id)]),
144 )
145 }
146
147 pub fn output_items(&self) -> EvalRunOutputItemsResource {
149 EvalRunOutputItemsResource::new(self.client.clone())
150 }
151}
152
153impl EvalRunOutputItemsResource {
154 pub fn retrieve(
156 &self,
157 eval_id: impl Into<String>,
158 run_id: impl Into<String>,
159 item_id: impl Into<String>,
160 ) -> JsonRequestBuilder<EvalOutputItem> {
161 let eval_id = encode_path_segment(eval_id.into());
162 let run_id = encode_path_segment(run_id.into());
163 let item_id = encode_path_segment(item_id.into());
164 let endpoint = endpoints::evals::EVALS_RUNS_OUTPUT_ITEMS_RETRIEVE;
165 JsonRequestBuilder::new(
166 self.client.clone(),
167 endpoint.id,
168 Method::GET,
169 endpoint.render(&[
170 ("eval_id", &eval_id),
171 ("run_id", &run_id),
172 ("item_id", &item_id),
173 ]),
174 )
175 }
176
177 pub fn list(
179 &self,
180 eval_id: impl Into<String>,
181 run_id: impl Into<String>,
182 ) -> ListRequestBuilder<EvalOutputItem> {
183 let eval_id = encode_path_segment(eval_id.into());
184 let run_id = encode_path_segment(run_id.into());
185 let endpoint = endpoints::evals::EVALS_RUNS_OUTPUT_ITEMS_LIST;
186 ListRequestBuilder::new(
187 self.client.clone(),
188 endpoint.id,
189 endpoint.render(&[("eval_id", &eval_id), ("run_id", &run_id)]),
190 )
191 }
192}