completion->update([ 'status' => AiFormCompletion::STATUS_PROCESSING ]); $completer = (new GptCompleter(config('services.openai.api_key'))) ->setSystemMessage('You are a robot helping to generate forms.'); try { $completer->completeChat([ ["role" => "user", "content" => Str::of(GenerateTemplate::FORM_STRUCTURE_PROMPT) ->replace('[REPLACE]', $this->completion->form_prompt)->toString()] ], 3000); $this->completion->update([ 'status' => AiFormCompletion::STATUS_COMPLETED, 'result' => $this->cleanOutput($completer->getArray()) ]); } catch (\Exception $e) { $this->completion->update([ 'status' => AiFormCompletion::STATUS_FAILED, 'result' => $e->getMessage() ]); } } public function generateForm(AiGenerateFormRequest $request) { $completer = (new GptCompleter(config('services.openai.api_key'))) ->setSystemMessage('You are a robot helping to generate forms.'); $completer->completeChat([ ["role" => "user", "content" => Str::of(GenerateTemplate::FORM_STRUCTURE_PROMPT) ->replace('[REPLACE]', $request->form_prompt)->toString()] ], 3000); return $this->success([ 'message' => 'Form successfully generated!', 'form' => $this->cleanOutput($completer->getArray()) ]); } private function cleanOutput($formData) { // Add property uuids foreach ($formData['properties'] as &$property) { $property['id'] = Str::uuid()->toString(); } return $formData; } }