Files
embedd-hub/app/Actions/Embeddings/RecordEmbeddingUsageEvent.php
2026-05-10 13:21:24 +03:30

39 lines
1.0 KiB
PHP

<?php
namespace App\Actions\Embeddings;
use App\Models\EmbeddingUsageEvent;
use App\Models\User;
use App\Services\EmbeddingWorkbench;
use Illuminate\Contracts\Auth\Authenticatable;
class RecordEmbeddingUsageEvent
{
public function handle(
?Authenticatable $user,
EmbeddingWorkbench $workbench,
?string $selectedModel,
string $tool,
int $inputCount,
int $resultCount,
?int $tokens = null,
): ?EmbeddingUsageEvent {
if (! $user instanceof User) {
return null;
}
$model = $workbench->modelName($selectedModel);
return EmbeddingUsageEvent::query()->create([
'user_id' => $user->id,
'tool' => $tool,
'provider' => $workbench->providerName(),
'model' => $model,
'embedding_dimensions' => $workbench->dimensions($model),
'input_count' => max(0, $inputCount),
'result_count' => max(0, $resultCount),
'tokens' => $tokens,
]);
}
}