PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.2.6
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.2.6
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
446 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 return $query;
165 }
166
167 function make_completions( $request ) {
168 try {
169 $params = $request->get_json_params();
170 $prompt = $params['prompt'];
171 $query = new Meow_MWAI_QueryText( $prompt );
172 $query = $this->setup_query_based_on_params( $query, $params );
173 $answer = $this->core->ai->run( $query );
174 return new WP_REST_Response([ 'success' => true, 'data' => $answer->result, 'usage' => $answer->usage ], 200 );
175 }
176 catch ( Exception $e ) {
177 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
178 }
179 }
180
181 function make_images( $request ) {
182 try {
183 $params = $request->get_json_params();
184 $prompt = $params['prompt'];
185 $query = new Meow_MWAI_QueryImage( $prompt );
186 $query = $this->setup_query_based_on_params( $query, $params );
187 $answer = $this->core->ai->run( $query );
188 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results, 'usage' => $answer->usage ], 200 );
189 }
190 catch ( Exception $e ) {
191 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
192 }
193 }
194
195 function make_titles( $request ) {
196 try {
197 $params = $request->get_json_params();
198 $postId = intval( $params['postId'] );
199 $text = $this->core->get_text_from_postId( $postId );
200 $prompt = "Create short SEO-friendly title for this text: " . $text;
201 $query = new Meow_MWAI_QueryText( $prompt, 64 );
202 $query->setMaxResults( 5 );
203 $answer = $this->core->ai->run( $query );
204 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
205 }
206 catch ( Exception $e ) {
207 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
208 }
209 }
210
211 function make_excerpts( $request ) {
212 try {
213 $params = $request->get_json_params();
214 $postId = intval( $params['postId'] );
215 $text = $this->core->get_text_from_postId( $postId );
216 $prompt = "Create SEO-friendly introduction to this text, 120 to 170 characters max, no URLs: " . $text;
217 $query = new Meow_MWAI_QueryText( $prompt, 160 );
218 $query->setMaxResults( 5 );
219 $answer = $this->core->ai->run( $query );
220 return new WP_REST_Response([ 'success' => true, 'data' => $answer->results ], 200 );
221 }
222 catch ( Exception $e ) {
223 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
224 }
225 }
226
227 function update_post_title( $request ) {
228 try {
229 $params = $request->get_json_params();
230 $title = sanitize_text_field( $params['title'] );
231 $postId = intval( $params['postId'] );
232 $post = get_post( $postId );
233 if ( !$post ) {
234 throw new Exception( 'There is no post with this ID.' );
235 }
236 $post->post_title = $title;
237 //$post->post_name = sanitize_title( $title );
238 wp_update_post( $post );
239 return new WP_REST_Response([ 'success' => true, 'message' => "Title updated." ], 200 );
240 }
241 catch ( Exception $e ) {
242 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
243 }
244 }
245
246 function update_post_excerpt( $request ) {
247 try {
248 $params = $request->get_json_params();
249 $excerpt = sanitize_text_field( $params['excerpt'] );
250 $postId = intval( $params['postId'] );
251 $post = get_post( $postId );
252 if ( !$post ) {
253 throw new Exception( 'There is no post with this ID.' );
254 }
255 $post->post_excerpt = $excerpt;
256 wp_update_post( $post );
257 return new WP_REST_Response([ 'success' => true, 'message' => "Excerpt updated." ], 200 );
258 }
259 catch ( Exception $e ) {
260 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
261 }
262 }
263
264 function create_post( $request ) {
265 try {
266 $params = $request->get_json_params();
267 $title = sanitize_text_field( $params['title'] );
268 // Sanitize content that contains line returns and HTML tags
269 $content = sanitize_textarea_field( $params['content'] );
270 $excerpt = sanitize_text_field( $params['excerpt'] );
271 //$postType = sanitize_text_field( $params['postType'] );
272 $post = new stdClass();
273 $post->post_title = $title;
274 $post->post_excerpt = $excerpt;
275 $post->post_content = $content;
276 $post->post_status = 'draft';
277 $post->post_type = 'post';
278 $post->post_content = $this->core->markdown_to_html( $post->post_content );
279 $postId = wp_insert_post( $post );
280 return new WP_REST_Response([ 'success' => true, 'postId' => $postId ], 200 );
281 }
282 catch ( Exception $e ) {
283 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
284 }
285 }
286
287 function curl_download( $Url ) {
288 if ( !function_exists( 'curl_init' ) ) {
289 die( 'CURL is not installed!' );
290 }
291 $ch = curl_init();
292 curl_setopt( $ch, CURLOPT_URL, $Url );
293 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
294 $output = curl_exec( $ch );
295 curl_close( $ch );
296 return $output;
297 }
298
299 function create_image( $request ) {
300 try {
301 $params = $request->get_json_params();
302 $title = sanitize_text_field( $params['title'] );
303 $caption = sanitize_text_field( $params['caption'] );
304 $alt = sanitize_text_field( $params['alt'] );
305 $description = sanitize_text_field( $params['description'] );
306 $url = $params['url'];
307 $filename = sanitize_text_field( $params['filename'] );
308 $image_data = $this->curl_download( $url );
309 if ( !$image_data ) {
310 throw new Exception( 'Could not download the image.' );
311 }
312 $upload_dir = wp_upload_dir();
313 if ( empty( $filename ) ) {
314 $filename = basename( $url );
315 }
316 $wp_filetype = wp_check_filetype( $filename );
317 if ( wp_mkdir_p( $upload_dir['path'] ) ) {
318 $file = $upload_dir['path'] . '/' . $filename;
319 }
320 else {
321 $file = $upload_dir['basedir'] . '/' . $filename;
322 }
323
324 // Make sure the file is unique, if not, add a number to the end of the file before the extension
325 $i = 1;
326 $parts = pathinfo( $file );
327 while ( file_exists( $file ) ) {
328 $file = $parts['dirname'] . '/' . $parts['filename'] . '-' . $i . '.' . $parts['extension'];
329 $i++;
330 }
331
332 // Write the file
333 file_put_contents( $file, $image_data );
334 $attachment = [
335 'post_mime_type' => $wp_filetype['type'],
336 'post_title' => $title,
337 'post_content' => $description,
338 'post_excerpt' => $caption,
339 'post_status' => 'inherit'
340 ];
341 // Register the file as a Media Library attachment
342 $attachmentId = wp_insert_attachment( $attachment, $file );
343 require_once( ABSPATH . 'wp-admin/includes/image.php' );
344 $attachment_data = wp_generate_attachment_metadata( $attachmentId, $file );
345 wp_update_attachment_metadata( $attachmentId, $attachment_data );
346 update_post_meta( $attachmentId, '_wp_attachment_image_alt', $alt );
347 return new WP_REST_Response([ 'success' => true, 'attachmentId' => $attachmentId ], 200 );
348 }
349 catch ( Exception $e ) {
350 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
351 }
352 }
353
354 function openai_files_get( $request ) {
355 try {
356 //$params = $request->get_json_params();
357 $openai = new Meow_MWAI_OpenAI( $this->core );
358 $files = $openai->listFiles();
359 return new WP_REST_Response([ 'success' => true, 'files' => $files ], 200 );
360 }
361 catch ( Exception $e ) {
362 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
363 }
364 }
365
366 function openai_finetunes_get( $request ) {
367 try {
368 //$params = $request->get_json_params();
369 $openai = new Meow_MWAI_OpenAI( $this->core );
370 $finetunes = $openai->listFineTunes();
371 return new WP_REST_Response([ 'success' => true, 'finetunes' => $finetunes ], 200 );
372 }
373 catch ( Exception $e ) {
374 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
375 }
376 }
377
378 function openai_files_upload( $request ) {
379 try {
380 $params = $request->get_json_params();
381 $filename = sanitize_text_field( $params['filename'] );
382 $data = $params['data'];
383 $openai = new Meow_MWAI_OpenAI( $this->core );
384 $file = $openai->uploadFile( $filename, $data );
385 return new WP_REST_Response([ 'success' => true, 'file' => $file ], 200 );
386 }
387 catch ( Exception $e ) {
388 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
389 }
390 }
391
392 function openai_files_delete( $request ) {
393 try {
394 $params = $request->get_json_params();
395 $fileId = $params['fileId'];
396 $openai = new Meow_MWAI_OpenAI( $this->core );
397 $openai->deleteFile( $fileId );
398 return new WP_REST_Response([ 'success' => true ], 200 );
399 }
400 catch ( Exception $e ) {
401 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
402 }
403 }
404
405 function openai_finetunes_delete( $request ) {
406 try {
407 $params = $request->get_json_params();
408 $modelId = $params['modelId'];
409 $openai = new Meow_MWAI_OpenAI( $this->core );
410 $openai->deleteFineTune( $modelId );
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_files_download( $request ) {
419 try {
420 $params = $request->get_json_params();
421 $fileId = $params['fileId'];
422 $openai = new Meow_MWAI_OpenAI( $this->core );
423 $data = $openai->downloadFile( $fileId );
424 return new WP_REST_Response([ 'success' => true, 'data' => $data ], 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_finetune( $request ) {
432 try {
433 $params = $request->get_json_params();
434 $fileId = $params['fileId'];
435 $model = $params['model'];
436 $suffix = $params['suffix'];
437 $openai = new Meow_MWAI_OpenAI( $this->core );
438 $finetune = $openai->fineTuneFile( $fileId, $model, $suffix );
439 return new WP_REST_Response([ 'success' => true, 'finetune' => $finetune ], 200 );
440 }
441 catch ( Exception $e ) {
442 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
443 }
444 }
445 }
446