roomies/fraudable

将您的 Laravel 应用与 AWS Fraud Detector 集成

dev-main 2024-09-22 05:00 UTC

This package is auto-updated.

Last update: 2024-09-22 05:00:49 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

Roomies Fraudable 为您的 Laravel 应用和 AWS Fraud Detector 之间提供了一层集成层。它利用事件,允许您发送/摄入事件进行训练,并在之后使用您的训练模型来预测事件。

Fraudable 为您的 Laravel 应用和 AWS Fraud Detector 提供了一层集成。它利用 Laravel 事件作为将数据摄入到模型进行训练的方式,并在收集足够数据后,对事件进行预测。它提供控制以更新事件为合法或欺诈,以改进您的模型,并使用预测数据来对您的应用中的评估进行决策。

请注意,这并非一个即插即用的欺诈检测解决方案。至少您需要配置 AWS Fraud Detector 中的事件、模型和检测器才能开始。

安装

您可以通过 Composer 安装此包

composer require roomies/fraudable

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag=fraudable

阅读配置文件以了解 AWS Fraud Detector 集成并运行提供的迁移。

php artisan migrate

入门

首先,将 Fraudable 添加到将在 AWS Fraud Detector 内部作为“实体”的模型(s)。默认情况下,我们将使用 snake-case 的全类名作为“实体”名称 - App\Models\User 将成为 app_models_user,因为 AWS Fraud Detector 只允许小写字母和下划线。

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Roomies\Fraudable\Concerns\Fraudable;

class User extends Authenticatable
{
    use Fraudable
}

接下来,创建将映射到 AWS Fraud Detector 内部事件的事件。您可以使用常规 Laravel 扩展和实现 FraudableEvent 合约。它应返回一个包含 AWS Fraud Detector 事件名称和要传递给事件的变量的 PendingEvent 实例。将提供当前 Illuminate\Http\Request 实例以用于事件变量。

namespace App\Events\Users;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Roomies\Fraudable\Contracts\FraudableEvent;
use Roomies\Fraudable\PendingEvent;

class UserCreated implements FraudableEvent
{
    /**
     * Create a new event instance.
     */
    public function __construct(public User $user)
    {
        //
    }

    /**
     * Get the fraud event representation of the event.
     */
    public function toFraudEvent(Request $request): PendingEvent
    {
        $name = Str::of($this::class)->replace('\\', '')->snake()->toString();

        return new PendingEvent(name: $name, variables: [
            'email' => $this->user->email,
            'user_agent' => $request->userAgent(),
        ]);
    }
}

在此示例中,我们也将全类名使用 snake-case,因此 App\Events\Users\UserCreated 在 AWS Fraud Detector 内部变为 app_events_users_user_created

最后,您现在可以开始摄入事件以进行训练或预测。

$user = Auth::user();

$event = new App\Events\Users\UserCreated($user);

// Simply record the event to the database - an instance of `Roomies\Fraudable\Models\FraudEvent` is returned.
$fraudEvent = $user->ingest($event);

// Immediately upload the event for training.
$user->ingest($event)->upload();

// Get a prediction for the event
$predication = $user->ingest($event)->predict('detectorId');

在您对实体做出判断时,您可以回溯更新记录的事件。

use Roomies\Fraudable\Label;

$user = Auth::user();

$user->relabel(Label::Fraudulent);