{"id":190,"date":"2025-01-13T21:49:29","date_gmt":"2025-01-13T20:49:29","guid":{"rendered":"https:\/\/josefnemec.cz\/blog\/?p=190"},"modified":"2025-01-13T21:49:30","modified_gmt":"2025-01-13T20:49:30","slug":"vytvoreni-php-skriptu-pro-generovani-popisku-produktu-pomoci-chatgpt","status":"publish","type":"post","link":"https:\/\/josefnemec.cz\/blog\/php\/vytvoreni-php-skriptu-pro-generovani-popisku-produktu-pomoci-chatgpt\/","title":{"rendered":"Vytvo\u0159en\u00ed PHP skriptu pro generov\u00e1n\u00ed popisk\u016f produkt\u016f pomoc\u00ed ChatGPT"},"content":{"rendered":"\n<p>V tomto \u010dl\u00e1nku si uk\u00e1\u017eeme, jak vytvo\u0159it PHP skript, kter\u00fd bude vyu\u017e\u00edvat OpenAI API k automatick\u00e9mu generov\u00e1n\u00ed popisk\u016f produkt\u016f. Skript dostane jako vstup ID produktu, jeho n\u00e1zev a URL fotografie ve form\u00e1tu JSON. ChatGPT vr\u00e1t\u00ed v\u00fdsledek obsahuj\u00edc\u00ed popis produktu, kategorii a ID kategorie z p\u0159edem definovan\u00e9ho seznamu.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00edl<\/h2>\n\n\n\n<p>C\u00edlem je vytvo\u0159it PHP skript, kter\u00fd:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ode\u0161le vstupn\u00ed data (ID, n\u00e1zev, URL fotografie produktu) do OpenAI API.<\/li>\n\n\n\n<li>Z\u00edsk\u00e1 popis produktu a ur\u010d\u00ed jeho kategorii.<\/li>\n\n\n\n<li>Vr\u00e1t\u00ed ID produktu, popis, kategorii a ID kategorie.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">P\u0159\u00edprava<\/h2>\n\n\n\n<p>Ne\u017e za\u010dneme, ujist\u011bte se, \u017ee m\u00e1te:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>API kl\u00ed\u010d OpenAI<\/strong> \u2013 Z\u00edskejte jej z platformy OpenAI.<\/li>\n\n\n\n<li><strong>PHP prost\u0159ed\u00ed<\/strong> \u2013 M\u011bli byste m\u00edt nainstalovan\u00e9 PHP (verze 7.4 nebo nov\u011bj\u0161\u00ed) s podporou cURL.<\/li>\n\n\n\n<li><strong>Composer<\/strong> \u2013 N\u00e1stroj pro spr\u00e1vu PHP knihoven.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 1: Instalace OpenAI PHP knihovny<\/h2>\n\n\n\n<p>Nainstalujte knihovnu pro pr\u00e1ci s OpenAI API pomoc\u00ed Composeru:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer require openai-php\/client\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 2: Struktura projektu<\/h2>\n\n\n\n<p>Vytvo\u0159te si projektovou strukturu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>project\/\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 categories.php\n\u2502   \u2514\u2500\u2500 generateDescription.php\n\u251c\u2500\u2500 composer.json\n\u2514\u2500\u2500 index.php\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 3: Definice kategori\u00ed<\/h2>\n\n\n\n<p>V souboru <code>src\/categories.php<\/code> nadefinujte seznam kategori\u00ed jako asociativn\u00ed pole:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nreturn &#91;\n    1 =&gt; 'Electronics',\n    2 =&gt; 'Home &amp; Kitchen',\n    3 =&gt; 'Books',\n    4 =&gt; 'Toys &amp; Games',\n    5 =&gt; 'Clothing',\n    \/\/ Dal\u0161\u00ed kategorie podle pot\u0159eby\n];\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 4: Skript pro generov\u00e1n\u00ed popisk\u016f<\/h2>\n\n\n\n<p>Vytvo\u0159te soubor <code>src\/generateDescription.php<\/code> s funkc\u00ed pro vol\u00e1n\u00ed OpenAI API:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nrequire_once __DIR__ . '\/..\/vendor\/autoload.php';\nuse OpenAI\\Client;\n\nfunction generateProductDescription($product, $apiKey)\n{\n    $client = Client::factory(&#91;\n        'api_key' => $apiKey,\n    ]);\n\n    $categories = require __DIR__ . '\/categories.php';\n\n    $prompt = \"You are an AI assistant. Given the following product details, generate a description and assign a category ID from the predefined list in czech:\\n\\n\" .\n        \"Product ID: {$product&#91;'id']}\\n\" .\n        \"Product Name: {$product&#91;'name']}\\n\" .\n        \"Image URL: {$product&#91;'image']}\\n\\n\" .\n        \"Categories:\\n\" . implode(\"\\n\", array_map(fn($id, $name) => \"$id: $name\", array_keys($categories), $categories)) .\n        \"\\n\\nRespond in JSON format with 'id', 'description', and 'category_id'.\";\n\n    $response = $client->chat()->create(&#91;\n        'model' => 'gpt-4', \/\/ Nebo 'gpt-3.5-turbo'\n        'messages' => &#91;\n            &#91;'role' => 'system', 'content' => 'You are a helpful assistant.'],\n            &#91;'role' => 'user', 'content' => $prompt],\n        ],\n    ]);\n\n    return json_decode($response&#91;'choices']&#91;0]&#91;'message']&#91;'content'], true);\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 5: Hlavn\u00ed skript<\/h2>\n\n\n\n<p>Vytvo\u0159te <code>index.php<\/code> jako vstupn\u00ed bod aplikace:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nrequire_once __DIR__ . '\/vendor\/autoload.php';\nrequire_once __DIR__ . '\/src\/generateDescription.php';\n\n$apiKey = 'tv\u016fj_openai_api_kl\u00ed\u010d'; \/\/ Nahra\u010f vlastn\u00edm kl\u00ed\u010dem\n\n$product = &#91;\n    'id' =&gt; 101,\n    'name' =&gt; 'Smartphone XYZ',\n    'image' =&gt; 'https:\/\/example.com\/images\/smartphone_xyz.jpg',\n];\n\n$result = generateProductDescription($product, $apiKey);\n\necho \"&lt;pre&gt;\";\nprint_r($result);\necho \"&lt;\/pre&gt;\";\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 6: Testov\u00e1n\u00ed<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Spus\u0165te PHP server: <code>php -S localhost:8000<\/code><\/li>\n\n\n\n<li>Otev\u0159ete prohl\u00ed\u017ee\u010d a nav\u0161tivte <code>http:\/\/localhost:8000\/<\/code>.<\/li>\n\n\n\n<li>Skript vr\u00e1t\u00ed data ve form\u00e1tu: <code>{ \"id\": 101, \"description\": \"This is a high-quality smartphone with a sleek design...\", \"category_id\": 1 }<\/code><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Z\u00e1v\u011br<\/h2>\n\n\n\n<p>Tento skript demonstruje, jak snadno lze vyu\u017e\u00edt OpenAI API k automatizaci generov\u00e1n\u00ed obsahu. Pokud chcete skript roz\u0161\u00ed\u0159it, m\u016f\u017eete p\u0159idat ulo\u017een\u00ed v\u00fdsledk\u016f do datab\u00e1ze nebo zpracov\u00e1n\u00ed v\u00edce produkt\u016f najednou.<\/p>\n\n\n\n<p>Nev\u00e1hejte m\u011b kontaktovat, pokud byste pot\u0159ebovali dal\u0161\u00ed rady nebo pomoc s implementac\u00ed!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>V tomto \u010dl\u00e1nku si uk\u00e1\u017eeme, jak vytvo\u0159it PHP skript, kter\u00fd bude vyu\u017e\u00edvat OpenAI API k automatick\u00e9mu generov\u00e1n\u00ed popisk\u016f produkt\u016f. Skript dostane jako vstup ID produktu, jeho n\u00e1zev a URL fotografie ve form\u00e1tu JSON. ChatGPT vr\u00e1t\u00ed v\u00fdsledek obsahuj\u00edc\u00ed popis produktu, kategorii<\/p>\n","protected":false},"author":1,"featured_media":192,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4,77,60],"tags":[47,10,49,50,48],"class_list":["post-190","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","category-technologie","category-vzdelavani","tag-php","tag-php8","tag-programovani","tag-vyvoj","tag-webdesign"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/josefnemec.cz\/blog\/wp-content\/uploads\/2025\/01\/DALL%C2%B7E-2025-01-13-21.46.16-A-funny-and-creative-scene-where-an-Alien-a-typical-xenomorph-is-programming-on-a-high-tech-computer-with-PHP-code-on-the-screen.-The-Alien-is-sitti.webp?fit=1024%2C1024&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/comments?post=190"}],"version-history":[{"count":1,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/190\/revisions"}],"predecessor-version":[{"id":193,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/190\/revisions\/193"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media\/192"}],"wp:attachment":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media?parent=190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/categories?post=190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/tags?post=190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}