AI Engine Moderating Image Generation

This code runs a free OpenAI moderation check against both the query sent to your image generator as well as the generated image itself. Anything that scores above your thresholds gets rejected.

<?php

// Define minimum thresholds for each category - scale of 0.0 to 1.0
$GLOBALS['safety_thresholds'] = array(
    'sexual' => 0.015,
    'sexual/minors' => 0.01,
    'harassment' => 0.015,
    'harassment/threatening' => 0.015,
    'hate' => 0.015,
    'hate/threatening' => 0.015,
    'illicit' => 0.015,
    'illicit/violent' => 0.015,
    'self-harm' => 0.015,
    'self-harm/intent' => 0.015,
    'self-harm/instructions' => 0.015,
    'violence' => 0.015,
    'violence/graphic' => 0.015
);

add_filter('mwai_ai_query', function($query) {
    if ($query instanceof Meow_MWAI_Query_Image) {
        global $mwai_core;
        $openai = Meow_MWAI_Engines_Factory::get_openai( $mwai_core );
        $result = $openai->execute('POST', '/moderations', [
            'model' => 'omni-moderation-latest',
            'input' => $query->message
        ]);
        if ( !empty( $result ) && !empty( $result['results'] ) ) {
            $scores = $result['results'][0]['category_scores'];
            // Check if any category exceeds its threshold
            foreach ($GLOBALS['safety_thresholds'] as $category => $threshold) {
                if (isset($scores[$category]) && $scores[$category] > $threshold) {
                    $score = round($scores[$category] * 100);
                    throw new Exception(sprintf(
                        'Image query rejected - Content flagged for %s with confidence score of %d%%',
                        str_replace(['/', '-'], ' ', ucfirst($category)),
                        $score
                    ));
                }
            }
        }
    }
    return $query;
}, 10, 1);

add_filter('mwai_ai_reply', function($reply, $query) {
    if ($query instanceof Meow_MWAI_Query_Image) {
        $images = array();
        if (isset($reply->results) && is_array($reply->results)) {
            foreach ($reply->results as $result) {
                if (is_string($result) && filter_var($result, FILTER_VALIDATE_URL)) {
                    $images[] = $result;
                } elseif (is_string($result) && preg_match('/https?:\/\/[^\s<>"]+/i', $result, $matches)) {
                    $images[] = $matches[0];
                }
            }
        }
        if (isset($reply->result)) {
            if (is_string($reply->result) && filter_var($reply->result, FILTER_VALIDATE_URL)) {
                $images[] = $reply->result;
            } elseif (is_string($reply->result) && preg_match('/https?:\/\/[^\s<>"]+/i', $reply->result, $matches)) {
                $images[] = $matches[0];
            }
        }
        $images = array_unique($images);
        if (empty($images)) {
            return $reply;
        }
        $input = array();
        foreach ($images as $image) {
            $input[] = [
                'type' => 'image_url',
                'image_url' => [
                    'url' => $image
                ]
            ];
        }
        global $mwai_core;
        $openai = Meow_MWAI_Engines_Factory::get_openai( $mwai_core );
        $result = $openai->execute('POST', '/moderations', [
            'model' => 'omni-moderation-latest',
            'input' => $input
        ]);
        if ( !empty( $result ) && !empty( $result['results'] ) ) {
            $scores = $result['results'][0]['category_scores'];

            // Check if any category exceeds its threshold
            foreach ($GLOBALS['safety_thresholds'] as $category => $threshold) {
                if (isset($scores[$category]) && $scores[$category] > $threshold) {
                    $score = round($scores[$category] * 100);
                    throw new Exception(sprintf(
                        'Image rejected - Content flagged for %s with confidence score of %d%%',
                        str_replace(['/', '-'], ' ', ucfirst($category)),
                        $score
                    ));
                }
            }
        }
    }
    return $reply;
}, 10, 2);

Let’s enhance your business! I can help you develop custom AI engine extensions or broader AI strategies.

Contact me.

Leave a Reply

Your email address will not be published. Required fields are marked *