diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..d1293b8 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +# Production default +DAIAPI_URL=http://192.168.122.10:9001/run diff --git a/.gitignore b/.gitignore index 70ab577..b1aeafe 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ /data/llm/*.json /data/projects/*.json /data/users/*.json +/vendor/ +.env diff --git a/public/ajax.php b/public/ajax.php index 0af3aaf..dc421a9 100644 --- a/public/ajax.php +++ b/public/ajax.php @@ -4,6 +4,9 @@ declare(strict_types=1); require_once __DIR__ . '/../vendor/autoload.php'; +// Load configuration +\App\Utils\Config::load(__DIR__ . '/../.env'); + // Set headers header('Content-Type: application/json; charset=utf-8'); diff --git a/src/Prompts/ContentPrompt.php b/src/Prompts/ContentPrompt.php new file mode 100644 index 0000000..e116a3b --- /dev/null +++ b/src/Prompts/ContentPrompt.php @@ -0,0 +1,69 @@ + $val) { + $valStr = is_bool($val) ? ($val ? 'Áno' : 'Nie') : $val; + $answersStr .= "- $id: $valStr\n"; + } + + $prompt = "Si profesionálny copywriter a marketingový špecialista. Tvojou úlohou je vytvoriť obsah pre novú webovú stránku pre klienta: \"$businessName\".\n\n"; + $prompt .= "KONTEXT:\n"; + $prompt .= "- Oblasť: $group / $subcategory\n"; + $prompt .= "- Slogan: $tagline\n"; + $prompt .= "- Popis: $description\n"; + $prompt .= "- Ponúkané služby:\n$servicesStr\n"; + $prompt .= "- Doplnujúce fakty:\n$answersStr\n\n"; + + $prompt .= "POŽIADAVKY NA OBSAH:\n"; + $prompt .= "1. Píš v slovenskom jazyku, tónom, ktorý sa hodí pre daný segment (napr. priateľský pre kaviareň, profesionálny pre advokáta).\n"; + $prompt .= "2. Vytvor SEO titulok a meta popis pre domovskú stránku.\n"; + $prompt .= "3. Vytvor texty pre Hero sekciu (nadpis a podnadpis).\n"; + $prompt .= "4. Vytvor sekciu 'O nás' (cca 3 odseky).\n"; + $prompt .= "5. Rozšír popisy služieb na atraktívne marketingové texty.\n"; + $prompt .= "6. Navrhni 3-5 otázok a odpovedí pre FAQ sekciu na základe kontextu.\n\n"; + + $prompt .= "STRIKTNÉ PRAVIDLÁ:\n"; + $prompt .= "- Odpovedaj VÝHRADNE vo formáte JSON.\n"; + $prompt .= "- V žiadnom prípade NEPOUŽÍVAJ HTML tagy (žiadne
,

,

atď.).\n"; + $prompt .= "- Obsah musí byť pripravený na priame vloženie do šablóny.\n\n"; + + $prompt .= "FORMÁT ODPOVEDE (JSON):\n"; + $prompt .= "{\n"; + $prompt .= " \"seo\": { \"title\": \"...\", \"description\": \"...\" },\n"; + $prompt .= " \"hero\": { \"title\": \"...\", \"subtitle\": \"...\" },\n"; + $prompt .= " \"about\": { \"title\": \"O nás\", \"text\": \"...\" },\n"; + $prompt .= " \"services\": [\n"; + $prompt .= " { \"id\": \"...\", \"title\": \"...\", \"text\": \"...\", \"price_info\": \"...\" }\n"; + $prompt .= " ],\n"; + $prompt .= " \"faq\": [\n"; + $prompt .= " { \"question\": \"...\", \"answer\": \"...\" }\n"; + $prompt .= " ]\n"; + $prompt .= "}\n"; + + return $prompt; + } +} diff --git a/src/Services/DAIClient.php b/src/Services/DAIClient.php new file mode 100644 index 0000000..1341679 --- /dev/null +++ b/src/Services/DAIClient.php @@ -0,0 +1,72 @@ +apiUrl = $apiUrl; + } else { + $this->apiUrl = \App\Utils\Config::get('DAIAPI_URL', 'http://192.168.122.10:9001/run'); + } + } + + /** + * Sends a prompt to the DAIAPI and returns the raw answer string. + */ + public function sendRequest(string $prompt): ?string + { + $payload = json_encode([ + 'prompt' => $prompt + ]); + + if ($payload === false) { + error_log("DAIClient Error: Failed to encode JSON payload."); + return null; + } + + $ch = curl_init($this->apiUrl); + curl_setopt_array($ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json', + 'Content-Length: ' . strlen($payload) + ], + CURLOPT_POSTFIELDS => $payload, + CURLOPT_TIMEOUT => $this->timeout, + ]); + + $response = curl_exec($ch); + $error = curl_error($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($response === false) { + error_log("DAIClient Error: cURL error: $error"); + return null; + } + + if ($httpCode !== 200) { + error_log("DAIClient Error: API returned HTTP code $httpCode. Response: $response"); + return null; + } + + $data = json_decode($response, true); + if (!is_array($data) || empty($data['success']) || !isset($data['answer'])) { + error_log("DAIClient Error: Invalid API response format: " . $response); + return null; + } + + return $data['answer']; + } +} diff --git a/src/Utils/Config.php b/src/Utils/Config.php new file mode 100644 index 0000000..18b35d0 --- /dev/null +++ b/src/Utils/Config.php @@ -0,0 +1,49 @@ +sendRequest($testPrompt); +$endTime = microtime(true); + +$duration = round($endTime - $startTime, 2); + +echo PHP_EOL; + +if ($answer !== null) { + echo "[SUCCESS] Pripojenie je funkčné!" . PHP_EOL; + echo "[INFO] Čas odpovede: {$duration}s" . PHP_EOL; + echo "--- ODPOVEĎ OD AI ---" . PHP_EOL; + echo $answer . PHP_EOL; + echo "---------------------" . PHP_EOL; +} else { + echo "[ERROR] Nepodarilo sa získať odpoveď od DAIAPI." . PHP_EOL; + echo "[DEBUG] Skontrolujte, či:" . PHP_EOL; + echo "1. Ste pripojený k VPN/sieti, kde beží DAIAPI." . PHP_EOL; + echo "2. Adresa http://192.168.122.10:9001 je dostupná." . PHP_EOL; + echo "3. API server nie je preťažený." . PHP_EOL; +}