PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.4.1
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.4.1
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
219 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' => null,
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_input_placeholder' => 'Type your message...',
40 'style' => 'chatgpt',
41 'window' => false,
42 'fullscreen' => false,
43 // Chatbot System Parameters
44 'casually_fined_tuned' => false,
45 'content_aware' => false,
46 'prompt_ending' => null,
47 'completion_ending' => null,
48 // AI Parameters
49 'model' => 'text-davinci-003',
50 'temperature' => 0.8,
51 'max_tokens' => 1024,
52 'max_results' => 3,
53 'api_key' => null
54 ] );
55
56 define( 'MWAI_LANGUAGES', [
57 'en' => 'English',
58 'es' => 'Spanish',
59 'fr' => 'French',
60 'de' => 'German',
61 'it' => 'Italian',
62 'pt' => 'Portuguese',
63 'ru' => 'Russian',
64 'ja' => 'Japanese',
65 'zh' => 'Chinese',
66 ] );
67
68 define( 'MWAI_OPTIONS', [
69 'module_titles' => true,
70 'module_excerpts' => true,
71 'module_blocks' => false,
72 'module_statistics' => false,
73 'shortcode_chat' => true,
74 'shortcode_chat_params' => MWAI_CHATBOT_PARAMS,
75 'shortcode_chat_params_override' => false,
76 'shortcode_chat_html' => true,
77 'shortcode_chat_formatting' => true,
78 'shortcode_chat_syntax_highlighting' => false,
79 'shortcode_chat_inject' => false,
80 'openai_apikey' => false,
81 'openai_usage' => [],
82 'openai_finetunes' => [],
83 'openai_finetunes_deleted' => [],
84 'extra_models' => "",
85 'languages' => MWAI_LANGUAGES
86 ]);
87 #endregion
88
89 class Meow_MWAI_Core
90 {
91 public $admin = null;
92 public $is_rest = false;
93 public $is_cli = false;
94 public $site_url = null;
95 public $ai = null;
96 private $option_name = 'mwai_options';
97 public $defaultChatbotParams = MWAI_CHATBOT_PARAMS;
98
99 public function __construct() {
100 $this->site_url = get_site_url();
101 $this->is_rest = MeowCommon_Helpers::is_rest();
102 $this->is_cli = defined( 'WP_CLI' ) && WP_CLI;
103 $this->ai = new Meow_MWAI_AI( $this );
104 add_action( 'plugins_loaded', array( $this, 'init' ) );
105 }
106
107 function init() {
108 if ( $this->is_rest ) {
109 new Meow_MWAI_Rest( $this );
110 }
111 if ( is_admin() ) {
112 new Meow_MWAI_Admin( $this );
113 }
114 else {
115 new Meow_MWAI_UI( $this );
116 }
117
118 // Modules
119 if ( $this->get_option( 'shortcode_chat' ) ) {
120 new Meow_MWAI_Modules_Chatbot();
121 }
122
123 // Advanced core
124 if ( class_exists( 'MeowPro_MWAI_Core' ) ) {
125 new MeowPro_MWAI_Core( $this );
126 }
127 }
128
129 #region Helpers
130 function can_access_settings() {
131 return apply_filters( 'mwai_allow_setup', current_user_can( 'manage_options' ) );
132 }
133
134 function can_access_features() {
135 return apply_filters( 'mwai_allow_usage', current_user_can( 'administrator' ) );
136 }
137
138 function get_text_from_postId( $postId ) {
139 $post = get_post( $postId );
140 if ( !$post ) {
141 return false;
142 }
143 $post->post_content = apply_filters( 'the_content', $post->post_content );
144 $text = strip_tags( $post->post_content );
145 $text = preg_replace( '/^\h*\v+/m', '', $text );
146 $text = html_entity_decode( $text );
147 return $text;
148 }
149
150 function get_session_id() {
151 session_start();
152 if ( isset( $_SESSION['mwai_session_id'] ) ) {
153 return $_SESSION['mwai_session_id'];
154 }
155 else {
156 $session_id = uniqid();
157 $_SESSION['mwai_session_id'] = $session_id;
158 return $session_id;
159 }
160 }
161
162 function markdown_to_html( $content ) {
163 $Parsedown = new Parsedown();
164 $content = $Parsedown->text( $content );
165 return $content;
166 }
167 #endregion
168
169 #region Options
170 function get_all_options() {
171 $options = get_option( $this->option_name, null );
172 foreach ( MWAI_OPTIONS as $key => $value ) {
173 if ( !isset( $options[$key] ) ) {
174 $options[$key] = $value;
175 }
176 if ( $key === 'languages' ) {
177 $options[$key] = apply_filters( 'mwai_languages', $options[$key] );
178 }
179 }
180 $options['shortcode_chat_default_params'] = MWAI_CHATBOT_PARAMS;
181 return $options;
182 }
183
184 // Validate and keep the options clean and logical.
185 function sanitize_options() {
186 $options = $this->get_all_options();
187 $needs_update = false;
188
189 // We can sanitize our future options here, let's always remember it.
190 // Now, it is empty...
191
192 if ( $needs_update ) {
193 update_option( $this->option_name, $options, false );
194 }
195 return $options;
196 }
197
198 function update_options( $options ) {
199 if ( !update_option( $this->option_name, $options, false ) ) {
200 return false;
201 }
202 $options = $this->sanitize_options();
203 return $options;
204 }
205
206 function update_option( $option, $value ) {
207 $options = $this->get_all_options();
208 $options[$option] = $value;
209 return $this->update_options( $options );
210 }
211
212 function get_option( $option, $default = null ) {
213 $options = $this->get_all_options();
214 return $options[$option] ?? $default;
215 }
216 #endregion
217 }
218
219 ?>