PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.1.2
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.1.2
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 / query / image.php
ai-engine / classes / query Last commit date
assist-feedback.php 10 months ago assistant.php 8 months ago base.php 8 months ago dropped-file.php 8 months ago edit-image.php 8 months ago embed.php 10 months ago feedback.php 10 months ago function.php 8 months ago image.php 8 months ago parameter.php 11 months ago text.php 8 months ago transcribe.php 8 months ago
image.php
152 lines
1 <?php
2
3 class Meow_MWAI_Query_Image extends Meow_MWAI_Query_Base {
4 public ?string $resolution = null;
5 public ?string $style = null;
6 public ?string $localDownload = 'uploads';
7 public ?string $localDownloadExpiry = 'uploads';
8
9 #region Constructors, Serialization
10
11 public function __construct( ?string $message = '', ?string $model = null ) {
12 parent::__construct( $message );
13 $this->model = $model;
14 $this->feature = 'text-to-image'; // image-to-image, inpainting, etc
15 global $mwai_core;
16 $this->localDownload = $mwai_core->get_option( 'image_local_download' );
17 $this->localDownloadExpiry = $mwai_core->get_option( 'image_expires_download' );
18 }
19
20 #[\ReturnTypeWillChange]
21 public function jsonSerialize(): array {
22 $json = [
23 'message' => $this->message,
24
25 'ai' => [
26 'model' => $this->model,
27 'feature' => $this->feature,
28 'resolution' => $this->resolution
29 ],
30
31 'system' => [
32 'class' => get_class( $this ),
33 'envId' => $this->envId,
34 'scope' => $this->scope,
35 'session' => $this->session,
36 'customId' => $this->customId,
37 ]
38 ];
39
40 if ( !empty( $this->context ) ) {
41 $json['context']['content'] = $this->context;
42 }
43
44 return $json;
45 }
46
47 #endregion
48
49 #region Parameters
50
51 public function set_resolution( string $resolution ) {
52 $this->resolution = $resolution;
53 }
54
55 public function set_style( string $style ) {
56 $this->style = $style;
57 }
58
59 /**
60 * Set how the image will be treated locally, if it will be downloaded or not, etc.
61 * @param string $localDownload The local download method. Could be 'uploads', 'library' or null.
62 */
63 public function set_local_download( ?string $localDownload ) {
64 $this->localDownload = $localDownload;
65 }
66
67 // Based on the params of the query, update the attributes
68 public function inject_params( array $params ): void {
69 parent::inject_params( $params );
70 $params = $this->convert_keys( $params );
71
72 if ( !empty( $params['resolution'] ) ) {
73 $this->set_resolution( $params['resolution'] );
74 }
75 if ( !empty( $params['style'] ) ) {
76 $this->set_style( $params['style'] );
77 }
78 // Check both camelCase and snake_case versions for compatibility
79 if ( array_key_exists( 'localDownload', $params ) ) {
80 $this->set_local_download( $params['localDownload'] );
81 } elseif ( array_key_exists( 'local_download', $params ) ) {
82 $this->set_local_download( $params['local_download'] );
83 }
84 }
85
86 #endregion
87
88 #region Final Checks
89
90 public function final_checks() {
91 parent::final_checks();
92
93 // Since DALL-E 3 only supports 1 image, we force it.
94 // (Likely the same limitation for other models.)
95 $this->maxResults = 1;
96
97 global $mwai_core;
98
99 $engine = Meow_MWAI_Engines_Factory::get( $mwai_core, $this->envId );
100
101 // If model is empty, use the image-specific default model (not the general default)
102 if ( empty( $this->model ) ) {
103 $this->model = $mwai_core->get_option( 'ai_images_default_model' );
104 if ( empty( $this->model ) ) {
105 // Fallback to general default if image-specific default is not set
106 $this->model = $mwai_core->get_option( 'ai_default_model' );
107 }
108 }
109
110 $modelInfo = $engine->retrieve_model_info( $this->model );
111 if ( empty( $modelInfo ) ) {
112 Meow_MWAI_Logging::error( 'No model info found for model: ' . $this->model, '🖼️' );
113 return;
114 }
115
116 // Let's check for resolutions.
117 if ( !isset( $modelInfo['resolutions'] ) || empty( $modelInfo['resolutions'] ) ) {
118 // Skip warning for non-image models (e.g., when using image_generation as a tool)
119 return;
120 }
121
122 // If we have no resolution set, we will use the first one
123 if ( empty( $this->resolution ) ) {
124 $this->resolution = $modelInfo['resolutions'][0]['name'];
125 }
126
127 // If we have a resolutions array ([ name, label ]), let's ensure our current resolution (name) is supported
128 $resolutions = $modelInfo['resolutions'];
129 $found = false;
130 foreach ( $resolutions as $resolution ) {
131 if ( $resolution['name'] === $this->resolution ) {
132 $found = true;
133 break;
134 }
135 }
136
137 // If we don't find the resolution, we will set it to the first one.
138 if ( !$found ) {
139 $supportedResolutions = [];
140 foreach ( $resolutions as $resolution ) {
141 $supportedResolutions[] = $resolution['name'];
142 }
143 $supportedResolutions = implode( ', ', $supportedResolutions );
144 $error = sprintf( 'The model %s does not support the resolution %s (using %s instead). Supported resolutions are: %s.', $this->model, $this->resolution, $resolutions[0]['name'], $supportedResolutions );
145 $this->resolution = $resolutions[0]['name'];
146 Meow_MWAI_Logging::error( $error, '🖼️' );
147 }
148 }
149
150 #endregion
151 }
152