pub struct Moderations { /* private fields */ }Expand description
Client for interacting with the OpenAI Moderations API.
This struct provides methods to classify text content for potential
policy violations. Use Moderations::new() to create a new instance.
§Example
use openai_tools::moderations::request::{Moderations, ModerationModel};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let moderations = Moderations::new()?;
// Check content with a specific model
let response = moderations
.moderate_text("Some text to check", Some(ModerationModel::OmniModerationLatest))
.await?;
for result in &response.results {
println!("Flagged: {}", result.flagged);
}
Ok(())
}Implementations§
Source§impl Moderations
impl Moderations
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Creates a new Moderations client for OpenAI API.
Initializes the client by loading the OpenAI API key from
the environment variable OPENAI_API_KEY. Supports .env file loading
via dotenvy.
§Returns
Ok(Moderations)- A new Moderations client ready for useErr(OpenAIToolError)- If the API key is not found in the environment
§Example
use openai_tools::moderations::request::Moderations;
let moderations = Moderations::new().expect("API key should be set");Sourcepub fn with_auth(auth: AuthProvider) -> Self
pub fn with_auth(auth: AuthProvider) -> Self
Creates a new Moderations client with a custom authentication provider
Sourcepub fn detect_provider() -> Result<Self>
pub fn detect_provider() -> Result<Self>
Creates a new Moderations client by auto-detecting the provider
Sourcepub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
pub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
Creates a new Moderations client with URL-based provider detection
Sourcepub fn from_url<S: Into<String>>(url: S) -> Result<Self>
pub fn from_url<S: Into<String>>(url: S) -> Result<Self>
Creates a new Moderations client from URL using environment variables
Sourcepub fn auth(&self) -> &AuthProvider
pub fn auth(&self) -> &AuthProvider
Returns the authentication provider
Sourcepub async fn moderate_text(
&self,
text: &str,
model: Option<ModerationModel>,
) -> Result<ModerationResponse>
pub async fn moderate_text( &self, text: &str, model: Option<ModerationModel>, ) -> Result<ModerationResponse>
Moderates a single text string.
Classifies the input text to determine if it violates OpenAI’s content policy.
§Arguments
text- The text content to moderatemodel- Optional model to use (defaults toomni-moderation-latest)
§Returns
Ok(ModerationResponse)- The moderation resultsErr(OpenAIToolError)- If the request fails or response parsing fails
§Example
use openai_tools::moderations::request::Moderations;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let moderations = Moderations::new()?;
let response = moderations.moderate_text("Hello, world!", None).await?;
let result = &response.results[0];
if result.flagged {
println!("Content was flagged!");
println!("Hate score: {}", result.category_scores.hate);
}
Ok(())
}Sourcepub async fn moderate_texts(
&self,
texts: Vec<String>,
model: Option<ModerationModel>,
) -> Result<ModerationResponse>
pub async fn moderate_texts( &self, texts: Vec<String>, model: Option<ModerationModel>, ) -> Result<ModerationResponse>
Moderates multiple text strings.
Classifies multiple input texts in a single request.
§Arguments
texts- Vector of text strings to moderatemodel- Optional model to use (defaults toomni-moderation-latest)
§Returns
Ok(ModerationResponse)- The moderation results (one result per input)Err(OpenAIToolError)- If the request fails or response parsing fails
§Example
use openai_tools::moderations::request::Moderations;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let moderations = Moderations::new()?;
let texts = vec![
"First text to check".to_string(),
"Second text to check".to_string(),
];
let response = moderations.moderate_texts(texts, None).await?;
for (i, result) in response.results.iter().enumerate() {
println!("Text {}: flagged = {}", i + 1, result.flagged);
}
Ok(())
}Auto Trait Implementations§
impl Freeze for Moderations
impl RefUnwindSafe for Moderations
impl Send for Moderations
impl Sync for Moderations
impl Unpin for Moderations
impl UnwindSafe for Moderations
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more