1 line
6.7 KiB
JSON
1 line
6.7 KiB
JSON
{"repo": "blhk0532/app", "files": {"app/Services/AIService.php": {"3112171071b6827db4bc417bac24050ad6679845": {"t": 1785745765.0383706, "n": 3150, "h": "e9c950fea2007631", "c": "<?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Services;\n\nuse Illuminate\\Support\\Facades\\Http;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass AIService\n{\n private string $apiKey;\n\n private string $model;\n\n private string $baseUrl;\n\n public function __construct()\n {\n $this->apiKey = config('services.deepseek.api_key');\n $this->model = config('services.deepseek.model', 'deepseek-chat');\n $this->baseUrl = config('services.deepseek.base_url', 'https://api.deepseek.com');\n }\n\n public function chat(string $message, array $history = []): string\n {\n if (empty($this->apiKey)) {\n return 'DeepSeek API-nyckel är inte konfigurerad. Vänligen sätt DEEPSEEK_API_KEY i .env-filen.';\n }\n\n try {\n $messages = $this->buildMessages($message, $history);\n\n $response = Http::timeout(120)\n ->withHeaders([\n 'Authorization' => 'Bearer '.$this->apiKey,\n 'Content-Type' => 'application/json',\n ])\n ->post(\"{$this->baseUrl}/v1/chat/completions\", [\n 'model' => $this->model,\n 'messages' => $messages,\n 'stream' => false,\n ]);\n\n if ($response->successful()) {\n $data = $response->json();\n\n return $data['choices'][0]['message']['content'] ?? 'Inget svar mottogs';\n }\n\n Log::error('AI Service Error', ['response' => $response->body()]);\n\n return 'Tyvärr, jag stötte på ett fel. Kontrollera din DeepSeek API-nyckel.';\n\n } catch (\\Exception $e) {\n Log::error('AI Service Exception', ['error' => $e->getMessage()]);\n\n return 'Tyvärr, jag kunde inte ansluta till AI-tjänsten. Kontrollera din internetanslutning och API-nyckel.';\n }\n }\n\n public function isAvailable(): bool\n {\n if (empty($this->apiKey)) {\n return false;\n }\n\n try {\n $response = Http::timeout(5)\n ->withHeaders([\n 'Authorization' => 'Bearer '.$this->apiKey,\n ])\n ->get(\"{$this->baseUrl}/v1/models\");\n\n return $response->successful();\n } catch (\\Exception $e) {\n return false;\n }\n }\n\n private function buildMessages(string $message, array $history): array\n {\n $messages = [];\n\n $systemPrompt = [\n 'role' => 'system',\n 'content' => 'Du är en hjälpsam AI-assistent för ett svenskt boknings- och kundhanteringssystem. Du hjälper användare med frågor om kunder, bokningar, scheman och andra relaterade ämnen. Svara alltid på svenska om inte användaren ber om något annat. Var kortfattad och konkret i dina svar.',\n ];\n\n $messages[] = $systemPrompt;\n\n foreach ($history as $item) {\n $messages[] = [\n 'role' => $item['role'] ?? 'user',\n 'content' => $item['content'] ?? '',\n ];\n }\n\n $messages[] = ['role' => 'user', 'content' => $message];\n\n return $messages;\n }\n}\n"}, "61c9ce8116d489c99e091d289ede4be4d0dff943": {"t": 1785756284.9556909, "n": 3150, "h": "e9c950fea2007631", "c": "<?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Services;\n\nuse Illuminate\\Support\\Facades\\Http;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass AIService\n{\n private string $apiKey;\n\n private string $model;\n\n private string $baseUrl;\n\n public function __construct()\n {\n $this->apiKey = config('services.deepseek.api_key');\n $this->model = config('services.deepseek.model', 'deepseek-chat');\n $this->baseUrl = config('services.deepseek.base_url', 'https://api.deepseek.com');\n }\n\n public function chat(string $message, array $history = []): string\n {\n if (empty($this->apiKey)) {\n return 'DeepSeek API-nyckel är inte konfigurerad. Vänligen sätt DEEPSEEK_API_KEY i .env-filen.';\n }\n\n try {\n $messages = $this->buildMessages($message, $history);\n\n $response = Http::timeout(120)\n ->withHeaders([\n 'Authorization' => 'Bearer '.$this->apiKey,\n 'Content-Type' => 'application/json',\n ])\n ->post(\"{$this->baseUrl}/v1/chat/completions\", [\n 'model' => $this->model,\n 'messages' => $messages,\n 'stream' => false,\n ]);\n\n if ($response->successful()) {\n $data = $response->json();\n\n return $data['choices'][0]['message']['content'] ?? 'Inget svar mottogs';\n }\n\n Log::error('AI Service Error', ['response' => $response->body()]);\n\n return 'Tyvärr, jag stötte på ett fel. Kontrollera din DeepSeek API-nyckel.';\n\n } catch (\\Exception $e) {\n Log::error('AI Service Exception', ['error' => $e->getMessage()]);\n\n return 'Tyvärr, jag kunde inte ansluta till AI-tjänsten. Kontrollera din internetanslutning och API-nyckel.';\n }\n }\n\n public function isAvailable(): bool\n {\n if (empty($this->apiKey)) {\n return false;\n }\n\n try {\n $response = Http::timeout(5)\n ->withHeaders([\n 'Authorization' => 'Bearer '.$this->apiKey,\n ])\n ->get(\"{$this->baseUrl}/v1/models\");\n\n return $response->successful();\n } catch (\\Exception $e) {\n return false;\n }\n }\n\n private function buildMessages(string $message, array $history): array\n {\n $messages = [];\n\n $systemPrompt = [\n 'role' => 'system',\n 'content' => 'Du är en hjälpsam AI-assistent för ett svenskt boknings- och kundhanteringssystem. Du hjälper användare med frågor om kunder, bokningar, scheman och andra relaterade ämnen. Svara alltid på svenska om inte användaren ber om något annat. Var kortfattad och konkret i dina svar.',\n ];\n\n $messages[] = $systemPrompt;\n\n foreach ($history as $item) {\n $messages[] = [\n 'role' => $item['role'] ?? 'user',\n 'content' => $item['content'] ?? '',\n ];\n }\n\n $messages[] = ['role' => 'user', 'content' => $message];\n\n return $messages;\n }\n}\n"}}}} |