PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.9.0
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.9.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 / query / image.php
ai-engine / classes / query Last commit date
assist-feedback.php 11 months ago assistant.php 11 months ago base.php 11 months ago dropped-file.php 11 months ago edit-image.php 11 months ago embed.php 11 months ago feedback.php 11 months ago function.php 11 months ago image.php 11 months ago parameter.php 11 months ago text.php 11 months ago transcribe.php 11 months ago
image.php
140 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 ]
37 ];
38
39 if ( !empty( $this->context ) ) {
40 $json['context']['content'] = $this->context;
41 }
42
43 return $json;
44 }
45
46 #endregion
47
48 #region Parameters
49
50 public function set_resolution( string $resolution ) {
51 $this->resolution = $resolution;
52 }
53
54 public function set_style( string $style ) {
55 $this->style = $style;
56 }
57
58 /**
59 * Set how the image will be treated locally, if it will be downloaded or not, etc.
60 * @param string $localDownload The local download method. Could be 'uploads', 'library' or null.
61 */
62 public function set_local_download( ?string $localDownload ) {
63 $this->localDownload = $localDownload;
64 }
65
66 // Based on the params of the query, update the attributes
67 public function inject_params( array $params ): void {
68 parent::inject_params( $params );
69 $params = $this->convert_keys( $params );
70
71 if ( !empty( $params['resolution'] ) ) {
72 $this->set_resolution( $params['resolution'] );
73 }
74 if ( !empty( $params['style'] ) ) {
75 $this->set_style( $params['style'] );
76 }
77 // Check both camelCase and snake_case versions for compatibility
78 if ( array_key_exists( 'localDownload', $params ) ) {
79 $this->set_local_download( $params['localDownload'] );
80 } elseif ( array_key_exists( 'local_download', $params ) ) {
81 $this->set_local_download( $params['local_download'] );
82 }
83 }
84
85 #endregion
86
87 #region Final Checks
88
89 public function final_checks() {
90 parent::final_checks();
91
92 // Since DALL-E 3 only supports 1 image, we force it.
93 // (Likely the same limitation for other models.)
94 $this->maxResults = 1;
95
96 global $mwai_core;
97 $engine = Meow_MWAI_Engines_Factory::get( $mwai_core, $this->envId );
98 $modelInfo = $engine->retrieve_model_info( $this->model );
99 if ( empty( $modelInfo ) ) {
100 Meow_MWAI_Logging::error( 'No model info found for model: ' . $this->model, '🖼️' );
101 return;
102 }
103
104 // Let's check for resolutions.
105 if ( !isset( $modelInfo['resolutions'] ) || empty( $modelInfo['resolutions'] ) ) {
106 Meow_MWAI_Logging::error( 'No resolutions defined for model: ' . $this->model, '🖼️' );
107 return;
108 }
109
110 // If we have no resolution set, we will use the first one
111 if ( empty( $this->resolution ) ) {
112 $this->resolution = $modelInfo['resolutions'][0]['name'];
113 }
114
115 // If we have a resolutions array ([ name, label ]), let’s ensure our current resolution (name) is supported
116 $resolutions = $modelInfo['resolutions'];
117 $found = false;
118 foreach ( $resolutions as $resolution ) {
119 if ( $resolution['name'] === $this->resolution ) {
120 $found = true;
121 break;
122 }
123 }
124
125 // If we don't find the resolution, we will set it to the first one.
126 if ( !$found ) {
127 $supportedResolutions = [];
128 foreach ( $resolutions as $resolution ) {
129 $supportedResolutions[] = $resolution['name'];
130 }
131 $supportedResolutions = implode( ', ', $supportedResolutions );
132 $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 );
133 $this->resolution = $resolutions[0]['name'];
134 Meow_MWAI_Logging::error( $error, '🖼️' );
135 }
136 }
137
138 #endregion
139 }
140