diff --git a/app/Jobs/Form/GenerateAiForm.php b/app/Jobs/Form/GenerateAiForm.php index 3e19a3e..86125f4 100644 --- a/app/Jobs/Form/GenerateAiForm.php +++ b/app/Jobs/Form/GenerateAiForm.php @@ -3,11 +3,9 @@ namespace App\Jobs\Form; use App\Console\Commands\GenerateTemplate; -use App\Http\Requests\AiGenerateFormRequest; use App\Models\Forms\AI\AiFormCompletion; use App\Service\OpenAi\GptCompleter; use Illuminate\Bus\Queueable; -use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; @@ -40,6 +38,7 @@ class GenerateAiForm implements ShouldQueue ]); $completer = (new GptCompleter(config('services.openai.api_key'))) + ->useStreaming() ->setSystemMessage('You are a robot helping to generate forms.'); try { @@ -53,29 +52,11 @@ class GenerateAiForm implements ShouldQueue 'result' => $this->cleanOutput($completer->getArray()) ]); } catch (\Exception $e) { - $this->completion->update([ - 'status' => AiFormCompletion::STATUS_FAILED, - 'result' => ['error' => $e->getMessage()] - ]); + $this->onError($e); } } - 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 @@ -85,4 +66,19 @@ class GenerateAiForm implements ShouldQueue return $formData; } + + /** + * Handle a job failure. + */ + public function failed(\Throwable $exception): void + { + $this->onError($exception); + } + + private function onError(\Throwable $e) { + $this->completion->update([ + 'status' => AiFormCompletion::STATUS_FAILED, + 'result' => ['error' => $e->getMessage()] + ]); + } } diff --git a/vite.config.js b/vite.config.js index d5d52e9..2aea756 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,4 +1,4 @@ -import {defineConfig} from 'vite' +import { defineConfig } from 'vite' import laravel from 'laravel-vite-plugin' import vue from '@vitejs/plugin-vue2' import { sentryVitePlugin } from '@sentry/vite-plugin' @@ -7,8 +7,7 @@ const plugins = [ laravel({ input: [ 'resources/js/app.js' - ], - valetTls: 'opnform.test' + ] }), vue({ template: {