openAIService = $openAIService; } public function generateText(Request $request) { info($request); $request->validate([ 'tab_active' => 'required|string', 'prompt' => 'required|string', ]); $tab_active = $request->input('tab_active'); $main_content = match ($tab_active) { "count-retribusi" => "RETRIBUTION", "document-validation" => "DOCUMENT VALIDATION", "data-information" => "DATA SUMMARY", default => "UNKNOWN", }; if ($main_content === "UNKNOWN") { return response()->json(['response' => 'Invalid tab_active value.'], 400); } info($main_content); // Klasifikasi apakah pertanyaan butuh database atau bisa dijawab langsung $classifyResponse = $this->openAIService->generateClassifyMainContent($request->input('prompt'), $main_content); if ($classifyResponse === "DATABASE") { $queryResponse = $this->openAIService->generateQueryBasedMainContent($request->input('prompt'), $main_content); if (is_array($queryResponse)) { info('Query Response is an array: ', $queryResponse); } else { info('Query Response is a string: ' . $queryResponse); } // Validasi query dua kali sebelum eksekusi if ( $this->openAIService->validateSyntaxQuery($queryResponse) === "VALID" && $this->openAIService->validateSyntaxQuery($queryResponse) === "VALID" ) { info($queryResponse); $queryResponse = str_replace(['```sql', '```'], '', $queryResponse); $resultQuery = DB::select($queryResponse); $formattedResultQuery = json_encode($resultQuery, JSON_PRETTY_PRINT); $nlpResult = $this->openAIService->generateNLPFromQuery($request->input('prompt'), $formattedResultQuery); $finalGeneratedText =$this->openAIService->generateFinalText($nlpResult); return response()->json(['response' => $finalGeneratedText]); } return response()->json(['response' => ''], 400); } if ($classifyResponse === "GENERAL") { $nlpResult = $this->openAIService->generateGeneralText($request->input('prompt'), $main_content); $finalGeneratedText =$this->openAIService->generateFinalText($nlpResult); return response()->json(['response' => $finalGeneratedText]); } return response()->json(['response' => ''], 500); } private function classifyContent(string $prompt) { $classifyResponse = $this->openAIService->generateClassifyContent($prompt); return $classifyResponse; } }