PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.2.0
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.2.0
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 / services / model-environment.php
ai-engine / classes / services Last commit date
image.php 7 months ago message-builder.php 8 months ago model-environment.php 8 months ago response-id-manager.php 1 year ago session.php 11 months ago usage-stats.php 8 months ago
model-environment.php
159 lines
1 <?php
2
3 class Meow_MWAI_Services_ModelEnvironment {
4 private $core;
5
6 public function __construct( $core ) {
7 $this->core = $core;
8 }
9
10 public function validate_env_model( $query ) {
11 if ( !$query || !is_object( $query ) ) {
12 throw new Exception( 'Invalid query object provided to validate_env_model.' );
13 }
14
15 // The query object uses envId (string ID) for the environment
16 $env = $query->envId ?? null;
17 $model = $query->model;
18
19 // For assistant queries with a valid envId already set, respect it
20 if ( $query instanceof Meow_MWAI_Query_Assistant && !empty( $env ) && !empty( $query->assistantId ) ) {
21 // Set model to 'n/a' for assistants since they don't need a model
22 if ( empty( $model ) ) {
23 $query->model = 'n/a';
24 }
25 return;
26 }
27
28 if ( empty( $env ) && empty( $model ) ) {
29 // Use specialized defaults based on query type
30 if ( $query instanceof Meow_MWAI_Query_Image ) {
31 $this->set_default_env_and_model( $query, 'ai_images_default_env', 'ai_images_default_model' );
32 }
33 else if ( $query instanceof Meow_MWAI_Query_Transcribe ) {
34 $this->set_default_env_and_model( $query, 'ai_audio_default_env', 'ai_audio_default_model' );
35 }
36 else if ( $query instanceof Meow_MWAI_Query_Embed ) {
37 $this->set_default_env_and_model( $query, 'ai_embeddings_default_env', 'ai_embeddings_default_model' );
38 }
39 else {
40 $this->set_default_env_and_model( $query, 'ai_default_env', 'ai_default_model' );
41 }
42 }
43 else if ( empty( $env ) && !empty( $model ) ) {
44 // If the model is available in the list of models, we can use it
45 $envs = $this->core->get_option( 'ai_envs' );
46 $models = $this->core->get_option( 'ai_models' );
47
48 // First check custom models
49 if ( !empty( $models ) ) {
50 foreach ( $models as $currentModel ) {
51 if ( $currentModel['model'] === $model && isset( $currentModel['envId'] ) ) {
52 $query->envId = $currentModel['envId'];
53 // Note: Don't set $query->env here as it expects an object, not a string
54 $query->model = $currentModel['model'];
55 return;
56 }
57 }
58 }
59
60 // Then check models in environments
61 foreach ( $envs as $envId => $env ) {
62 if ( isset( $env['models'] ) ) {
63 foreach ( $env['models'] as $envModel ) {
64 if ( $envModel['model'] === $model ) {
65 $query->envId = $envId;
66 // Note: Don't set $query->env here as it expects an object, not a string
67 $query->model = $model;
68 return;
69 }
70 }
71 }
72 }
73
74 throw new Exception( 'The environment is required.' );
75 }
76 else if ( !empty( $env ) && empty( $model ) ) {
77 // Use specialized defaults based on query type
78 if ( $query instanceof Meow_MWAI_Query_Image ) {
79 $this->set_default_env_and_model( $query, 'ai_images_default_env', 'ai_images_default_model' );
80 }
81 else if ( $query instanceof Meow_MWAI_Query_Transcribe ) {
82 $this->set_default_env_and_model( $query, 'ai_audio_default_env', 'ai_audio_default_model' );
83 }
84 else if ( $query instanceof Meow_MWAI_Query_Embed ) {
85 $this->set_default_env_and_model( $query, 'ai_embeddings_default_env', 'ai_embeddings_default_model' );
86 }
87 else {
88 $this->set_default_env_and_model( $query, 'ai_default_env', 'ai_default_model' );
89 }
90 }
91 else {
92 // We have both, let's continue
93 }
94 }
95
96 private function set_default_env_and_model( $query, $envOption, $modelOption ) {
97 $env = $this->core->get_option( $envOption );
98 $model = $this->core->get_option( $modelOption );
99 if ( !empty( $env ) ) {
100 // Use envId property which is what the query object uses
101 $query->envId = $env;
102 // Note: Don't set $query->env here as it expects an object, not a string
103 }
104 if ( !empty( $model ) ) {
105 $query->model = $model;
106 }
107 }
108
109 public function get_embeddings_env( $envId = null ) {
110 // Use provided envId or fall back to default
111 if ( empty( $envId ) ) {
112 $envId = $this->core->get_option( 'embeddings_default_env' );
113 }
114
115 // Get embeddings environments (not AI environments)
116 $envs = $this->core->get_option( 'embeddings_envs' );
117 if ( !empty( $envs ) ) {
118 foreach ( $envs as $env ) {
119 if ( isset( $env['id'] ) && $env['id'] === $envId ) {
120 return $env;
121 }
122 }
123 }
124
125 return null;
126 }
127
128 public function get_ai_env( $envId ) {
129 $envs = $this->core->get_option( 'ai_envs' );
130 if ( !empty( $envs ) ) {
131 foreach ( $envs as $env ) {
132 if ( isset( $env['id'] ) && $env['id'] === $envId ) {
133 return $env;
134 }
135 }
136 }
137 return null;
138 }
139
140 public function get_assistant( $envId, $assistantId ) {
141 $env = $this->get_ai_env( $envId );
142 if ( isset( $env['assistants'] ) ) {
143 foreach ( $env['assistants'] as $assistant ) {
144 if ( $assistant['id'] === $assistantId ) {
145 return $assistant;
146 }
147 }
148 }
149 return null;
150 }
151
152 public function get_engine_models( $query ) {
153 $envId = $query->envId;
154 $env = $this->get_ai_env( $envId );
155 $models = apply_filters( 'mwai_engine_models', [], $env, $query );
156 return $models;
157 }
158 }
159