generateRequestId(); LogLlmRequest::dispatch( userId: $userId, provider: $provider, model: $model, requestPayload: $requestPayload, responsePayload: $responsePayload, promptTokens: $responsePayload['usage']['prompt_tokens'] ?? 0, completionTokens: $responsePayload['usage']['completion_tokens'] ?? 0, totalTokens: $responsePayload['usage']['total_tokens'] ?? 0, responseTimeMs: $responseTimeMs, promptCost: $costs['prompt_cost'], completionCost: $costs['completion_cost'], totalCost: $costs['total_cost'], status: 'success', errorMessage: null, httpStatus: 200, ipAddress: $ipAddress, userAgent: $userAgent, requestId: $requestId ); return $requestId; } /** * Log a failed LLM request */ public function logFailure( int $userId, string $provider, string $model, array $requestPayload, string $errorMessage, int $httpStatus, ?string $ipAddress = null, ?string $userAgent = null ): string { $requestId = $this->generateRequestId(); LogLlmRequest::dispatch( userId: $userId, provider: $provider, model: $model, requestPayload: $requestPayload, responsePayload: null, promptTokens: 0, completionTokens: 0, totalTokens: 0, responseTimeMs: null, promptCost: 0.0, completionCost: 0.0, totalCost: 0.0, status: 'failed', errorMessage: $errorMessage, httpStatus: $httpStatus, ipAddress: $ipAddress, userAgent: $userAgent, requestId: $requestId ); return $requestId; } /** * Generate unique request ID */ private function generateRequestId(): string { return 'req_' . Str::random(24); } }