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); } public function mainGenerateText(Request $request) { // Log hanya data yang relevan info("Received prompt: " . $request->input('prompt')); // Validasi input $request->validate([ 'prompt' => 'required|string', ]); try { // Panggil service untuk generate text $response = $this->openAIService->mainGenerateText($request->input('prompt')); return response()->json(['response' => $response]); } catch (\Exception $e) { // Tangani error dan log exception \Log::error("Error generating text: " . $e->getMessage()); return response()->json([ 'error' => '' ], 500); } } }