cloudstudio/token-usage

这是我的包 token-usage

dev-main 2024-01-08 14:38 UTC

This package is auto-updated.

Last update: 2024-09-10 10:03:57 UTC


README

Token-Usage 是一个 Laravel 包,为 Laravel 应用提供了高级令牌管理功能。它提供了跟踪令牌使用情况、根据不同时间段设置令牌限制以及轻松将这些检查集成到 Laravel 应用程序中的功能。此包非常适合希望高效管理和监控 Laravel 项目中令牌消耗的开发者。

主要思想是跟踪和管理 AI 服务的令牌使用情况。例如,如果 SaaS 平台为 1000 个令牌收费 10 美元,则此包可以有效地监控和管理令牌消耗。它与 OpenAI、ollama 等增强功能一起工作非常完美。

安装

composer require cloudstudio/token-usage

配置

发布包配置文件

php artisan vendor:publish --tag="token-usage-config"

这将发布一个具有以下结构的配置文件

return [
    'model_mappings' => [
        'user' => \App\Models\User::class,
        // Add more model mappings here
    ],
    'plans' => [
        'basic' => [
            'model_limits' => [
                'user' => [
                    'daily' => 1,
                    'weekly' => 5,
                    'monthly' => 10,
                    'yearly' => 100,
                ],
                // Define more model limits here
            ],
        ],
        'premium' => [
            // Define premium plan limits...
        ],
    ],
];

此外,发布包的迁移

php artisan vendor:publish --tag="token-usage-migrations"

这些迁移将在您的数据库中创建表以存储令牌使用数据。迁移与 UUID 兼容。如果您的应用程序不使用 UUID,您可以相应地修改迁移文件。

用户设置

为了正确运行此包,您的 users 表需要有一个 plan 字段。您可以通过创建新的迁移或在您的 User 模型中创建新的访问器来添加此字段。例如,要创建新的迁移,请运行以下命令

php artisan make:migration add_plan_to_users_table

如果您更喜欢使用模型访问器,请向您的 User 模型添加以下方法

public function getPlanAttribute()
{
    return 'basic';
}

在迁移文件中,添加 plan 字段,如下所示

Schema::table('users', function (Blueprint $table) {
    $table->string('plan')->default('basic');
});

此字段用于确定与每个用户关联的令牌限制计划。此设置是可选的,但建议为了完全功能而启用。

使用方法

基本用法

首先,请记住将 HasTokenUsage 特性添加到您的模型中。此特性可以与任何模型一起使用。

namespace App\Models;

use Cloudstudio\TokenUsage\Traits\TokenUsageTrait;

class User extends Authenticatable
{
    use TokenUsageTrait;
    // Other model methods and properties
}

在此设置下,您就可以使用令牌了。以下是一些示例

// Access a model record
$project = Project::first();

// Add tokens
$project->addTokens(3);

// Remove tokens
$project->removeTokens(3);

// Reset tokens
$project->resetTokens();

// Show token records
$tokensToday = $project->dailyTokens();
$tokensThisWeek = $project->weeklyTokens();
$tokensThisMonth = $project->monthlyTokens();
$tokensThisYear = $project->yearlyTokens();

// Show token usage sum
$tokensUsedToday = $project->dailyTokens()->sum("tokens_used");

// Show token usage per model

$tokensPerModel = Project::getDailyTokens();

对于 blade 指令、中间件和表单,您可以使用 2 个参数。

1º 参数:模型名称。 (video, user)。2º 参数:计划名称。 (daily, weekly, monthly, yearly)。

此信息存储在配置文件中。

所有记录都分配了 user_id,因此如果您直接使用 user 作为模型,则可以获取所有模型的所有用户的记录,因此您可以知道用户总共使用了多少令牌。

Blade 指令

轻松检查 Blade 模板中的令牌可用性

@hasTokenUsage('video', 'daily')
    I have tokens
@endHasTokenUsage

路由中间件

使用令牌使用中间件保护路由

Route::get('/test-token-usage', function () {
    return response()->json(['message' => 'You have tokens available!']);
})->middleware('check-token-usage:video,daily');

表单请求验证

在表单请求中验证令牌使用情况

$request->validate([
    'field' => [new \Cloudstudio\TokenUsage\Rules\TokenUsageRule('video', 'daily')],
]);

测试

使用 Pest PHP 运行测试

pest

变更日志、贡献和安全

鸣谢

许可证

此包是开源软件,许可协议为 MIT 许可证