cloudstudio / token-usage
这是我的包 token-usage
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
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 许可证。