PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.4.9
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.4.9
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 / rest.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
rest.php
475 lines
1 <?php
2
3 class Meow_MWAI_Rest
4 {
5 private $core = null;
6 private $namespace = 'ai-engine/v1';
7
8 public function __construct( $core ) {
9 if ( !current_user_can( 'administrator' ) ) {
10 return;
11 }
12 $this->core = $core;
13 add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
14 }
15
16 function rest_api_init() {
17 try {
18 register_rest_route( $this->namespace, '/update_option', array(
19 'methods' => 'POST',
20 'permission_callback' => array( $this->core, 'can_access_settings' ),
21 'callback' => array( $this, 'rest_update_option' )
22 ) );
23 register_rest_route( $this->namespace, '/all_settings', array(
24 'methods' => 'GET',
25 'permission_callback' => array( $this->core, 'can_access_settings' ),
26 'callback' => array( $this, 'rest_all_settings' ),
27 ) );
28 register_rest_route( $this->namespace, '/make_completions', array(
29 'methods' => 'POST',
30 'permission_callback' => array( $this->core, 'can_access_features' ),
31 'callback' => array( $this, 'make_completions' ),
32 ) );
33 register_rest_route( $this->namespace, '/make_images', array(
34 'methods' => 'POST',
35 'permission_callback' => array( $this->core, 'can_access_features' ),
36 'callback' => array( $this, 'make_images' ),
37 ) );
38 register_rest_route( $this->namespace, '/make_titles', array(
39 'methods' => 'POST',
40 'permission_callback' => array( $this->core, 'can_access_features' ),
41 'callback' => array( $this, 'make_titles' ),
42 ) );
43 register_rest_route( $this->namespace, '/make_excerpts', array(
44 'methods' => 'POST',
45 'permission_callback' => array( $this->core, 'can_access_features' ),
46 'callback' => array( $this, 'make_excerpts' ),
47 ) );
48 register_rest_route( $this->namespace, '/update_post_title', array(
49 'methods' => 'POST',
50 'permission_callback' => array( $this->core, 'can_access_features' ),
51 'callback' => array( $this, 'update_post_title' ),
52 ) );
53 register_rest_route( $this->namespace, '/update_post_excerpt', array(
54 'methods' => 'POST',
55 'permission_callback' => array( $this->core, 'can_access_features' ),
56 'callback' => array( $this, 'update_post_excerpt' ),
57 ) );
58 register_rest_route( $this->namespace, '/create_post', array(
59 'methods' => 'POST',
60 'permission_callback' => array( $this->core, 'can_access_features' ),
61 'callback' => array( $this, 'create_post' ),
62 ) );
63 register_rest_route( $this->namespace, '/create_image', array(
64 'methods' => 'POST',
65 'permission_callback' => array( $this->core, 'can_access_features' ),
66 'callback' => array( $this, 'create_image' ),
67 ) );
68 register_rest_route( $this->namespace, '/openai_files', array(
69 'methods' => 'GET',
70 'permission_callback' => array( $this->core, 'can_access_features' ),
71 'callback' => array( $this, 'openai_files_get' ),
72 ) );
73 register_rest_route( $this->namespace, '/openai_files', array(
74 'methods' => 'DELETE',
75 'permission_callback' => array( $this->core, 'can_access_features' ),
76 'callback' => array( $this, 'openai_files_delete' ),
77 ) );
78 register_rest_route( $this->namespace, '/openai_files', array(
79 'methods' => 'POST',
80 'permission_callback' => array( $this->core, 'can_access_features' ),
81 'callback' => array( $this, 'openai_files_upload' ),
82 ) );
83 register_rest_route( $this->namespace, '/openai_files_download', array(
84 'methods' => 'POST',
85 'permission_callback' => array( $this->core, 'can_access_features' ),
86 'callback' => array( $this, 'openai_files_download' ),
87 ) );
88 register_rest_route( $this->namespace, '/openai_files_finetune', array(
89 'methods' => 'POST',
90 'permission_callback' => array( $this->core, 'can_access_features' ),
91 'callback' => array( $this, 'openai_files_finetune' ),
92 ) );
93 register_rest_route( $this->namespace, '/openai_finetunes', array(
94 'methods' => 'GET',
95 'permission_callback' => array( $this->core, 'can_access_features' ),
96 'callback' => array( $this, 'openai_finetunes_get' ),
97 ) );
98 register_rest_route( $this->namespace, '/openai_finetunes', array(
99 'methods' => 'DELETE',
100 'permission_callback' => array( $this->core, 'can_access_features' ),
101 'callback' => array( $this, 'openai_finetunes_delete' ),
102 ) );
103 register_rest_route( $this->namespace, '/openai_incidents', array(
104 'methods' => 'GET',
105 'permission_callback' => array( $this->core, 'can_access_features' ),
106 'callback' => array( $this, 'openai_incidents' ),
107 ) );
108 }
109 catch ( Exception $e ) {
110 var_dump( $e );
111 }
112 }
113
114 function rest_all_settings() {
115 return new WP_REST_Response( [
116 'success' => true,
117 'data' => $this->core->get_all_options()
118 ], 200 );
119 }
120
121 function rest_update_option( $request ) {
122 try {
123 $params = $request->get_json_params();
124 $value = $params['options'];
125 $options = $this->core->update_options( $value );
126 $success = !!$options;
127 $message = __( $success ? 'OK' : "Could not update options.", 'ai-engine' );
128 return new WP_REST_Response([ 'success' => $success, 'message' => $message, 'options' => $options ], 200 );
129 }
130 catch ( Exception $e ) {
131 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
132 }
133 }
134
135 function createValidationResult( $result = true, $message = null) {
136 $message = $message ? $message : __( 'OK', 'ai-engine' );
137 return [ 'result' => $result, 'message' => $message ];
138 }
139
140 function validate_updated_option( $option_name ) {
141 $option_checkbox = get_option( 'mwai_option_checkbox', false );
142 $option_text = get_option( 'mwai_option_text', 'Default' );
143 if ( $option_checkbox === '' )
144 update_option( 'mwai_option_checkbox', false );
145 if ( $option_text === '' )
146 update_option( 'mwai_option_text', 'Default' );
147 return $this->createValidationResult();
148 }
149
150 function setup_query_based_on_params( $query, $params ) {
151 if ( isset( $params['model'] ) ) {
152 $query->setModel( $params['model'] );
153 }
154 if ( isset( $params['maxTokens'] ) ) {
155 $query->setMaxTokens( $params['maxTokens'] );
156 }
157 if ( isset( $params['temperature'] ) ) {
158 $query->setTemperature( $params['temperature'] );
159 }
160 if ( isset( $params['stop'] ) ) {
161 $query->setStop( $params['stop'] );
162 }
163 if ( isset( $params['apiKey'] ) ) {
164 $query->setApiKey( $params['apiKey'] );
165 }
166 if ( isset( $params['maxResults'] ) ) {
167 $query->setMaxResults( $params['maxResults'] );
168 }
169 if ( isset( $params['env'] ) ) {
170 $query->setEnv( $params['env'] );
171 }
172 if ( isset( $params['session'] ) ) {
173 $query->setSession( $params['session'] );
174 }
175 return $query;
176 }
177
178 function make_completions( $request ) {
179 try {
180 $params = $request->get_json_params();
181 $prompt = $params['prompt'];
182 $query = new Meow_MWAI_QueryText( $prompt );
183 $query = $this->setup_query_based_on_params( $query, $params );
184 $answer = $this->core->ai->run( $query );
185 return new WP_REST_Response([ 'success' => true, 'data' => $answer->result, 'usage' => $answer->usage ], 200 );
186 }
187 catch ( Exception $e ) {
188 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
189 }
190 }
191
192 function make_images( $request ) {
193 try {
194 $params = $request->get_json_params();
195 $prompt = $params['prompt'];
196 $query = new Meow_MWAI_QueryImage( $prompt );
197 $query = $this->setup_query_based_on_params( $query, $params );
198 $answer = $this->core->ai->run( $query );
199 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results, 'usage' => $answer->usage ], 200 );
200 }
201 catch ( Exception $e ) {
202 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
203 }
204 }
205
206 function make_titles( $request ) {
207 try {
208 $params = $request->get_json_params();
209 $postId = intval( $params['postId'] );
210 $text = $this->core->get_text_from_postId( $postId );
211 $prompt = "Create short SEO-friendly title for this text: " . $text;
212 $query = new Meow_MWAI_QueryText( $prompt, 64 );
213 $query->setMaxResults( 5 );
214 $query->setEnv( 'admin-tools' );
215 $answer = $this->core->ai->run( $query );
216 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
217 }
218 catch ( Exception $e ) {
219 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
220 }
221 }
222
223 function make_excerpts( $request ) {
224 try {
225 $params = $request->get_json_params();
226 $postId = intval( $params['postId'] );
227 $text = $this->core->get_text_from_postId( $postId );
228 $prompt = "Create SEO-friendly introduction to this text, 120 to 170 characters max, no URLs: " . $text;
229 $query = new Meow_MWAI_QueryText( $prompt, 160 );
230 $query->setMaxResults( 5 );
231 $query->setEnv( 'admin-tools' );
232 $answer = $this->core->ai->run( $query );
233 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
234 }
235 catch ( Exception $e ) {
236 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
237 }
238 }
239
240 function update_post_title( $request ) {
241 try {
242 $params = $request->get_json_params();
243 $title = sanitize_text_field( $params['title'] );
244 $postId = intval( $params['postId'] );
245 $post = get_post( $postId );
246 if ( !$post ) {
247 throw new Exception( 'There is no post with this ID.' );
248 }
249 $post->post_title = $title;
250 //$post->post_name = sanitize_title( $title );
251 wp_update_post( $post );
252 return new WP_REST_Response([ 'success' => true, 'message' => "Title updated." ], 200 );
253 }
254 catch ( Exception $e ) {
255 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
256 }
257 }
258
259 function update_post_excerpt( $request ) {
260 try {
261 $params = $request->get_json_params();
262 $excerpt = sanitize_text_field( $params['excerpt'] );
263 $postId = intval( $params['postId'] );
264 $post = get_post( $postId );
265 if ( !$post ) {
266 throw new Exception( 'There is no post with this ID.' );
267 }
268 $post->post_excerpt = $excerpt;
269 wp_update_post( $post );
270 return new WP_REST_Response([ 'success' => true, 'message' => "Excerpt updated." ], 200 );
271 }
272 catch ( Exception $e ) {
273 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
274 }
275 }
276
277 function create_post( $request ) {
278 try {
279 $params = $request->get_json_params();
280 $title = sanitize_text_field( $params['title'] );
281 // Sanitize content that contains line returns and HTML tags
282 $content = sanitize_textarea_field( $params['content'] );
283 $excerpt = sanitize_text_field( $params['excerpt'] );
284 //$postType = sanitize_text_field( $params['postType'] );
285 $post = new stdClass();
286 $post->post_title = $title;
287 $post->post_excerpt = $excerpt;
288 $post->post_content = $content;
289 $post->post_status = 'draft';
290 $post->post_type = 'post';
291 $post->post_content = $this->core->markdown_to_html( $post->post_content );
292 $postId = wp_insert_post( $post );
293 return new WP_REST_Response([ 'success' => true, 'postId' => $postId ], 200 );
294 }
295 catch ( Exception $e ) {
296 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
297 }
298 }
299
300 function curl_download( $Url ) {
301 if ( !function_exists( 'curl_init' ) ) {
302 die( 'CURL is not installed!' );
303 }
304 $ch = curl_init();
305 curl_setopt( $ch, CURLOPT_URL, $Url );
306 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
307 $output = curl_exec( $ch );
308 curl_close( $ch );
309 return $output;
310 }
311
312 function create_image( $request ) {
313 try {
314 $params = $request->get_json_params();
315 $title = sanitize_text_field( $params['title'] );
316 $caption = sanitize_text_field( $params['caption'] );
317 $alt = sanitize_text_field( $params['alt'] );
318 $description = sanitize_text_field( $params['description'] );
319 $url = $params['url'];
320 $filename = sanitize_text_field( $params['filename'] );
321 $image_data = $this->curl_download( $url );
322 if ( !$image_data ) {
323 throw new Exception( 'Could not download the image.' );
324 }
325 $upload_dir = wp_upload_dir();
326 if ( empty( $filename ) ) {
327 $filename = basename( $url );
328 }
329 $wp_filetype = wp_check_filetype( $filename );
330 if ( wp_mkdir_p( $upload_dir['path'] ) ) {
331 $file = $upload_dir['path'] . '/' . $filename;
332 }
333 else {
334 $file = $upload_dir['basedir'] . '/' . $filename;
335 }
336
337 // Make sure the file is unique, if not, add a number to the end of the file before the extension
338 $i = 1;
339 $parts = pathinfo( $file );
340 while ( file_exists( $file ) ) {
341 $file = $parts['dirname'] . '/' . $parts['filename'] . '-' . $i . '.' . $parts['extension'];
342 $i++;
343 }
344
345 // Write the file
346 file_put_contents( $file, $image_data );
347 $attachment = [
348 'post_mime_type' => $wp_filetype['type'],
349 'post_title' => $title,
350 'post_content' => $description,
351 'post_excerpt' => $caption,
352 'post_status' => 'inherit'
353 ];
354 // Register the file as a Media Library attachment
355 $attachmentId = wp_insert_attachment( $attachment, $file );
356 require_once( ABSPATH . 'wp-admin/includes/image.php' );
357 $attachment_data = wp_generate_attachment_metadata( $attachmentId, $file );
358 wp_update_attachment_metadata( $attachmentId, $attachment_data );
359 update_post_meta( $attachmentId, '_wp_attachment_image_alt', $alt );
360 return new WP_REST_Response([ 'success' => true, 'attachmentId' => $attachmentId ], 200 );
361 }
362 catch ( Exception $e ) {
363 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
364 }
365 }
366
367 function openai_files_get( $request ) {
368 try {
369 //$params = $request->get_json_params();
370 $openai = new Meow_MWAI_OpenAI( $this->core );
371 $files = $openai->listFiles();
372 return new WP_REST_Response([ 'success' => true, 'files' => $files ], 200 );
373 }
374 catch ( Exception $e ) {
375 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
376 }
377 }
378
379 function openai_finetunes_get( $request ) {
380 try {
381 //$params = $request->get_json_params();
382 $openai = new Meow_MWAI_OpenAI( $this->core );
383 $finetunes = $openai->listFineTunes();
384 return new WP_REST_Response([ 'success' => true, 'finetunes' => $finetunes ], 200 );
385 }
386 catch ( Exception $e ) {
387 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
388 }
389 }
390
391 function openai_files_upload( $request ) {
392 try {
393 $params = $request->get_json_params();
394 $filename = sanitize_text_field( $params['filename'] );
395 $data = $params['data'];
396 $openai = new Meow_MWAI_OpenAI( $this->core );
397 $file = $openai->uploadFile( $filename, $data );
398 return new WP_REST_Response([ 'success' => true, 'file' => $file ], 200 );
399 }
400 catch ( Exception $e ) {
401 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
402 }
403 }
404
405 function openai_files_delete( $request ) {
406 try {
407 $params = $request->get_json_params();
408 $fileId = $params['fileId'];
409 $openai = new Meow_MWAI_OpenAI( $this->core );
410 $openai->deleteFile( $fileId );
411 return new WP_REST_Response([ 'success' => true ], 200 );
412 }
413 catch ( Exception $e ) {
414 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
415 }
416 }
417
418 function openai_finetunes_delete( $request ) {
419 try {
420 $params = $request->get_json_params();
421 $modelId = $params['modelId'];
422 $openai = new Meow_MWAI_OpenAI( $this->core );
423 $openai->deleteFineTune( $modelId );
424 return new WP_REST_Response([ 'success' => true ], 200 );
425 }
426 catch ( Exception $e ) {
427 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
428 }
429 }
430
431 function openai_files_download( $request ) {
432 try {
433 $params = $request->get_json_params();
434 $fileId = $params['fileId'];
435 $openai = new Meow_MWAI_OpenAI( $this->core );
436 $data = $openai->downloadFile( $fileId );
437 return new WP_REST_Response([ 'success' => true, 'data' => $data ], 200 );
438 }
439 catch ( Exception $e ) {
440 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
441 }
442 }
443
444 function openai_files_finetune( $request ) {
445 try {
446 $params = $request->get_json_params();
447 $fileId = $params['fileId'];
448 $model = $params['model'];
449 $suffix = $params['suffix'];
450 $openai = new Meow_MWAI_OpenAI( $this->core );
451 $finetune = $openai->fineTuneFile( $fileId, $model, $suffix );
452 return new WP_REST_Response([ 'success' => true, 'finetune' => $finetune ], 200 );
453 }
454 catch ( Exception $e ) {
455 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
456 }
457 }
458
459 function openai_incidents() {
460 try {
461 $transient = get_transient( 'mwai_openai_incidents' );
462 if ( $transient ) {
463 return new WP_REST_Response([ 'success' => true, 'incidents' => $transient ], 200 );
464 }
465 $openai = new Meow_MWAI_OpenAI( $this->core );
466 $incidents = $openai->getIncidents();
467 set_transient( 'mwai_openai_incidents', $incidents, 60 * 10 );
468 return new WP_REST_Response([ 'success' => true, 'incidents' => $incidents ], 200 );
469 }
470 catch ( Exception $e ) {
471 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
472 }
473 }
474 }
475