����JFIF��x�x����'
Server IP : 66.29.137.217 / Your IP : 3.15.27.146 Web Server : LiteSpeed System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : gltevjme ( 1095) PHP Version : 7.0.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/gltevjme/bofirmacademy.com/vendor/orhanerday/open-ai/src/ |
Upload File : |
<?php namespace Orhanerday\OpenAi; use Exception; class OpenAi { private string $engine = "davinci"; private string $model = "text-davinci-002"; private string $chatModel = "gpt-3.5-turbo"; private array $headers; private array $contentTypes; private int $timeout = 0; private object $stream_method; private string $customUrl = ""; private string $proxy = ""; private array $curlInfo = []; public function __construct($OPENAI_API_KEY) { $this->contentTypes = [ "application/json" => "Content-Type: application/json", "multipart/form-data" => "Content-Type: multipart/form-data", ]; $this->headers = [ $this->contentTypes["application/json"], "Authorization: Bearer $OPENAI_API_KEY", ]; } /** * @return array * Remove this method from your code before deploying */ public function getCURLInfo() { return $this->curlInfo; } /** * @return bool|string */ public function listModels() { $url = Url::fineTuneModel(); $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $model * @return bool|string */ public function retrieveModel($model) { $model = "/$model"; $url = Url::fineTuneModel().$model; $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $opts * @return bool|string * @deprecated */ public function complete($opts) { $engine = $opts['engine'] ?? $this->engine; $url = Url::completionURL($engine); unset($opts['engine']); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @param null $stream * @return bool|string * @throws Exception */ public function completion($opts, $stream = null) { if (array_key_exists('stream', $opts) && $opts['stream']) { if ($stream == null) { throw new Exception( 'Please provide a stream function. Check https://github.com/orhanerday/open-ai#stream-example for an example.' ); } $this->stream_method = $stream; } $opts['model'] = $opts['model'] ?? $this->model; $url = Url::completionsURL(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function createEdit($opts) { $url = Url::editsUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function image($opts) { $url = Url::imageUrl()."/generations"; $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function imageEdit($opts) { $url = Url::imageUrl()."/edits"; $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function createImageVariation($opts) { $url = Url::imageUrl()."/variations"; $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string * @deprecated */ public function search($opts) { $engine = $opts['engine'] ?? $this->engine; $url = Url::searchURL($engine); unset($opts['engine']); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string * @deprecated */ public function answer($opts) { $url = Url::answersUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string * @deprecated */ public function classification($opts) { $url = Url::classificationsUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function moderation($opts) { $url = Url::moderationUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @param null $stream * @return bool|string * @throws Exception */ public function chat($opts, $stream = null) { if ($stream != null && array_key_exists('stream', $opts)) { if (!$opts['stream']) { throw new Exception( 'Please provide a stream function. Check https://github.com/orhanerday/open-ai#stream-example for an example.' ); } $this->stream_method = $stream; } $opts['model'] = $opts['model'] ?? $this->chatModel; $url = Url::chatUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function transcribe($opts) { $url = Url::transcriptionsUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function translate($opts) { $url = Url::translationsUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param $opts * @return bool|string */ public function uploadFile($opts) { $url = Url::filesUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @return bool|string */ public function listFiles() { $url = Url::filesUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $file_id * @return bool|string */ public function retrieveFile($file_id) { $file_id = "/$file_id"; $url = Url::filesUrl().$file_id; $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $file_id * @return bool|string */ public function retrieveFileContent($file_id) { $file_id = "/$file_id/content"; $url = Url::filesUrl().$file_id; $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $file_id * @return bool|string */ public function deleteFile($file_id) { $file_id = "/$file_id"; $url = Url::filesUrl().$file_id; $this->baseUrl($url); return $this->sendRequest($url, 'DELETE'); } /** * @param $opts * @return bool|string */ public function createFineTune($opts) { $url = Url::fineTuneUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @return bool|string */ public function listFineTunes() { $url = Url::fineTuneUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $fine_tune_id * @return bool|string */ public function retrieveFineTune($fine_tune_id) { $fine_tune_id = "/$fine_tune_id"; $url = Url::fineTuneUrl().$fine_tune_id; $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $fine_tune_id * @return bool|string */ public function cancelFineTune($fine_tune_id) { $fine_tune_id = "/$fine_tune_id/cancel"; $url = Url::fineTuneUrl().$fine_tune_id; $this->baseUrl($url); return $this->sendRequest($url, 'POST'); } /** * @param $fine_tune_id * @return bool|string */ public function listFineTuneEvents($fine_tune_id) { $fine_tune_id = "/$fine_tune_id/events"; $url = Url::fineTuneUrl().$fine_tune_id; $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $fine_tune_id * @return bool|string */ public function deleteFineTune($fine_tune_id) { $fine_tune_id = "/$fine_tune_id"; $url = Url::fineTuneModel().$fine_tune_id; $this->baseUrl($url); return $this->sendRequest($url, 'DELETE'); } /** * @param * @return bool|string * @deprecated */ public function engines() { $url = Url::enginesUrl(); $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $engine * @return bool|string * @deprecated */ public function engine($engine) { $url = Url::engineUrl($engine); $this->baseUrl($url); return $this->sendRequest($url, 'GET'); } /** * @param $opts * @return bool|string */ public function embeddings($opts) { $url = Url::embeddings(); $this->baseUrl($url); return $this->sendRequest($url, 'POST', $opts); } /** * @param int $timeout */ public function setTimeout(int $timeout) { $this->timeout = $timeout; } /** * @param string $proxy */ public function setProxy(string $proxy) { if ($proxy && strpos($proxy, '://') === false) { $proxy = 'https://'.$proxy; } $this->proxy = $proxy; } /** * @param string $customUrl * @deprecated */ /** * @param string $customUrl * @return void */ public function setCustomURL(string $customUrl) { if ($customUrl != "") { $this->customUrl = $customUrl; } } /** * @param string $customUrl * @return void */ public function setBaseURL(string $customUrl) { if ($customUrl != '') { $this->customUrl = $customUrl; } } /** * @param array $header * @return void */ public function setHeader(array $header) { if ($header) { foreach ($header as $key => $value) { $this->headers[$key] = $value; } } } /** * @param string $org */ public function setORG(string $org) { if ($org != "") { $this->headers[] = "OpenAI-Organization: $org"; } } /** * @param string $url * @param string $method * @param array $opts * @return bool|string */ private function sendRequest(string $url, string $method, array $opts = []) { $post_fields = json_encode($opts); if (array_key_exists('file', $opts) || array_key_exists('image', $opts)) { $this->headers[0] = $this->contentTypes["multipart/form-data"]; $post_fields = $opts; } else { $this->headers[0] = $this->contentTypes["application/json"]; } $curl_info = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => $this->timeout, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_POSTFIELDS => $post_fields, CURLOPT_HTTPHEADER => $this->headers, ]; if ($opts == []) { unset($curl_info[CURLOPT_POSTFIELDS]); } if (!empty($this->proxy)) { $curl_info[CURLOPT_PROXY] = $this->proxy; } if (array_key_exists('stream', $opts) && $opts['stream']) { $curl_info[CURLOPT_WRITEFUNCTION] = $this->stream_method; } $curl = curl_init(); curl_setopt_array($curl, $curl_info); $response = curl_exec($curl); $info = curl_getinfo($curl); $this->curlInfo = $info; curl_close($curl); return $response; } /** * @param string $url */ private function baseUrl(string &$url) { if ($this->customUrl != "") { $url = str_replace(Url::ORIGIN, $this->customUrl, $url); } } }