* allow making AI request through azure.

This commit is contained in:
Chenjianyu
2023-08-15 14:03:15 +08:00
parent ee8f42c269
commit de59656b2a
2 changed files with 21 additions and 6 deletions
+12 -4
View File
@@ -5,10 +5,18 @@ $config->ai->vendorList['azure']['requiredFields'] = array('key', 'resource', '
$config->ai->openai = new stdclass();
$config->ai->openai->api = new stdclass();
$config->ai->openai->api->version = 'v1'; // OpenAI API version, required.
$config->ai->openai->api->format = 'https://api.openai.com/%s/%s'; // OpenAI API format, args: API version, API name.
$config->ai->openai->api->authFormat = 'Authorization: Bearer %s'; // OpenAI API auth header format.
$config->ai->openai->api->methods = array('function' => 'chat/completions', 'chat' => 'chat/completions', 'completion' => 'completions', 'edit' => 'edits');
$config->ai->openai->api->vendor = array('openai', 'azure');
$config->ai->openai->api->openai = new stdclass();
$config->ai->openai->api->openai->version = 'v1'; // OpenAI API version, required.
$config->ai->openai->api->openai->format = 'https://api.openai.com/%s/%s'; // OpenAI API format, args: API version, API name.
$config->ai->openai->api->openai->authFormat = 'Authorization: Bearer %s'; // OpenAI API auth header format.
$config->ai->openai->api->azure = new stdclass();
$config->ai->openai->api->azure->resource = 'openai-at-zentao'; // your Azure OpenAI resource name, required.
$config->ai->openai->api->azure->deployment = 'the-first-gpt'; // your Azure OpenAI deployment name, required.
$config->ai->openai->api->azure->apiVersion = '2023-07-01-preview'; // Azure OpenAI API version, required.
$config->ai->openai->api->azure->format = 'https://%s.openai.azure.com/openai/deployments/%s/%s?api-version=%s'; // Azure API format, args: resource name, deployment name, API name, API version.
$config->ai->openai->api->azure->authFormat = 'api-key: %s'; // Azure API auth header format.
$config->ai->openai->api->methods = array('function' => 'chat/completions', 'chat' => 'chat/completions', 'completion' => 'completions', 'edit' => 'edits');
$config->ai->openai->params = new stdclass();
$config->ai->openai->params->chat = new stdclass();
+9 -2
View File
@@ -70,11 +70,18 @@ class aiModel extends model
if(json_last_error()) $postData = $data;
/* Set auth and content-type headers. */
$requestHeaders = array(sprintf($this->config->ai->openai->api->authFormat, $this->modelConfig->key));
$requestHeaders = array(sprintf($this->config->ai->openai->api->{$this->modelConfig->vendor}->authFormat, $this->modelConfig->key));
$requestHeaders[] = isset($this->config->ai->openai->contentType[$type]) ? $this->config->ai->openai->contentType[$type] : $this->config->ai->openai->contentType[''];
/* Assemble request url. */
$url = sprintf($this->config->ai->openai->api->format, $this->config->ai->openai->api->version, $this->config->ai->openai->api->methods[$type]);
if($this->modelConfig->vendor == 'azure')
{
$url = sprintf($this->config->ai->openai->api->azure->format, $this->config->ai->openai->api->azure->resource, $this->config->ai->openai->api->azure->deployment, $this->config->ai->openai->api->methods[$type], $this->config->ai->openai->api->azure->apiVersion);
}
else
{
$url = sprintf($this->config->ai->openai->api->openai->format, $this->config->ai->openai->api->openai->version, $this->config->ai->openai->api->methods[$type]);
}
/* Set up requestor. */
$ch = curl_init();