PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.0.0
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.0.0
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 / services / model-environment.php
ai-engine / classes / services Last commit date
image.php 1 year ago message-builder.php 10 months ago model-environment.php 11 months ago response-id-manager.php 1 year ago session.php 11 months ago usage-stats.php 11 months ago
model-environment.php
135 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, not env
16 $env = $query->envId ?? $query->env ?? 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 $this->set_default_env_and_model( $query, 'ai_default_env', 'ai_default_model' );
30 }
31 else if ( empty( $env ) && !empty( $model ) ) {
32 // If the model is available in the list of models, we can use it
33 $envs = $this->core->get_option( 'ai_envs' );
34 $models = $this->core->get_option( 'ai_models' );
35
36 // First check custom models
37 if ( !empty( $models ) ) {
38 foreach ( $models as $currentModel ) {
39 if ( $currentModel['model'] === $model && isset( $currentModel['envId'] ) ) {
40 $query->envId = $currentModel['envId'];
41 // Note: Don't set $query->env here as it expects an object, not a string
42 $query->model = $currentModel['model'];
43 return;
44 }
45 }
46 }
47
48 // Then check models in environments
49 foreach ( $envs as $envId => $env ) {
50 if ( isset( $env['models'] ) ) {
51 foreach ( $env['models'] as $envModel ) {
52 if ( $envModel['model'] === $model ) {
53 $query->envId = $envId;
54 // Note: Don't set $query->env here as it expects an object, not a string
55 $query->model = $model;
56 return;
57 }
58 }
59 }
60 }
61
62 throw new Exception( 'The environment is required.' );
63 }
64 else if ( !empty( $env ) && empty( $model ) ) {
65 $this->set_default_env_and_model( $query, 'ai_default_env', 'ai_default_model' );
66 }
67 else {
68 // We have both, let's continue
69 }
70 }
71
72 private function set_default_env_and_model( $query, $envOption, $modelOption ) {
73 $env = $this->core->get_option( $envOption );
74 $model = $this->core->get_option( $modelOption );
75 if ( !empty( $env ) ) {
76 // Use envId property which is what the query object uses
77 $query->envId = $env;
78 // Note: Don't set $query->env here as it expects an object, not a string
79 }
80 if ( !empty( $model ) ) {
81 $query->model = $model;
82 }
83 }
84
85 public function get_embeddings_env( $envId = null ) {
86 // Use provided envId or fall back to default
87 if ( empty( $envId ) ) {
88 $envId = $this->core->get_option( 'embeddings_default_env' );
89 }
90
91 // Get embeddings environments (not AI environments)
92 $envs = $this->core->get_option( 'embeddings_envs' );
93 if ( !empty( $envs ) ) {
94 foreach ( $envs as $env ) {
95 if ( isset( $env['id'] ) && $env['id'] === $envId ) {
96 return $env;
97 }
98 }
99 }
100
101 return null;
102 }
103
104 public function get_ai_env( $envId ) {
105 $envs = $this->core->get_option( 'ai_envs' );
106 if ( !empty( $envs ) ) {
107 foreach ( $envs as $env ) {
108 if ( isset( $env['id'] ) && $env['id'] === $envId ) {
109 return $env;
110 }
111 }
112 }
113 return null;
114 }
115
116 public function get_assistant( $envId, $assistantId ) {
117 $env = $this->get_ai_env( $envId );
118 if ( isset( $env['assistants'] ) ) {
119 foreach ( $env['assistants'] as $assistant ) {
120 if ( $assistant['id'] === $assistantId ) {
121 return $assistant;
122 }
123 }
124 }
125 return null;
126 }
127
128 public function get_engine_models( $query ) {
129 $envId = $query->env;
130 $env = $this->get_ai_env( $envId );
131 $models = apply_filters( 'mwai_engine_models', [], $env, $query );
132 return $models;
133 }
134 }
135