Skip to main content

outfox_openai/spec/evals/
api.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5
6/// Sort order for listing evals.
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
8#[serde(rename_all = "lowercase")]
9pub enum ListEvalsOrder {
10    /// Ascending order
11    Asc,
12    /// Descending order
13    Desc,
14}
15
16/// Order by field for listing evals.
17#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
18#[serde(rename_all = "snake_case")]
19pub enum ListEvalsOrderBy {
20    /// Order by creation time
21    CreatedAt,
22    /// Order by last updated time
23    UpdatedAt,
24}
25
26/// Query parameters for listing evals.
27#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
28#[builder(name = "ListEvalsQueryArgs")]
29#[builder(pattern = "mutable")]
30#[builder(setter(into, strip_option), default)]
31#[builder(derive(Debug))]
32#[builder(build_fn(error = "OpenAIError"))]
33pub struct ListEvalsQuery {
34    /// Identifier for the last eval from the previous pagination request.
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub after: Option<String>,
37    /// Number of evals to retrieve.
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub limit: Option<u32>,
40    /// Sort order for evals by timestamp. Use `asc` for ascending order or `desc` for descending
41    /// order.
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub order: Option<ListEvalsOrder>,
44    /// Evals can be ordered by creation time or last updated time. Use `created_at` for creation
45    /// time or `updated_at` for last updated time.
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub order_by: Option<ListEvalsOrderBy>,
48}
49
50/// Sort order for getting eval runs.
51#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
52#[serde(rename_all = "lowercase")]
53pub enum GetEvalRunsOrder {
54    /// Ascending order
55    Asc,
56    /// Descending order
57    Desc,
58}
59
60/// Status filter for eval runs.
61#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
62#[serde(rename_all = "snake_case")]
63pub enum GetEvalRunsStatus {
64    /// Queued status
65    Queued,
66    /// In progress status
67    InProgress,
68    /// Completed status
69    Completed,
70    /// Canceled status
71    Canceled,
72    /// Failed status
73    Failed,
74}
75
76/// Query parameters for getting eval runs.
77#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
78#[builder(name = "GetEvalRunsQueryArgs")]
79#[builder(pattern = "mutable")]
80#[builder(setter(into, strip_option), default)]
81#[builder(derive(Debug))]
82#[builder(build_fn(error = "OpenAIError"))]
83pub struct GetEvalRunsQuery {
84    /// Identifier for the last run from the previous pagination request.
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub after: Option<String>,
87    /// Number of runs to retrieve.
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub limit: Option<u32>,
90    /// Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending
91    /// order. Defaults to `asc`.
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub order: Option<GetEvalRunsOrder>,
94    /// Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` |
95    /// `canceled`.
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub status: Option<GetEvalRunsStatus>,
98}
99
100/// Sort order for getting eval run output items.
101#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
102#[serde(rename_all = "lowercase")]
103pub enum GetEvalRunOutputItemsOrder {
104    /// Ascending order
105    Asc,
106    /// Descending order
107    Desc,
108}
109
110/// Status filter for eval run output items.
111#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
112#[serde(rename_all = "lowercase")]
113pub enum GetEvalRunOutputItemsStatus {
114    /// Failed status
115    Fail,
116    /// Pass status
117    Pass,
118}
119
120/// Query parameters for getting eval run output items.
121#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
122#[builder(name = "GetEvalRunOutputItemsQueryArgs")]
123#[builder(pattern = "mutable")]
124#[builder(setter(into, strip_option), default)]
125#[builder(derive(Debug))]
126#[builder(build_fn(error = "OpenAIError"))]
127pub struct GetEvalRunOutputItemsQuery {
128    /// Identifier for the last output item from the previous pagination request.
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub after: Option<String>,
131    /// Number of output items to retrieve.
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub limit: Option<u32>,
134    /// Filter output items by status. Use `failed` to filter by failed output items or `pass` to
135    /// filter by passed output items.
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub status: Option<GetEvalRunOutputItemsStatus>,
138    /// Sort order for output items by timestamp. Use `asc` for ascending order or `desc` for
139    /// descending order. Defaults to `asc`.
140    #[serde(skip_serializing_if = "Option::is_none")]
141    pub order: Option<GetEvalRunOutputItemsOrder>,
142}