Files
WebWizard/docs/prompts/step13.md

3.5 KiB

Krok 13 - Architektúra promptov a DAIAPI klient

Kontext projektu

Systém využíva lokálne DAIAPI na generovanie textového obsahu (JSON content layer). AI nesmie generovať HTML, ale štruktúrované dáta podľa dodaného promptu.

Pred implementáciou si preštuduj

  • docs/mvp.md - Sekcia 7 (AI workflow).
  • docs/architecture.md - Sekcia 10 (AI workflow).

Cieľ

Implementovať klienta pre DAIAPI a vytvoriť generátor promptov, ktorý na základe wizard_data pripraví zadanie pre AI.

Požadované zmeny

  1. Vytvorenie triedy App\Services\DAIClient v src/Services/DAIClient.php:
    • Metóda sendRequest(string $prompt): ?string (použitie curl alebo file_get_contents pre POST na lokalne API).
    • Spracovanie odpovede a ošetrenie timeoutov.
  2. Vytvorenie triedy App\Prompts\ContentPrompt v src/Prompts/ContentPrompt.php:
    • Metóda generate(array $wizardData): string.
    • Prompt musí obsahovať:
      • Kontext projektu.
      • Inštrukcie pre "Content Layer" (SEO, Hero, Služby, atď.).
      • Striktný zákaz HTML výstupu.
      • Príklad požadovaného JSON formátu.
      • Vstupné fakty z wizard_data.

Implementačné pravidlá

  • Prompt musí byť v slovenskom jazyku (alebo podľa wizard_data.language).
  • Klient musí logovať chyby komunikácie s API.
  • Použi systémovú premennú alebo konfiguračný súbor pre URL DAIAPI.

Súbory ktoré je potrebné vytvoriť

  • src/Services/DAIClient.php
  • src/Prompts/ContentPrompt.php

Súbory ktoré je potrebné upraviť

Žiadne.

API a dátové štruktúry

DAIAPI je proprietarne API, ktore sa da pouzivat volanim na VPN adresu 10.2.8.1 a port 9001, prakticka implementacia v PHP:

function daiAPIrun(string $prompt): ?string
{
    $url = "http://192.168.122.10:9001/run";
    $payload = json_encode([
        "prompt" => $prompt
    ]);
    if ($payload === false) {
        return null;
    }
    $ch = curl_init($url);
    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 => 60,
    ]);
    $response = curl_exec($ch);
    if ($response === false) {
        curl_close($ch);
        return null;
    }
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($httpCode !== 200) {
        return null;
    }
    $data = json_decode($response, true);
    if (!is_array($data)) {
        return null;
    }
    // očakávame: { "success": true, "answer": "...", ... }
    if (empty($data["success"]) || !isset($data["answer"])) {
        return null;
    }
    return $data["answer"];
}

Frontend požiadavky

Nerelevantné.

Backend požiadavky

  • Povolené rozšírenie curl v PHP.

Testovací scenár

  1. Vytvor testovací skript, ktorý vygeneruje prompt pre mock wizard_data.
  2. Over, či prompt obsahuje všetky kľúčové informácie (názov firmy, služby).
  3. Skús (ak máš prístup k API) poslať testovací dopyt a over, či vráti validný JSON bez HTML.

Definition of Done

  • Klient pre AI je funkčný.
  • Prompt je správne navrhnutý a generuje štruktúrované zadanie.
  • Systém je pripravený na integráciu s workerom.

Obmedzenia

  • AI nesmie v žiadnom prípade generovať tagy ako <div>, <h1> a pod. v rámci content layer.

Výstup

  • zoznam vytvorených súborov
  • zoznam upravených súborov
  • stručné zhrnutie vykonaných zmien
  • prípadné otvorené problémy