1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// src/api/moderations.rs
//! This module defines the `Moderations` API client, which provides methods
//! for interacting with the `OpenAI` Moderation API.
//!
//! For more details, refer to the [`OpenAI` Moderation API documentation](https://platform.openai.com/docs/api-reference/moderations).
/// Define a private namespace for all its items.
mod private
{
// Use crate root for base access
use crate::
{
client ::Client,
error ::Result,
environment ::{ OpenaiEnvironment, EnvironmentInterface },
};
use crate::components::moderations::
{
CreateModerationResponse,
};
// External crates
/// The client for the `OpenAI` Moderation API.
#[ derive( Debug, Clone ) ]
pub struct Moderations< 'client, E >
where
E : OpenaiEnvironment + EnvironmentInterface + Send + Sync + 'static,
{
client : &'client Client< E >,
}
impl< 'client, E > Moderations< 'client, E >
where
E : OpenaiEnvironment + EnvironmentInterface + Send + Sync + 'static,
{
/// Creates a new `Moderations` client.
///
/// # Arguments
/// - `client`: The core `OpenAI` `Client` to use for requests.
#[ inline ]
pub(crate) fn new( client : &'client Client< E > ) -> Self
{
Self { client }
}
/// Classifies if text violates `OpenAI`'s content policy.
///
/// # Arguments
/// - `request`: The request body for moderation.
///
/// # Errors
/// Returns `OpenAIError` if the request fails.
#[ inline ]
pub async fn create( &self, request : serde_json::Value ) -> Result< CreateModerationResponse >
{
self.client.post( "moderations", &request ).await
}
}
} // end mod private
crate ::mod_interface!
{
// Expose all structs defined in this module
exposed use
{
Moderations,
};
}