PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.0.2
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.0.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 10 months ago base.php 10 months ago dropped-file.php 11 months ago edit-image.php 1 year ago embed.php 10 months ago feedback.php 10 months ago function.php 1 year ago image.php 10 months ago parameter.php 1 year ago text.php 10 months ago transcribe.php 11 months ago
image.php
141 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 $engine = Meow_MWAI_Engines_Factory::get( $mwai_core, $this->envId );
99 $modelInfo = $engine->retrieve_model_info( $this->model );
100 if ( empty( $modelInfo ) ) {
101 Meow_MWAI_Logging::error( 'No model info found for model: ' . $this->model, '🖼️' );
102 return;
103 }
104
105 // Let's check for resolutions.
106 if ( !isset( $modelInfo['resolutions'] ) || empty( $modelInfo['resolutions'] ) ) {
107 // Skip warning for non-image models (e.g., when using image_generation as a tool)
108 return;
109 }
110
111 // If we have no resolution set, we will use the first one
112 if ( empty( $this->resolution ) ) {
113 $this->resolution = $modelInfo['resolutions'][0]['name'];
114 }
115
116 // If we have a resolutions array ([ name, label ]), let's ensure our current resolution (name) is supported
117 $resolutions = $modelInfo['resolutions'];
118 $found = false;
119 foreach ( $resolutions as $resolution ) {
120 if ( $resolution['name'] === $this->resolution ) {
121 $found = true;
122 break;
123 }
124 }
125
126 // If we don't find the resolution, we will set it to the first one.
127 if ( !$found ) {
128 $supportedResolutions = [];
129 foreach ( $resolutions as $resolution ) {
130 $supportedResolutions[] = $resolution['name'];
131 }
132 $supportedResolutions = implode( ', ', $supportedResolutions );
133 $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 );
134 $this->resolution = $resolutions[0]['name'];
135 Meow_MWAI_Logging::error( $error, '🖼️' );
136 }
137 }
138
139 #endregion
140 }
141