PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.1.4
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.1.4
3.5.9 3.5.8 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 / engines / core.php
ai-engine / classes / engines Last commit date
core.php 2 years ago factory.php 2 years ago openai.php 2 years ago openrouter.php 2 years ago
core.php
134 lines
1 <?php
2
3 class Meow_MWAI_Engines_Core {
4 protected $core = null;
5 public $env = null;
6 public $envId = null;
7 public $envType = null;
8
9 public function __construct( $core, $env ) {
10 $this->core = $core;
11 $this->env = $env;
12 $this->envId = $env['id'];
13 $this->envType = $env['type'];
14 }
15
16 public function run( $query, $streamCallback = null ) {
17
18 // Check if the query is allowed.
19 $limits = $this->core->get_option( 'limits' );
20 $allowed = apply_filters( 'mwai_ai_allowed', true, $query, $limits );
21 if ( $allowed !== true ) {
22 $message = is_string( $allowed ) ? $allowed : 'Unauthorized query.';
23 throw new Exception( $message );
24 }
25
26 // Allow to modify the query before it is sent. It should not be a Meow_MWAI_Query_Embed.
27 if ( !( $query instanceof Meow_MWAI_Query_Embed ) ) {
28 $query = apply_filters( 'mwai_ai_query', $query );
29 }
30
31 // Important as it makes sure everything is consolidated in the query and the engine.
32 $this->final_checks( $query );
33
34 // Run the query
35 $reply = null;
36 if ( $query instanceof Meow_MWAI_Query_Text ) {
37 $reply = $this->run_completion_query( $query, $streamCallback );
38 }
39 else if ( $query instanceof Meow_MWAI_Query_Assistant ) {
40 $reply = null;
41 $reply = apply_filters( 'mwai_ai_query_assistant', $reply, $query );
42 if ( $reply === null ) {
43 throw new Exception( 'Assistants are not supported in this version of AI Engine.' );
44 }
45 }
46 else if ( $query instanceof Meow_MWAI_Query_Embed ) {
47 $reply = $this->run_embedding_query( $query );
48 }
49 else if ( $query instanceof Meow_MWAI_Query_Image ) {
50 $reply = $this->run_images_query( $query );
51 }
52 else if ( $query instanceof Meow_MWAI_Query_Transcribe ) {
53 $reply = $this->run_transcribe_query( $query );
54 }
55 else {
56 throw new Exception( 'Unknown query type.' );
57 }
58
59 // Allow to modify the reply before it is sent.
60 $reply = apply_filters( 'mwai_ai_reply', $reply, $query );
61
62 return $reply;
63 }
64
65 public function retrieve_model_info( $model ) {
66 $models = $this->get_models();
67 foreach ( $models as $currentModel ) {
68 if ( $currentModel['model'] === $model ) {
69 return $currentModel;
70 }
71 }
72 return false;
73 }
74
75 public function final_checks( Meow_MWAI_Query_Base $query ) {
76 $query->final_checks();
77 $found = false;
78
79 // Check if the model is available, except if it's an assistant
80 if ( !( $query instanceof Meow_MWAI_Query_Assistant ) ) {
81 // TODO: Avoid checking on the finetuned models for now.
82 if ( substr( $query->model, 0, 3 ) === 'ft:' ) {
83 return;
84 }
85 $model_info = $this->retrieve_model_info( $query->model );
86 if ( $model_info === false ) {
87 throw new Exception( "AI Engine: The model '{$query->model}' is not available." );
88 }
89 if ( isset( $model_info['mode'] ) ) {
90 $query->mode = $model_info['mode'];
91 }
92
93 if ( !$found && ( $query instanceof Meow_MWAI_Query_Embed ) ) {
94 $ai_embeddings_default_env = $this->core->get_option( 'ai_embeddings_default_env' );
95 $ai_embeddings_default_model = $this->core->get_option( 'ai_embeddings_default_model' );
96 if ( empty( $ai_embeddings_default_env ) || empty( $ai_embeddings_default_model ) ) {
97 throw new Exception( 'AI Engine: The default environment and model for embeddings are not set.' );
98 }
99 $query->set_env_id( $ai_embeddings_default_env );
100 $query->set_model( $ai_embeddings_default_model );
101 $found = true;
102 }
103 }
104 }
105
106 public function get_models() {
107 throw new Exception( 'Not implemented.' );
108 }
109
110 public function retrieve_models() {
111 throw new Exception( 'Not implemented.' );
112 }
113
114 public function run_completion_query( Meow_MWAI_Query_Base $query, $streamCallback = null ) : Meow_MWAI_Reply {
115 throw new Exception( 'Not implemented.' );
116 }
117
118 public function run_embedding_query( Meow_MWAI_Query_Base $query ) {
119 throw new Exception( 'Not implemented.' );
120 }
121
122 public function run_images_query( Meow_MWAI_Query_Base $query ) {
123 throw new Exception( 'Not implemented.' );
124 }
125
126 public function run_transcribe_query( Meow_MWAI_Query_Base $query ) {
127 throw new Exception( 'Not implemented.' );
128 }
129
130 public function get_price( Meow_MWAI_Query_Base $query, Meow_MWAI_Reply $reply ) {
131 throw new Exception( 'Not implemented.' );
132 }
133 }
134