Skip to main content

openai_core/resources/
evals.rs

1//! Eval namespace implementations.
2
3use 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    /// 创建 eval。
14    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    /// 获取 eval。
25    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    /// 更新 eval。
37    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    /// 列出 evals。
49    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    /// 删除 eval。
55    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    /// 返回 runs 子资源。
67    pub fn runs(&self) -> EvalRunsResource {
68        EvalRunsResource::new(self.client.clone())
69    }
70}
71
72impl EvalRunsResource {
73    /// 创建 eval run。
74    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    /// 获取 eval run。
86    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    /// 列出 eval runs。
103    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    /// 删除 eval run。
114    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    /// 取消 eval run。
131    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    /// 返回 output_items 子资源。
148    pub fn output_items(&self) -> EvalRunOutputItemsResource {
149        EvalRunOutputItemsResource::new(self.client.clone())
150    }
151}
152
153impl EvalRunOutputItemsResource {
154    /// 获取 output item。
155    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    /// 列出 output items。
178    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}