PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.8.3
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.8.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 / core.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
core.php
234 lines
1 <?php
2
3 require_once( MWAI_PATH . '/vendor/autoload.php' );
4
5 #region Constants
6
7 // Price as of January 2023: https://openai.com/api/pricing/
8 define( 'MWAI_OPENAI_PRICING', [
9 // Base models:
10 [ "model" => "davinci", "price" => 0.02, "type" => "token", "unit" => 1 / 1000 ],
11 [ "model" => "curie", "price" => 0.002, "type" => "token", "unit" => 1 / 1000 ],
12 [ "model" => "babbage", "price" => 0.0005, "type" => "token", "unit" => 1 / 1000 ],
13 [ "model" => "ada", "price" => 0.0004, "type" => "token", "unit" => 1 / 1000 ],
14 // Image models:
15 [ "model" => "dall-e", "type" => "image", "unit" => 1, "options" => [
16 [ "option" => "1024x1024", "price" => 0.02 ],
17 [ "option" => "512x512", "price" => 0.018 ],
18 [ "option" => "256x256", "price" => 0.016 ]
19 ],
20 ],
21 // Fine-tuned models:
22 [ "model" => "fn-davinci", "price" => 0.12, "type" => "token", "unit" => 1 / 1000 ],
23 [ "model" => "fn-curie", "price" => 0.012, "type" => "token", "unit" => 1 / 1000 ],
24 [ "model" => "fn-babbage", "price" => 0.0024, "type" => "token", "unit" => 1 / 1000 ],
25 [ "model" => "fn-ada", "price" => 0.0016, "type" => "token", "unit" => 1 / 1000 ],
26 ]);
27
28 define( 'MWAI_CHATBOT_PARAMS', [
29 // UI Parameters
30 'id' => '',
31 'env' => 'chatbot',
32 'mode' => 'chat',
33 'context' => "Converse as if you were an AI assistant. Be friendly, creative.",
34 'ai_name' => "AI: ",
35 'user_name' => "User: ",
36 'sys_name' => "System: ",
37 'start_sentence' => "Hi! How can I help you?",
38 'text_send' => 'Send',
39 'text_clear' => 'Clear',
40 'text_input_placeholder' => 'Type your message...',
41 'style' => 'chatgpt',
42 'window' => false,
43 'icon' => null,
44 'icon_text' => '',
45 'icon_position' => 'bottom-right',
46 'fullscreen' => false,
47 // Chatbot System Parameters
48 'casually_fine_tuned' => false,
49 'content_aware' => false,
50 'prompt_ending' => null,
51 'completion_ending' => null,
52 // AI Parameters
53 'model' => 'text-davinci-003',
54 'temperature' => 0.8,
55 'max_tokens' => 1024,
56 'max_results' => 3,
57 'api_key' => null
58 ] );
59
60 define( 'MWAI_LANGUAGES', [
61 'en' => 'English',
62 'es' => 'Spanish',
63 'fr' => 'French',
64 'de' => 'German',
65 'it' => 'Italian',
66 'pt' => 'Portuguese',
67 'ru' => 'Russian',
68 'ja' => 'Japanese',
69 'zh' => 'Chinese',
70 ] );
71
72 define( 'MWAI_OPTIONS', [
73 'module_titles' => true,
74 'module_excerpts' => true,
75 'module_woocommerce' => true,
76 'module_forms' => false,
77 'module_blocks' => false,
78 'module_playground' => true,
79 'module_generator_content' => true,
80 'module_generator_images' => true,
81 'shortcode_chat' => true,
82 'shortcode_chat_params' => MWAI_CHATBOT_PARAMS,
83 'shortcode_chat_params_override' => false,
84 'shortcode_chat_html' => true,
85 'shortcode_chat_formatting' => true,
86 'shortcode_chat_syntax_highlighting' => false,
87 'shortcode_chat_inject' => false,
88 'openai_apikey' => false,
89 'openai_usage' => [],
90 'openai_finetunes' => [],
91 'openai_finetunes_deleted' => [],
92 'extra_models' => "",
93 'languages' => MWAI_LANGUAGES
94 ]);
95 #endregion
96
97 class Meow_MWAI_Core
98 {
99 public $admin = null;
100 public $is_rest = false;
101 public $is_cli = false;
102 public $site_url = null;
103 public $ai = null;
104 private $option_name = 'mwai_options';
105 public $defaultChatbotParams = MWAI_CHATBOT_PARAMS;
106
107 public function __construct() {
108 $this->site_url = get_site_url();
109 $this->is_rest = MeowCommon_Helpers::is_rest();
110 $this->is_cli = defined( 'WP_CLI' ) && WP_CLI;
111 $this->ai = new Meow_MWAI_AI( $this );
112 add_action( 'plugins_loaded', array( $this, 'init' ) );
113 }
114
115 function init() {
116 if ( $this->is_rest ) {
117 new Meow_MWAI_Rest( $this );
118 }
119 if ( is_admin() ) {
120 new Meow_MWAI_Admin( $this );
121 new Meow_MWAI_Modules_Assistants( $this );
122 }
123 else {
124 //new Meow_MWAI_UI( $this );
125 if ( $this->get_option( 'shortcode_chat' ) ) {
126 new Meow_MWAI_Modules_Chatbot();
127 }
128 }
129
130 // Advanced core
131 if ( class_exists( 'MeowPro_MWAI_Core' ) ) {
132 new MeowPro_MWAI_Core( $this );
133 }
134 }
135
136 #region Helpers
137 function can_access_settings() {
138 return apply_filters( 'mwai_allow_setup', current_user_can( 'manage_options' ) );
139 }
140
141 function can_access_features() {
142 $editor_or_admin = current_user_can( 'editor' ) || current_user_can( 'administrator' );
143 return apply_filters( 'mwai_allow_usage', $editor_or_admin );
144 }
145
146 function isUrl( $url ) {
147 return strpos( $url, 'http' ) === 0 ? true : false;
148 }
149
150 function get_text_from_postId( $postId ) {
151 $post = get_post( $postId );
152 if ( !$post ) {
153 return false;
154 }
155 $post->post_content = apply_filters( 'the_content', $post->post_content );
156 $text = strip_tags( $post->post_content );
157 $text = preg_replace( '/^\h*\v+/m', '', $text );
158 $text = html_entity_decode( $text );
159 return $text;
160 }
161
162 function get_session_id() {
163 if ( !isset( $_SESSION ) ) {
164 error_log("AI Engine: There is no session.");
165 return uniqid();
166 }
167 if ( isset( $_SESSION['mwai_session_id'] ) ) {
168 return $_SESSION['mwai_session_id'];
169 }
170 else {
171 $session_id = uniqid();
172 $_SESSION['mwai_session_id'] = $session_id;
173 return $session_id;
174 }
175 }
176
177 function markdown_to_html( $content ) {
178 $Parsedown = new Parsedown();
179 $content = $Parsedown->text( $content );
180 return $content;
181 }
182 #endregion
183
184 #region Options
185 function get_all_options() {
186 $options = get_option( $this->option_name, null );
187 foreach ( MWAI_OPTIONS as $key => $value ) {
188 if ( !isset( $options[$key] ) ) {
189 $options[$key] = $value;
190 }
191 if ( $key === 'languages' ) {
192 $options[$key] = apply_filters( 'mwai_languages', $options[$key] );
193 }
194 }
195 $options['shortcode_chat_default_params'] = MWAI_CHATBOT_PARAMS;
196 return $options;
197 }
198
199 // Validate and keep the options clean and logical.
200 function sanitize_options() {
201 $options = $this->get_all_options();
202 $needs_update = false;
203
204 // We can sanitize our future options here, let's always remember it.
205 // Now, it is empty...
206
207 if ( $needs_update ) {
208 update_option( $this->option_name, $options, false );
209 }
210 return $options;
211 }
212
213 function update_options( $options ) {
214 if ( !update_option( $this->option_name, $options, false ) ) {
215 return false;
216 }
217 $options = $this->sanitize_options();
218 return $options;
219 }
220
221 function update_option( $option, $value ) {
222 $options = $this->get_all_options();
223 $options[$option] = $value;
224 return $this->update_options( $options );
225 }
226
227 function get_option( $option, $default = null ) {
228 $options = $this->get_all_options();
229 return $options[$option] ?? $default;
230 }
231 #endregion
232 }
233
234 ?>