From 5055250f1b4a436ccbca25cb2bf36d9a1588e75a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Busso?= <90727999+agustinbusso@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:28:23 -0300 Subject: [PATCH 1/5] Update deprecated model for translations --- .../Handlers/LanguageTranslationHandler.php | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php b/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php index fda05562ff..e8718fe55a 100644 --- a/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php +++ b/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php @@ -18,8 +18,8 @@ public function __construct() { parent::__construct(); $this->config = [ - 'model' => 'text-davinci-003', - 'max_tokens' => 2200, + 'model' => 'gpt-3.5-turbo-16k', + 'max_tokens' => 6000, 'temperature' => 0, 'top_p' => 1, 'n' => 1, @@ -52,7 +52,10 @@ public function generatePrompt(String $type = null, String $json_list) : Object $prompt = $this->replaceLanguage($prompt, $this->targetLanguage['humanLanguage']); $prompt = $this->replaceStopSequence($prompt); $this->config['prompt'] = $prompt; - + $this->config['messages'] = [[ + 'role' => 'user', + 'content' => $prompt, + ]]; return $this; } @@ -61,17 +64,25 @@ public function execute() $listCharCount = strlen($this->json_list); $totalChars = $listCharCount * 3; $currentChunkCount = 0; + $config = $this->getConfig(); + unset($config['prompt']); $client = app(Client::class); $stream = $client - ->completions() - ->createStreamed(array_merge($this->getConfig())); + ->chat() + ->createStreamed(array_merge($config)); $fullResponse = ''; foreach ($stream as $response) { - $currentChunkCount += strlen($response->choices[0]->text); - self::sendResponse($response->choices[0]->text, $currentChunkCount, $totalChars); - $fullResponse .= $response->choices[0]->text; + if (array_key_exists('content', $response->choices[0]->toArray()['delta'])) { + $currentChunkCount += strlen($response->choices[0]->toArray()['delta']['content']); + self::sendResponse( + $response->choices[0]->toArray()['delta']['content'], + $currentChunkCount, + $totalChars + ); + $fullResponse .= $response->choices[0]->toArray()['delta']['content']; + } } return $this->formatResponse($fullResponse); From 57a3c5c3d1a0a5bc717463864accc24bbf63e1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Busso?= <90727999+agustinbusso@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:28:32 -0300 Subject: [PATCH 2/5] Fix format --- ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php | 1 + 1 file changed, 1 insertion(+) diff --git a/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php b/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php index e8718fe55a..b8a0571fa0 100644 --- a/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php +++ b/ProcessMaker/Ai/Handlers/LanguageTranslationHandler.php @@ -56,6 +56,7 @@ public function generatePrompt(String $type = null, String $json_list) : Object 'role' => 'user', 'content' => $prompt, ]]; + return $this; } From ac68b1d18ac566912b6ae1d62dfb08ef20f5011b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Busso?= <90727999+agustinbusso@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:57:04 -0300 Subject: [PATCH 3/5] Update NlqToCategory to use gtp-3.5 model instead deprecated davinci model --- .../Ai/Handlers/NlqToCategoryHandler.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php b/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php index c89c17d1dd..4f7020e154 100644 --- a/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php +++ b/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php @@ -10,7 +10,7 @@ public function __construct() { parent::__construct(); $this->config = [ - 'model' => 'text-davinci-003', + 'model' => 'gpt-3.5-turbo', 'max_tokens' => 20, 'temperature' => 0, 'top_p' => 1, @@ -34,7 +34,10 @@ public function generatePrompt(String $type = null, String $question) : Object $prompt = $this->replaceStopSequence($prompt); $prompt = $this->replaceDefaultType($prompt, $type); - $this->config['prompt'] = $prompt; + $this->config['messages'] = [[ + 'role' => 'user', + 'content' => $prompt, + ]]; return $this; } @@ -43,15 +46,17 @@ public function execute() { $client = app(Client::class); $response = $client - ->completions() - ->create(array_merge($this->getConfig())); - + ->chat() + ->create( + array_merge($this->getConfig() + ) + ); return $this->formatResponse($response); } private function formatResponse($response) { - $result = ltrim($response->choices[0]->text); + $result = ltrim($response->choices[0]->message->content); return [strtolower($result), $response->usage, $this->question]; } From 88f28aeb07d2e4f51ac5866ed661d41e1e645510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Busso?= <90727999+agustinbusso@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:57:16 -0300 Subject: [PATCH 4/5] Fix format --- ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php | 1 + 1 file changed, 1 insertion(+) diff --git a/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php b/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php index 4f7020e154..54130e07fe 100644 --- a/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php +++ b/ProcessMaker/Ai/Handlers/NlqToCategoryHandler.php @@ -51,6 +51,7 @@ public function execute() array_merge($this->getConfig() ) ); + return $this->formatResponse($response); } From 4b58ce36035341f18a22111e4052aec1405154e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Busso?= <90727999+agustinbusso@users.noreply.github.com> Date: Tue, 19 Dec 2023 13:57:33 -0300 Subject: [PATCH 5/5] Update NlqToPmql to use gtp-3.5 model instead deprecated davinci model --- ProcessMaker/Ai/Handlers/NlqToPmqlHandler.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ProcessMaker/Ai/Handlers/NlqToPmqlHandler.php b/ProcessMaker/Ai/Handlers/NlqToPmqlHandler.php index 81d43b4dc3..c2eae050f4 100644 --- a/ProcessMaker/Ai/Handlers/NlqToPmqlHandler.php +++ b/ProcessMaker/Ai/Handlers/NlqToPmqlHandler.php @@ -10,7 +10,7 @@ public function __construct() { parent::__construct(); $this->config = [ - 'model' => 'text-davinci-003', + 'model' => 'gpt-3.5-turbo', 'max_tokens' => 1900, 'temperature' => 0, 'top_p' => 1, @@ -34,7 +34,10 @@ public function generatePrompt(String $type = null, String $question) : Object $prompt = $this->replaceStopSequence($prompt); $prompt = $this->replaceWithCurrentYear($prompt); - $this->config['prompt'] = $prompt; + $this->config['messages'] = [[ + 'role' => 'user', + 'content' => $prompt, + ]]; return $this; } @@ -43,15 +46,18 @@ public function execute() { $client = app(Client::class); $response = $client - ->completions() - ->create(array_merge($this->getConfig())); + ->chat() + ->create( + array_merge($this->getConfig() + ) + ); return $this->formatResponse($response); } private function formatResponse($response) { - $result = ltrim($response->choices[0]->text); + $result = ltrim($response->choices[0]->message->content); $result = explode('Question:', $result)[0]; $result = rtrim(rtrim(str_replace("\n", '', $result))); $result = str_replace('\'', '', $result);