PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.3.4
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.3.4
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
452 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 }
104 catch ( Exception $e ) {
105 var_dump( $e );
106 }
107 }
108
109 function rest_all_settings() {
110 return new WP_REST_Response( [
111 'success' => true,
112 'data' => $this->core->get_all_options()
113 ], 200 );
114 }
115
116 function rest_update_option( $request ) {
117 try {
118 $params = $request->get_json_params();
119 $value = $params['options'];
120 $options = $this->core->update_options( $value );
121 $success = !!$options;
122 $message = __( $success ? 'OK' : "Could not update options.", 'ai-engine' );
123 return new WP_REST_Response([ 'success' => $success, 'message' => $message, 'options' => $options ], 200 );
124 }
125 catch ( Exception $e ) {
126 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
127 }
128 }
129
130 function createValidationResult( $result = true, $message = null) {
131 $message = $message ? $message : __( 'OK', 'ai-engine' );
132 return [ 'result' => $result, 'message' => $message ];
133 }
134
135 function validate_updated_option( $option_name ) {
136 $option_checkbox = get_option( 'mwai_option_checkbox', false );
137 $option_text = get_option( 'mwai_option_text', 'Default' );
138 if ( $option_checkbox === '' )
139 update_option( 'mwai_option_checkbox', false );
140 if ( $option_text === '' )
141 update_option( 'mwai_option_text', 'Default' );
142 return $this->createValidationResult();
143 }
144
145 function setup_query_based_on_params( $query, $params ) {
146 if ( isset( $params['model'] ) ) {
147 $query->setModel( $params['model'] );
148 }
149 if ( isset( $params['maxTokens'] ) ) {
150 $query->setMaxTokens( $params['maxTokens'] );
151 }
152 if ( isset( $params['temperature'] ) ) {
153 $query->setTemperature( $params['temperature'] );
154 }
155 if ( isset( $params['stop'] ) ) {
156 $query->setStop( $params['stop'] );
157 }
158 if ( isset( $params['apiKey'] ) ) {
159 $query->setApiKey( $params['apiKey'] );
160 }
161 if ( isset( $params['maxResults'] ) ) {
162 $query->setMaxResults( $params['maxResults'] );
163 }
164 if ( isset( $params['env'] ) ) {
165 $query->setEnv( $params['env'] );
166 }
167 if ( isset( $params['session'] ) ) {
168 $query->setSession( $params['session'] );
169 }
170 return $query;
171 }
172
173 function make_completions( $request ) {
174 try {
175 $params = $request->get_json_params();
176 $prompt = $params['prompt'];
177 $query = new Meow_MWAI_QueryText( $prompt );
178 $query = $this->setup_query_based_on_params( $query, $params );
179 $answer = $this->core->ai->run( $query );
180 return new WP_REST_Response([ 'success' => true, 'data' => $answer->result, 'usage' => $answer->usage ], 200 );
181 }
182 catch ( Exception $e ) {
183 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
184 }
185 }
186
187 function make_images( $request ) {
188 try {
189 $params = $request->get_json_params();
190 $prompt = $params['prompt'];
191 $query = new Meow_MWAI_QueryImage( $prompt );
192 $query = $this->setup_query_based_on_params( $query, $params );
193 $answer = $this->core->ai->run( $query );
194 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results, 'usage' => $answer->usage ], 200 );
195 }
196 catch ( Exception $e ) {
197 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
198 }
199 }
200
201 function make_titles( $request ) {
202 try {
203 $params = $request->get_json_params();
204 $postId = intval( $params['postId'] );
205 $text = $this->core->get_text_from_postId( $postId );
206 $prompt = "Create short SEO-friendly title for this text: " . $text;
207 $query = new Meow_MWAI_QueryText( $prompt, 64 );
208 $query->setMaxResults( 5 );
209 $answer = $this->core->ai->run( $query );
210 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
211 }
212 catch ( Exception $e ) {
213 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
214 }
215 }
216
217 function make_excerpts( $request ) {
218 try {
219 $params = $request->get_json_params();
220 $postId = intval( $params['postId'] );
221 $text = $this->core->get_text_from_postId( $postId );
222 $prompt = "Create SEO-friendly introduction to this text, 120 to 170 characters max, no URLs: " . $text;
223 $query = new Meow_MWAI_QueryText( $prompt, 160 );
224 $query->setMaxResults( 5 );
225 $answer = $this->core->ai->run( $query );
226 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
227 }
228 catch ( Exception $e ) {
229 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
230 }
231 }
232
233 function update_post_title( $request ) {
234 try {
235 $params = $request->get_json_params();
236 $title = sanitize_text_field( $params['title'] );
237 $postId = intval( $params['postId'] );
238 $post = get_post( $postId );
239 if ( !$post ) {
240 throw new Exception( 'There is no post with this ID.' );
241 }
242 $post->post_title = $title;
243 //$post->post_name = sanitize_title( $title );
244 wp_update_post( $post );
245 return new WP_REST_Response([ 'success' => true, 'message' => "Title updated." ], 200 );
246 }
247 catch ( Exception $e ) {
248 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
249 }
250 }
251
252 function update_post_excerpt( $request ) {
253 try {
254 $params = $request->get_json_params();
255 $excerpt = sanitize_text_field( $params['excerpt'] );
256 $postId = intval( $params['postId'] );
257 $post = get_post( $postId );
258 if ( !$post ) {
259 throw new Exception( 'There is no post with this ID.' );
260 }
261 $post->post_excerpt = $excerpt;
262 wp_update_post( $post );
263 return new WP_REST_Response([ 'success' => true, 'message' => "Excerpt updated." ], 200 );
264 }
265 catch ( Exception $e ) {
266 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
267 }
268 }
269
270 function create_post( $request ) {
271 try {
272 $params = $request->get_json_params();
273 $title = sanitize_text_field( $params['title'] );
274 // Sanitize content that contains line returns and HTML tags
275 $content = sanitize_textarea_field( $params['content'] );
276 $excerpt = sanitize_text_field( $params['excerpt'] );
277 //$postType = sanitize_text_field( $params['postType'] );
278 $post = new stdClass();
279 $post->post_title = $title;
280 $post->post_excerpt = $excerpt;
281 $post->post_content = $content;
282 $post->post_status = 'draft';
283 $post->post_type = 'post';
284 $post->post_content = $this->core->markdown_to_html( $post->post_content );
285 $postId = wp_insert_post( $post );
286 return new WP_REST_Response([ 'success' => true, 'postId' => $postId ], 200 );
287 }
288 catch ( Exception $e ) {
289 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
290 }
291 }
292
293 function curl_download( $Url ) {
294 if ( !function_exists( 'curl_init' ) ) {
295 die( 'CURL is not installed!' );
296 }
297 $ch = curl_init();
298 curl_setopt( $ch, CURLOPT_URL, $Url );
299 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
300 $output = curl_exec( $ch );
301 curl_close( $ch );
302 return $output;
303 }
304
305 function create_image( $request ) {
306 try {
307 $params = $request->get_json_params();
308 $title = sanitize_text_field( $params['title'] );
309 $caption = sanitize_text_field( $params['caption'] );
310 $alt = sanitize_text_field( $params['alt'] );
311 $description = sanitize_text_field( $params['description'] );
312 $url = $params['url'];
313 $filename = sanitize_text_field( $params['filename'] );
314 $image_data = $this->curl_download( $url );
315 if ( !$image_data ) {
316 throw new Exception( 'Could not download the image.' );
317 }
318 $upload_dir = wp_upload_dir();
319 if ( empty( $filename ) ) {
320 $filename = basename( $url );
321 }
322 $wp_filetype = wp_check_filetype( $filename );
323 if ( wp_mkdir_p( $upload_dir['path'] ) ) {
324 $file = $upload_dir['path'] . '/' . $filename;
325 }
326 else {
327 $file = $upload_dir['basedir'] . '/' . $filename;
328 }
329
330 // Make sure the file is unique, if not, add a number to the end of the file before the extension
331 $i = 1;
332 $parts = pathinfo( $file );
333 while ( file_exists( $file ) ) {
334 $file = $parts['dirname'] . '/' . $parts['filename'] . '-' . $i . '.' . $parts['extension'];
335 $i++;
336 }
337
338 // Write the file
339 file_put_contents( $file, $image_data );
340 $attachment = [
341 'post_mime_type' => $wp_filetype['type'],
342 'post_title' => $title,
343 'post_content' => $description,
344 'post_excerpt' => $caption,
345 'post_status' => 'inherit'
346 ];
347 // Register the file as a Media Library attachment
348 $attachmentId = wp_insert_attachment( $attachment, $file );
349 require_once( ABSPATH . 'wp-admin/includes/image.php' );
350 $attachment_data = wp_generate_attachment_metadata( $attachmentId, $file );
351 wp_update_attachment_metadata( $attachmentId, $attachment_data );
352 update_post_meta( $attachmentId, '_wp_attachment_image_alt', $alt );
353 return new WP_REST_Response([ 'success' => true, 'attachmentId' => $attachmentId ], 200 );
354 }
355 catch ( Exception $e ) {
356 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
357 }
358 }
359
360 function openai_files_get( $request ) {
361 try {
362 //$params = $request->get_json_params();
363 $openai = new Meow_MWAI_OpenAI( $this->core );
364 $files = $openai->listFiles();
365 return new WP_REST_Response([ 'success' => true, 'files' => $files ], 200 );
366 }
367 catch ( Exception $e ) {
368 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
369 }
370 }
371
372 function openai_finetunes_get( $request ) {
373 try {
374 //$params = $request->get_json_params();
375 $openai = new Meow_MWAI_OpenAI( $this->core );
376 $finetunes = $openai->listFineTunes();
377 return new WP_REST_Response([ 'success' => true, 'finetunes' => $finetunes ], 200 );
378 }
379 catch ( Exception $e ) {
380 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
381 }
382 }
383
384 function openai_files_upload( $request ) {
385 try {
386 $params = $request->get_json_params();
387 $filename = sanitize_text_field( $params['filename'] );
388 $data = $params['data'];
389 $openai = new Meow_MWAI_OpenAI( $this->core );
390 $file = $openai->uploadFile( $filename, $data );
391 return new WP_REST_Response([ 'success' => true, 'file' => $file ], 200 );
392 }
393 catch ( Exception $e ) {
394 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
395 }
396 }
397
398 function openai_files_delete( $request ) {
399 try {
400 $params = $request->get_json_params();
401 $fileId = $params['fileId'];
402 $openai = new Meow_MWAI_OpenAI( $this->core );
403 $openai->deleteFile( $fileId );
404 return new WP_REST_Response([ 'success' => true ], 200 );
405 }
406 catch ( Exception $e ) {
407 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
408 }
409 }
410
411 function openai_finetunes_delete( $request ) {
412 try {
413 $params = $request->get_json_params();
414 $modelId = $params['modelId'];
415 $openai = new Meow_MWAI_OpenAI( $this->core );
416 $openai->deleteFineTune( $modelId );
417 return new WP_REST_Response([ 'success' => true ], 200 );
418 }
419 catch ( Exception $e ) {
420 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
421 }
422 }
423
424 function openai_files_download( $request ) {
425 try {
426 $params = $request->get_json_params();
427 $fileId = $params['fileId'];
428 $openai = new Meow_MWAI_OpenAI( $this->core );
429 $data = $openai->downloadFile( $fileId );
430 return new WP_REST_Response([ 'success' => true, 'data' => $data ], 200 );
431 }
432 catch ( Exception $e ) {
433 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
434 }
435 }
436
437 function openai_files_finetune( $request ) {
438 try {
439 $params = $request->get_json_params();
440 $fileId = $params['fileId'];
441 $model = $params['model'];
442 $suffix = $params['suffix'];
443 $openai = new Meow_MWAI_OpenAI( $this->core );
444 $finetune = $openai->fineTuneFile( $fileId, $model, $suffix );
445 return new WP_REST_Response([ 'success' => true, 'finetune' => $finetune ], 200 );
446 }
447 catch ( Exception $e ) {
448 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
449 }
450 }
451 }
452