client = OpenAI::client(env('OPENAI_API_KEY')); } public function generateGeneralText($prompt, $mainContent) { $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ [ 'role' => 'system', 'content' => "You are an expert assistant. Your task is to generate a concise response based on the provided prompt and main content. Guidelines: - Summarize the key points in exactly 5 bullet points. - Ensure the response is clear and relevant to the prompt. - Use simple and professional language." ], ['role' => 'user', 'content' => "Prompt: $prompt \nMain Content: $mainContent"], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } public function generateClassifyMainContent($prompt, $mainContent) { $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ [ 'role' => 'system', 'content' => "You are an expert assistant in classifying questions based on whether their answers must be retrieved from a database or can be explained generally. Your task is to return one of the following two labels: - \"DATABASE\" → If the question requires specific data that can only be obtained from a database. - \"GENERAL\" → If the question can be answered without accessing a database. Consider the following context: \"$mainContent\" Respond with only one of the labels: \"DATABASE\" or \"GENERAL\"." ], ['role' => 'user', 'content' => $prompt], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } public function generateQueryBasedMainContent($prompt, $mainContent) { // Load file JSON $jsonPath = public_path('templates/contentTemplatePrompt.json'); // Sesuaikan path $jsonData = json_decode(file_get_contents($jsonPath), true); // Periksa apakah kategori ada dalam JSON if (!isset($jsonData[$mainContent])) { return "Template prompt tidak ditemukan."; } // Ambil template berdasarkan kategori $promptTemplate = $jsonData[$mainContent]['prompt']; $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ ['role' => 'system', 'content' => $promptTemplate], ['role' => 'user', 'content' => $prompt], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } public function validateSyntaxQuery($queryResponse) { $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ [ 'role' => 'system', 'content' => "You are a MariaDB SQL expert. Your task is to validate the syntax of an SQL query to ensure it follows proper MariaDB syntax rules. Guidelines: - Check for any syntax errors, missing keywords, or incorrect clause usage. - Ensure the query is well-structured and adheres to best practices. - Verify that all SQL keywords are used correctly and in the right order. - If the query is valid, respond with: \"VALID\". - If the query has issues, respond with: \"INVALID\". Always respond with either \"VALID\" or \"INVALID\"." ], ['role' => 'user', 'content' => $queryResponse], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } public function generateNLPFromQuery($inputUser, $resultQuery) { $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ [ 'role' => 'system', 'content' => "You are an expert assistant. Your task is to analyze the database query results and transform them into a human-readable answer based on the user's question. Guidelines: - Understand the user's question and extract the key intent. - Summarize or format the query results to directly answer the user's question. - Ensure the response is clear, concise, and relevant. - If the query result is empty or does not match the question, provide a polite response indicating that no data is available. Always provide a well-structured response that makes sense based on the input question." ], ['role' => 'user', 'content' => "User's question: $inputUser \nDatabase result: $resultQuery"], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } public function generateFinalText($nlpResult) { $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ [ 'role' => 'system', 'content' => "You are an expert text formatter. Your task is to take the given NLP result and format it into a structured, human-readable text suitable for rendering inside an HTML
. Guidelines: - Preserve the meaning and clarity of the content. - Use proper line breaks for readability. - If the text contains lists, convert them into bullet points. - Emphasize important keywords using tags if necessary. - Ensure the response remains clean and concise without extra explanations." ], ['role' => 'user', 'content' => "Here is the NLP result that needs formatting:\n\n$nlpResult"], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } public function mainGenerateText($prompt) { $response = $this->client->chat()->create([ 'model' => 'gpt-4o-mini', 'messages' => [ [ 'role' => 'system', 'content' => "You are an expert assistant with deep knowledge in multiple fields, including programming, data science, and business strategy. Provide clear, concise, and accurate responses." ], [ 'role' => 'user', 'content' => $prompt ], ], ]); return trim($response['choices'][0]['message']['content'] ?? 'No response'); } // 1. Buat fungsi untuk akses data advertisements // 2. Buat fungsi untuk akses data business_or_industries // 3. Buat fungsi untuk akses data customers // 4. Buat fungsi untuk akses data pbg_task // 5. Buat fungsi untuk akses data pbg_task_retribution // 6. Buat fungsi untuk akses data spatial_plannings // 7. Buat fungsi untuk akses data tourisms // 8. Buat fungsi untuk akses data umkms }