PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.2.3
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.2.3
3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / classes / openai.php
ai-engine / classes Last commit date
modules 3 years ago admin.php 3 years ago ai.php 3 years ago answer.php 3 years ago core.php 3 years ago init.php 3 years ago openai.php 3 years ago query.php 3 years ago queryimage.php 3 years ago querytext.php 3 years ago rest.php 3 years ago ui.php 3 years ago
openai.php
127 lines
1 <?php
2
3 class Meow_MWAI_OpenAI {
4 private $core = null;
5 private $apiKey = null;
6
7 public function __construct( $core ) {
8 $this->core = $core;
9 $this->apiKey = $this->core->get_option( 'openai_apikey' );
10 }
11
12 public function listFiles() {
13 return $this->run( 'GET', '/files' );
14 }
15
16 public function listFineTunes() {
17 return $this->run( 'GET', '/fine-tunes' );
18 }
19
20 public function uploadFile( $filename, $data ) {
21 $result = $this->run( 'POST', '/files', null, [ 'data' => $data, 'filename' => $filename ] );
22 return $result;
23 }
24
25 public function deleteFile( $fileId ) {
26 return $this->run( 'DELETE', '/files/' . $fileId );
27 }
28
29 public function downloadFile( $fileId ) {
30 return $this->run( 'GET', '/files/' . $fileId . '/content', null, null, false );
31 }
32
33 public function fineTuneFile( $fileId, $model, $suffix ) {
34 $result = $this->run( 'POST', '/fine-tunes', [
35 'training_file' => $fileId,
36 'model' => $model,
37 'suffix' => $suffix
38 ] );
39 return $result;
40 }
41
42 public function create_body_for_file( $file, $boundary ) {
43 $fields = array(
44 'purpose' => 'fine-tune',
45 'file' => $file['filename']
46 );
47
48 $body = '';
49 foreach ( $fields as $name => $value ) {
50 $body .= "--$boundary\r\n";
51 $body .= "Content-Disposition: form-data; name=\"$name\"";
52 if ( $name == 'file' ) {
53 $body .= "; filename=\"{$value}\"\r\n";
54 $body .= "Content-Type: application/json\r\n\r\n";
55 $body .= $file['data'] . "\r\n";
56 } else {
57 $body .= "\r\n\r\n$value\r\n";
58 }
59 }
60 $body .= "--$boundary--\r\n";
61
62
63 // $body = '';
64 // $body .= '--' . $boundary;
65 // $body .= "\r\n";
66 // // '"; filename="' . $file['filename'] . '"'
67 // $body .= 'Content-Disposition: form-data; name="photo_upload_file_name"; filename="' . $_FILES['resume']['name'] . '"' . "\r\n";
68 // //$body .= 'Content-Disposition: form-data; baba="yo"; file="' . $file['filename'] . '"; purpose="fine-tune"' . "\r\n";
69 // //$body .= 'Content-Type: ' . $format . '\r\n'; //
70 // //$body .= 'Content-Transfer-Encoding: binary' . "\r\n";
71 // $body .= "\r\n";
72 // $body .= $file['data'];
73 // $body .= "\r\n";
74 // $body .= '--' . $boundary . '--';
75 // $body .= "\r\n\r\n";
76 return $body;
77 }
78
79 public function run( $method, $url, $query = null, $file = null, $json = true ) {
80 $apiKey = $this->apiKey;
81 $headers = "Content-Type: application/json\r\n" . "Authorization: Bearer " . $apiKey . "\r\n";
82 $body = $query ? json_encode( $query ) : null;
83 if ( !empty( $file ) ) {
84 $boundary = wp_generate_password( 24, false );
85 $headers = [
86 'Content-Type' => 'multipart/form-data; boundary=' . $boundary,
87 'Authorization' => 'Bearer ' . $this->apiKey,
88 ];
89 $body = $this->create_body_for_file( $file, $boundary );
90 }
91
92 $url = 'https://api.openai.com/v1' . $url;
93 $options = [
94 "headers" => $headers,
95 "method" => $method,
96 "timeout" => 60,
97 "body" => $body,
98 "sslverify" => false
99 ];
100
101 try {
102 $response = wp_remote_request( $url, $options );
103 if ( is_wp_error( $response ) ) {
104 throw new Exception( $response->get_error_message() );
105 }
106 $response = wp_remote_retrieve_body( $response );
107 $data = $json ? json_decode( $response, true ) : $response;
108
109 // Error handling
110 if ( isset( $data['error'] ) ) {
111 $message = $data['error']['message'];
112 // If the message contains "Incorrect API key provided: THE_KEY.", replace the key by "----".
113 if ( preg_match( '/API key provided(: .*)\./', $message, $matches ) ) {
114 $message = str_replace( $matches[1], '', $message );
115 }
116 throw new Exception( $message );
117 }
118
119 return $data;
120 }
121 catch ( Exception $e ) {
122 error_log( $e->getMessage() );
123 throw new Exception( 'Error while calling OpenAI: ' . $e->getMessage() );
124 }
125 }
126 }
127