PHPAPI内容审核怎么接入

wen PHP项目 15

本文目录导读:

PHPAPI内容审核怎么接入

  1. 百度AI内容审核接入
  2. 阿里云内容安全
  3. 通用封装接口
  4. 集成到Laravel框架
  5. 注意事项

我来详细说明PHP接入内容审核API的方法,以百度AI内容审核和阿里云内容安全为例。

百度AI内容审核接入

前期准备

// 1. 安装SDK
composer require baidu-aip/php-sdk

代码实现

<?php
require_once 'vendor/autoload.php';
use AipContentCensor;
class ContentModeration {
    private $client;
    public function __construct($appId, $apiKey, $secretKey) {
        $this->client = new AipContentCensor($appId, $apiKey, $secretKey);
    }
    // 文本审核
    public function textCensor($text) {
        try {
            $result = $this->client->textCensorUserDefined($text);
            // 解析结果
            if ($result['conclusionType'] == 1) {
                return ['passed' => true, 'message' => '审核通过'];
            } elseif ($result['conclusionType'] == 2) {
                return ['passed' => false, 'message' => '内容违规'];
            } else {
                return ['passed' => false, 'message' => '需要人工审核'];
            }
        } catch (Exception $e) {
            return ['passed' => false, 'message' => $e->getMessage()];
        }
    }
    // 图片审核
    public function imageCensor($imagePath) {
        try {
            $image = file_get_contents($imagePath);
            $result = $this->client->imageCensorUserDefined($image, 'BASE64');
            return $this->parseResult($result);
        } catch (Exception $e) {
            return ['passed' => false, 'message' => $e->getMessage()];
        }
    }
    private function parseResult($result) {
        if ($result['conclusionType'] == 1) {
            return ['passed' => true, 'message' => '审核通过'];
        } else {
            $errorMsg = $result['data'][0]['msg'] ?? '内容违规';
            return ['passed' => false, 'message' => $errorMsg];
        }
    }
}
// 使用示例
$moderation = new ContentModeration('your_app_id', 'your_api_key', 'your_secret_key');
$result = $moderation->textCensor('测试内容');
print_r($result);

安全

前期准备

// 1. 安装SDK
composer require alibabacloud/green
// 2. 配置阿里云AccessKey

代码实现

<?php
require_once 'vendor/autoload.php';
use AlibabaCloud\Green\Green;
use AlibabaCloud\Client\AlibabaCloud;
class AliyunContentModeration {
    private $client;
    public function __construct($accessKeyId, $accessKeySecret) {
        AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
            ->regionId('cn-shanghai')
            ->asDefaultClient();
        $this->client = new Green();
    }
    // 文本审核
    public function textModeration($content) {
        try {
            $result = $this->client->textScan()
                ->withTasks([[
                    'dataId' => uniqid(),
                    'content' => $content
                ]])
                ->withScenes(['antispam']) // 场景:反垃圾
                ->request();
            $body = $result->toArray();
            return $this->handleResult($body);
        } catch (Exception $e) {
            return ['passed' => false, 'message' => $e->getMessage()];
        }
    }
    // 图片审核
    public function imageModeration($imageUrl) {
        try {
            $result = $this->client->imageScan()
                ->withTasks([[
                    'dataId' => uniqid(),
                    'url' => $imageUrl
                ]])
                ->withScenes(['porn', 'terrorism', 'ad']) // 审核场景
                ->request();
            $body = $result->toArray();
            return $this->handleResult($body);
        } catch (Exception $e) {
            return ['passed' => false, 'message' => $e->getMessage()];
        }
    }
    private function handleResult($body) {
        if (isset($body['data'][0]['results'])) {
            $results = $body['data'][0]['results'];
            foreach ($results as $item) {
                if ($item['suggestion'] !== 'pass') {
                    return [
                        'passed' => false,
                        'label' => $item['label'],
                        'message' => '内容违规:' . $item['label']
                    ];
                }
            }
            return ['passed' => true, 'message' => '审核通过'];
        }
        return ['passed' => false, 'message' => '审核异常'];
    }
}
// 使用示例
$moderation = new AliyunContentModeration('your_access_key_id', 'your_access_key_secret');
$result = $moderation->textModeration('需要审核的文本内容');

通用封装接口

<?php
interface ContentModerationInterface {
    public function textCheck($content);
    public function imageCheck($imageUrl);
    public function videoCheck($videoUrl);
}
class ContentModerationService implements ContentModerationInterface {
    private $provider;
    public function __construct($provider = 'baidu') {
        $this->provider = $provider;
        $this->initProvider();
    }
    private function initProvider() {
        switch ($this->provider) {
            case 'baidu':
                $this->client = new AipContentCensor(
                    getenv('BAIDU_APP_ID'),
                    getenv('BAIDU_API_KEY'),
                    getenv('BAIDU_SECRET_KEY')
                );
                break;
            case 'aliyun':
                // 初始化阿里云客户端
                break;
            default:
                throw new Exception('Unsupported provider');
        }
    }
    public function textCheck($content) {
        // 具体实现...
    }
    public function imageCheck($imageUrl) {
        // 具体实现...
    }
    public function videoCheck($videoUrl) {
        // 具体实现...
    }
}

集成到Laravel框架

<?php
// config/contentmoderation.php
return [
    'default' => env('CONTENT_MODERATION_PROVIDER', 'baidu'),
    'providers' => [
        'baidu' => [
            'app_id' => env('BAIDU_APP_ID'),
            'api_key' => env('BAIDU_API_KEY'),
            'secret_key' => env('BAIDU_SECRET_KEY'),
        ],
        'aliyun' => [
            'access_key_id' => env('ALIYUN_ACCESS_KEY_ID'),
            'access_key_secret' => env('ALIYUN_ACCESS_KEY_SECRET'),
        ],
    ],
];
// 在控制器中使用
use App\Services\ContentModerationService;
class PostController extends Controller {
    public function store(Request $request) {
        $moderation = new ContentModerationService();
        $result = $moderation->textCheck($request->input('content'));
        if (!$result['passed']) {
            return response()->json([
                'success' => false,
                'message' => '内容审核未通过:' . $result['message']
            ], 422);
        }
        // 审核通过,继续处理
    }
}

注意事项

  1. API密钥安全:不要将API密钥硬编码在代码中,使用环境变量
  2. 错误处理:做好异常捕获和日志记录
  3. 并发处理:考虑队列处理大量审核请求
  4. 缓存策略:对重复内容可以缓存审核结果
  5. 白名单机制可以设置白名单跳过审核

这样,你就可以在PHP项目中快速集成内容审核功能了。

抱歉,评论功能暂时关闭!