<?php

use Illuminate\Support\Facades\Http;

final class QfoxaiClient
{
    public function __construct(
        private string $apiKey,
        private string $baseUrl = 'https://qfoxai.com/v1',
        private string $model = 'QFOXAI',
    ) {}

    public function chat(string $prompt, int $maxTokens = 300): array
    {
        $response = Http::withToken($this->apiKey)
            ->acceptJson()
            ->retry(2, 300)
            ->post($this->baseUrl . '/chat/completions', [
                'model' => $this->model,
                'messages' => [
                    ['role' => 'user', 'content' => $prompt],
                ],
                'max_tokens' => $maxTokens,
            ]);

        if ($response->failed()) {
            throw new RuntimeException($response->json('error.message') ?? 'QFOXAI API request failed.');
        }

        return $response->json();
    }
}

$client = new QfoxaiClient(env('QFOXAI_API_KEY'));
$response = $client->chat('Hello QFOXAI');
print_r($response['choices'][0]['message']['content'] ?? $response);