Skip to main content

async_openai/types/shared/
moderation.rs

1/// The moderation policy for the response input.
2#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
3pub struct ModerationConfigParam {
4    pub mode: ModerationMode,
5}
6
7#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
8pub enum ModerationInputType {
9    #[serde(rename = "text")]
10    Text,
11    #[serde(rename = "image")]
12    Image,
13}
14
15#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
16pub enum ModerationMode {
17    #[serde(rename = "score")]
18    Score,
19    #[serde(rename = "block")]
20    Block,
21}
22
23/// Configuration for running moderation on the input and output of this response.
24#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
25pub struct ModerationParam {
26    /// The moderation model to use for moderated completions, e.g. 'omni-moderation-latest'.
27    pub model: String,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub policy: Option<ModerationPolicyParam>,
30}
31
32/// The policy to apply to moderated response input and output.
33#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
34pub struct ModerationPolicyParam {
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub input: Option<ModerationConfigParam>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub output: Option<ModerationConfigParam>,
39}
40
41/// A moderation result produced for the response input or output.
42#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
43pub struct ModerationResultBody {
44    /// The moderation model that produced this result.
45    pub model: String,
46    /// A boolean indicating whether the content was flagged by any category.
47    pub flagged: bool,
48    /// A dictionary of moderation categories to booleans, True if the input is flagged under this category.
49    pub categories: std::collections::HashMap<String, bool>,
50    /// A dictionary of moderation categories to scores.
51    pub category_scores: std::collections::HashMap<String, f64>,
52    /// Which modalities of input are reflected by the score for each category.
53    pub category_applied_input_types: std::collections::HashMap<String, Vec<ModerationInputType>>,
54}