async_openai/types/graders/
grader.rs1use serde::{Deserialize, Serialize};
2
3use crate::types::{evals::EvalItem, ReasoningEffort};
4
5#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq)]
7#[serde(rename_all = "lowercase")]
8pub enum GraderStringCheckOperation {
9 Eq,
11 Ne,
13 Like,
15 Ilike,
17}
18
19#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
21pub struct GraderStringCheck {
22 pub name: String,
24 pub input: String,
26 pub reference: String,
28 pub operation: GraderStringCheckOperation,
30}
31
32#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
34pub struct GraderTextSimilarity {
35 pub name: String,
37 pub input: String,
39 pub reference: String,
41 pub evaluation_metric: GraderTextSimilarityEvaluationMetric,
43}
44
45#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq)]
47#[serde(rename_all = "snake_case")]
48pub enum GraderTextSimilarityEvaluationMetric {
49 Cosine,
50 FuzzyMatch,
51 Bleu,
52 Gleu,
53 Meteor,
54 Rouge1,
55 Rouge2,
56 Rouge3,
57 Rouge4,
58 Rouge5,
59 RougeL,
60}
61
62#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
64pub struct GraderPython {
65 pub name: String,
67 pub source: String,
69 pub image_tag: Option<String>,
71}
72
73#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
75pub struct GraderScoreModel {
76 pub name: String,
78 pub model: String,
80 pub input: Vec<EvalItem>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub sampling_params: Option<GraderScoreModelSamplingParams>,
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub range: Option<Vec<f64>>,
89}
90
91#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
92pub struct GraderScoreModelSamplingParams {
93 #[serde(skip_serializing_if = "Option::is_none")]
95 pub seed: Option<i32>,
96 #[serde(skip_serializing_if = "Option::is_none")]
98 pub top_p: Option<f64>,
99 #[serde(skip_serializing_if = "Option::is_none")]
101 pub temperature: Option<f64>,
102 #[serde(skip_serializing_if = "Option::is_none")]
104 pub max_completion_tokens: Option<i32>,
105 #[serde(skip_serializing_if = "Option::is_none")]
107 pub reasoning_effort: Option<ReasoningEffort>,
108}
109
110#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
111pub struct GraderLabelModel {
112 pub name: String,
114 pub model: String,
116 pub input: Vec<EvalItem>,
118 pub labels: Vec<String>,
120 pub passing_labels: Vec<String>,
122}
123
124#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
125#[serde(tag = "type", rename_all = "snake_case")]
126pub enum Graders {
127 StringCheck(GraderStringCheck),
128 TextSimilarity(GraderTextSimilarity),
129 Python(GraderPython),
130 ScoreModel(GraderScoreModel),
131 LabelModel(GraderLabelModel),
132}
133
134#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
135pub struct GraderMulti {
136 pub name: String,
138 pub graders: Graders,
139 pub calculate_output: String,
141}