diff --git a/module/ai/config.php b/module/ai/config.php index a0e49248ec..cbde4f0531 100644 --- a/module/ai/config.php +++ b/module/ai/config.php @@ -4,7 +4,7 @@ $config->ai->vendorList['openai']['requiredFields'] = array('key'); $config->ai->vendorList['azure']['requiredFields'] = array('key', 'resource', 'deployment'); $config->ai->vendorList['baidu']['requiredFields'] = array('key', 'secret'); -$config->ai->models = array('openai-gpt35' => 'openai', 'baidu-ernie' => 'ernie'); +$config->ai->models = array('openai-gpt35' => 'openai', 'openai-gpt4' => 'openai', 'baidu-ernie' => 'ernie'); /* OpenAI GPT configurations. */ $config->ai->openai = new stdclass(); @@ -34,8 +34,8 @@ $config->ai->openai->params->completion->required = array('prompt', 'max_tokens' $config->ai->openai->params->completion->optional = array('suffix', 'temperature', 'top_p', 'n', 'stream', 'logprobs', 'echo', 'stop', 'presence_penalty', 'frequency_penalty', 'best_of', 'logit_bias', 'user'); $config->ai->openai->model = new stdclass(); -$config->ai->openai->model->chat = 'gpt-3.5-turbo'; -$config->ai->openai->model->function = 'gpt-3.5-turbo'; +$config->ai->openai->model->chat = array('openai-gpt35' => 'gpt-3.5-turbo', 'openai-gpt4' => 'gpt-4-1106-preview'); +$config->ai->openai->model->function = array('openai-gpt35' => 'gpt-3.5-turbo', 'openai-gpt4' => 'gpt-4-1106-preview'); $config->ai->openai->model->completion = 'gpt-3.5-turbo-instruct'; $config->ai->openai->contentTypeMapping = array('Content-Type: application/json' => array('', 'function', 'chat', 'completion'), 'Content-Type: multipart/form-data' => array()); diff --git a/module/ai/control.php b/module/ai/control.php index c78d98c849..77e7f34bc4 100644 --- a/module/ai/control.php +++ b/module/ai/control.php @@ -145,7 +145,7 @@ class ai extends control $this->ai->setConfig($modelConfig); - if($this->config->ai->models[$modelConfig->type] == 'ernie' || $currentVendor == 'azure') + if($this->config->ai->models[$modelConfig->type] == 'ernie' || $currentVendor == 'azure' || $modelConfig->type == 'openai-gpt4') { $messages = array((object)array('role' => 'user', 'content' => 'test')); $result = $this->ai->converse($messages, array('maxTokens' => 1)); diff --git a/module/ai/lang/de.php b/module/ai/lang/de.php index 4def0cad05..606dd5434d 100644 --- a/module/ai/lang/de.php +++ b/module/ai/lang/de.php @@ -433,12 +433,17 @@ $lang->ai->models->statusList['off'] = 'Disable'; $lang->ai->models->typeList = array(); $lang->ai->models->typeList['openai-gpt35'] = 'OpenAI / GPT-3.5'; +$lang->ai->models->typeList['openai-gpt4'] = 'OpenAI / GPT-4'; $lang->ai->models->typeList['baidu-ernie'] = 'Baidu / ERNIE'; $lang->ai->models->vendorList = new stdclass(); $lang->ai->models->vendorList->{'openai-gpt35'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); +$lang->ai->models->vendorList->{'openai-gpt4'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); $lang->ai->models->vendorList->{'baidu-ernie'} = array('baidu' => 'Baidu Qianfan LLM Platform'); +$lang->ai->models->vendorTips = new stdclass(); +$lang->ai->models->vendorTips->azure = 'OpenAI GPT version is specified during model deployment creation on Azure.'; + $lang->ai->models->proxyTypes = array(); $lang->ai->models->proxyTypes[''] = 'No Proxy'; $lang->ai->models->proxyTypes['socks5'] = 'SOCKS5'; diff --git a/module/ai/lang/en.php b/module/ai/lang/en.php index 4def0cad05..606dd5434d 100644 --- a/module/ai/lang/en.php +++ b/module/ai/lang/en.php @@ -433,12 +433,17 @@ $lang->ai->models->statusList['off'] = 'Disable'; $lang->ai->models->typeList = array(); $lang->ai->models->typeList['openai-gpt35'] = 'OpenAI / GPT-3.5'; +$lang->ai->models->typeList['openai-gpt4'] = 'OpenAI / GPT-4'; $lang->ai->models->typeList['baidu-ernie'] = 'Baidu / ERNIE'; $lang->ai->models->vendorList = new stdclass(); $lang->ai->models->vendorList->{'openai-gpt35'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); +$lang->ai->models->vendorList->{'openai-gpt4'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); $lang->ai->models->vendorList->{'baidu-ernie'} = array('baidu' => 'Baidu Qianfan LLM Platform'); +$lang->ai->models->vendorTips = new stdclass(); +$lang->ai->models->vendorTips->azure = 'OpenAI GPT version is specified during model deployment creation on Azure.'; + $lang->ai->models->proxyTypes = array(); $lang->ai->models->proxyTypes[''] = 'No Proxy'; $lang->ai->models->proxyTypes['socks5'] = 'SOCKS5'; diff --git a/module/ai/lang/fr.php b/module/ai/lang/fr.php index 4def0cad05..606dd5434d 100644 --- a/module/ai/lang/fr.php +++ b/module/ai/lang/fr.php @@ -433,12 +433,17 @@ $lang->ai->models->statusList['off'] = 'Disable'; $lang->ai->models->typeList = array(); $lang->ai->models->typeList['openai-gpt35'] = 'OpenAI / GPT-3.5'; +$lang->ai->models->typeList['openai-gpt4'] = 'OpenAI / GPT-4'; $lang->ai->models->typeList['baidu-ernie'] = 'Baidu / ERNIE'; $lang->ai->models->vendorList = new stdclass(); $lang->ai->models->vendorList->{'openai-gpt35'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); +$lang->ai->models->vendorList->{'openai-gpt4'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); $lang->ai->models->vendorList->{'baidu-ernie'} = array('baidu' => 'Baidu Qianfan LLM Platform'); +$lang->ai->models->vendorTips = new stdclass(); +$lang->ai->models->vendorTips->azure = 'OpenAI GPT version is specified during model deployment creation on Azure.'; + $lang->ai->models->proxyTypes = array(); $lang->ai->models->proxyTypes[''] = 'No Proxy'; $lang->ai->models->proxyTypes['socks5'] = 'SOCKS5'; diff --git a/module/ai/lang/zh-cn.php b/module/ai/lang/zh-cn.php index 95c69903ad..bff67e99be 100644 --- a/module/ai/lang/zh-cn.php +++ b/module/ai/lang/zh-cn.php @@ -433,12 +433,17 @@ $lang->ai->models->statusList['off'] = '停用'; $lang->ai->models->typeList = array(); $lang->ai->models->typeList['openai-gpt35'] = 'OpenAI / GPT-3.5'; +$lang->ai->models->typeList['openai-gpt4'] = 'OpenAI / GPT-4'; $lang->ai->models->typeList['baidu-ernie'] = '百度 / 文心一言'; $lang->ai->models->vendorList = new stdclass(); $lang->ai->models->vendorList->{'openai-gpt35'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); +$lang->ai->models->vendorList->{'openai-gpt4'} = array('openai' => 'OpenAI', 'azure' => 'Azure'); $lang->ai->models->vendorList->{'baidu-ernie'} = array('baidu' => '百度千帆大模型平台'); +$lang->ai->models->vendorTips = new stdclass(); +$lang->ai->models->vendorTips->azure = 'Azure 中 OpenAI GPT 版本 (3.5 或 4) 需要在创建资源时指定。'; + $lang->ai->models->proxyTypes = array(); $lang->ai->models->proxyTypes[''] = '不使用代理'; $lang->ai->models->proxyTypes['socks5'] = 'SOCKS5'; diff --git a/module/ai/model.php b/module/ai/model.php index 076c769099..769afd328a 100644 --- a/module/ai/model.php +++ b/module/ai/model.php @@ -238,8 +238,12 @@ class aiModel extends model { $modelType = $this->config->ai->models[$this->modelConfig->type]; + /* Models of the same type may differ in version, in which case they are stored as an array. */ + $modelName = $this->config->ai->$modelType->model->$type; + if(is_array($modelName)) $modelName = $modelName[$this->modelConfig->type]; + $postData = new stdclass(); - $postData->model = $this->config->ai->$modelType->model->$type; + $postData->model = $modelName; $data = static::standardizeParams($data); diff --git a/module/ai/view/editmodel.html.php b/module/ai/view/editmodel.html.php index 1d820f539c..f86ceaa9c2 100644 --- a/module/ai/view/editmodel.html.php +++ b/module/ai/view/editmodel.html.php @@ -16,36 +16,43 @@ $requiredFields = $config->ai->vendorList[$currentVendor]['requiredFields']; if(empty($requiredFields)) $requiredFields = array(); js::set('vendorList', $config->ai->vendorList); js::set('vendorListLang', $lang->ai->models->vendorList); +js::set('vendorTipsLang', $lang->ai->models->vendorTips); ?>