diff --git a/app/Helpers/FirstParty/OpenAI/OpenAI.php b/app/Helpers/FirstParty/OpenAI/OpenAI.php index efd77a3..7dddb80 100644 --- a/app/Helpers/FirstParty/OpenAI/OpenAI.php +++ b/app/Helpers/FirstParty/OpenAI/OpenAI.php @@ -8,13 +8,15 @@ class OpenAI { - public static function writeProductArticle($excerpt, $photos) + public static function writeProductArticle($excerpt, $photos, $categories) { //$excerpt = substr($excerpt, 0, 1500); + $category_str = implode("|", $categories); + $system_prompt = ' You are tasked with writing a comprehensive product introduction & review article using the provided excerpt. Write as if you are reviewing the product by a third party, but no pronouns.The emphasis should be on the performance, features, and notable aspects of the product. The review must not delve into marketplace-related information. Return the output in the following json format:\n\n - {"title": "(Article Title, start with product name, 60-70 characters)","excerpt": "(One sentence summary, 150-160 characters of an article, do not use start sentence with verb.)","cliffhanger": "(One sentence 70-80 characters of article, cliff-hanging sentence to attract readers)","body": "(Markdown format, 700-900 word count)"}\n\n + {"category":"('. $category_str .')","title": "(Article Title, start with product name, 60-70 characters)","excerpt": "(One sentence summary, 150-160 characters of an article, do not use start sentence with verb.)","cliffhanger": "(One sentence 70-80 characters of article, cliff-hanging sentence to attract readers)","body": "(Markdown format, 700-900 word count)"}\n\n Mandatory Requirements:\n - Write in US grade 8-9 English\n - Use the following sections whenever applicable:\n @@ -26,6 +28,7 @@ public static function writeProductArticle($excerpt, $photos) - do not make up facts, use facts provided by excerpt only\n - No article titles inside markdown\n - All article sections use ### + - Pick the closest given category '; diff --git a/app/Jobs/Tasks/GenerateShopeeAIArticleTask.php b/app/Jobs/Tasks/GenerateShopeeAIArticleTask.php index 92ef562..946dfec 100644 --- a/app/Jobs/Tasks/GenerateShopeeAIArticleTask.php +++ b/app/Jobs/Tasks/GenerateShopeeAIArticleTask.php @@ -10,6 +10,7 @@ use App\Models\AiWriteup; use App\Models\Post; use App\Models\PostCategory; +use App\Models\Category; use App\Models\ShopeeSellerCategory; use App\Models\ShopeeSellerScrape; use App\Models\ShopeeSellerScrapedImage; @@ -54,7 +55,15 @@ public static function handle(ShopeeSellerScrape $shopee_seller_scrape) $ai_writeup = AiWriteup::where('source', 'shopee')->where('source_url', $shopee_task->product_task->response->url)->first(); if (is_null($ai_writeup)) { - $ai_output = OpenAI::writeProductArticle($excerpt, $photos); + + $categories = [ + 'Beauty', + 'Technology', + 'Home & Living', + 'Health & Fitness' + ]; + + $ai_output = OpenAI::writeProductArticle($excerpt, $photos, $categories); //dd($ai_output); @@ -65,11 +74,19 @@ public static function handle(ShopeeSellerScrape $shopee_seller_scrape) inspector()->reportException($e); throw ($e); } else { + + $picked_category = Category::where('name', $ai_output->category)->where('country_locale_id', $shopee_seller_scrape->category->country_locale_id)->first(); + + if (is_null($picked_category)) + { + $picked_category = $shopee_seller_scrape->category; + } + // save $ai_writeup = new AiWriteup; $ai_writeup->source = 'shopee'; $ai_writeup->source_url = $shopee_task->product_task->response->url; - $ai_writeup->category_id = $shopee_seller_scrape->category->id; + $ai_writeup->category_id = $picked_category->category->id; $ai_writeup->title = $ai_output->title; $ai_writeup->excerpt = $ai_output->excerpt; $ai_writeup->featured_image = ''; @@ -120,7 +137,7 @@ public static function handle(ShopeeSellerScrape $shopee_seller_scrape) PostCategory::create([ 'post_id' => $post->id, - 'category_id' => $shopee_seller_scrape->category->id, + 'category_id' => $picked_category->id, ]); if (app()->environment() == 'production') {