PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.8.6
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.8.6
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 1 year ago assistant.php 1 year ago base.php 1 year ago dropped-file.php 1 year ago edit-image.php 1 year ago embed.php 1 year ago feedback.php 1 year ago function.php 1 year ago image.php 1 year ago parameter.php 1 year ago text.php 1 year ago transcribe.php 1 year 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