PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.1.8
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.1.8
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
135 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 // TODO: I am not sure this is actually useful, and it breaks the mechanics of picking a model.
94 // if ( !$found && ( $query instanceof Meow_MWAI_Query_Embed ) ) {
95 // $ai_embeddings_default_env = $this->core->get_option( 'ai_embeddings_default_env' );
96 // $ai_embeddings_default_model = $this->core->get_option( 'ai_embeddings_default_model' );
97 // if ( empty( $ai_embeddings_default_env ) || empty( $ai_embeddings_default_model ) ) {
98 // throw new Exception( 'AI Engine: The default environment and model for embeddings are not set.' );
99 // }
100 // $query->set_env_id( $ai_embeddings_default_env );
101 // $query->set_model( $ai_embeddings_default_model );
102 // $found = true;
103 // }
104 }
105 }
106
107 public function get_models() {
108 throw new Exception( 'Not implemented.' );
109 }
110
111 public function retrieve_models() {
112 throw new Exception( 'Not implemented.' );
113 }
114
115 public function run_completion_query( Meow_MWAI_Query_Base $query, $streamCallback = null ) : Meow_MWAI_Reply {
116 throw new Exception( 'Not implemented.' );
117 }
118
119 public function run_embedding_query( Meow_MWAI_Query_Base $query ) {
120 throw new Exception( 'Not implemented.' );
121 }
122
123 public function run_images_query( Meow_MWAI_Query_Base $query ) {
124 throw new Exception( 'Not implemented.' );
125 }
126
127 public function run_transcribe_query( Meow_MWAI_Query_Base $query ) {
128 throw new Exception( 'Not implemented.' );
129 }
130
131 public function get_price( Meow_MWAI_Query_Base $query, Meow_MWAI_Reply $reply ) {
132 throw new Exception( 'Not implemented.' );
133 }
134 }
135