portkey_sdk/model/
moderations.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Serialize, Deserialize)]
16pub struct CreateModerationRequest {
17 pub input: ModerationInput,
19
20 #[serde(skip_serializing_if = "Option::is_none")]
23 pub model: Option<String>,
24}
25
26impl Default for CreateModerationRequest {
27 fn default() -> Self {
28 Self {
29 input: ModerationInput::String(String::new()),
30 model: Some("text-moderation-latest".to_string()),
31 }
32 }
33}
34
35#[derive(Clone, Debug, Serialize, Deserialize)]
37#[serde(untagged)]
38pub enum ModerationInput {
39 String(String),
40 Array(Vec<String>),
41}
42
43impl From<String> for ModerationInput {
44 fn from(s: String) -> Self {
45 ModerationInput::String(s)
46 }
47}
48
49impl From<&str> for ModerationInput {
50 fn from(s: &str) -> Self {
51 ModerationInput::String(s.to_string())
52 }
53}
54
55impl From<Vec<String>> for ModerationInput {
56 fn from(v: Vec<String>) -> Self {
57 ModerationInput::Array(v)
58 }
59}
60
61#[derive(Clone, Debug, Serialize, Deserialize)]
63pub struct ModerationResponse {
64 pub id: String,
66
67 pub model: String,
69
70 pub results: Vec<ModerationResult>,
72}
73
74#[derive(Clone, Debug, Serialize, Deserialize)]
76pub struct ModerationResult {
77 pub flagged: bool,
79
80 pub categories: ModerationCategories,
82
83 pub category_scores: ModerationCategoryScores,
85}
86
87#[derive(Clone, Debug, Serialize, Deserialize)]
89pub struct ModerationCategories {
90 pub hate: bool,
92
93 #[serde(rename = "hate/threatening")]
95 pub hate_threatening: bool,
96
97 pub harassment: bool,
99
100 #[serde(rename = "harassment/threatening")]
102 pub harassment_threatening: bool,
103
104 #[serde(rename = "self-harm")]
106 pub self_harm: bool,
107
108 #[serde(rename = "self-harm/intent")]
110 pub self_harm_intent: bool,
111
112 #[serde(rename = "self-harm/instructions")]
114 pub self_harm_instructions: bool,
115
116 pub sexual: bool,
118
119 #[serde(rename = "sexual/minors")]
121 pub sexual_minors: bool,
122
123 pub violence: bool,
125
126 #[serde(rename = "violence/graphic")]
128 pub violence_graphic: bool,
129}
130
131#[derive(Clone, Debug, Serialize, Deserialize)]
133pub struct ModerationCategoryScores {
134 pub hate: f64,
136
137 #[serde(rename = "hate/threatening")]
139 pub hate_threatening: f64,
140
141 pub harassment: f64,
143
144 #[serde(rename = "harassment/threatening")]
146 pub harassment_threatening: f64,
147
148 #[serde(rename = "self-harm")]
150 pub self_harm: f64,
151
152 #[serde(rename = "self-harm/intent")]
154 pub self_harm_intent: f64,
155
156 #[serde(rename = "self-harm/instructions")]
158 pub self_harm_instructions: f64,
159
160 pub sexual: f64,
162
163 #[serde(rename = "sexual/minors")]
165 pub sexual_minors: f64,
166
167 pub violence: f64,
169
170 #[serde(rename = "violence/graphic")]
172 pub violence_graphic: f64,
173}