PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.1.8
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.1.8
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 / queries / text.php
ai-engine / classes / queries Last commit date
assistant.php 2 years ago base.php 2 years ago embed.php 2 years ago function.php 2 years ago image.php 2 years ago parameter.php 2 years ago text.php 2 years ago transcribe.php 2 years ago
text.php
169 lines
1 <?php
2
3 class Meow_MWAI_Query_Text extends Meow_MWAI_Query_Base implements JsonSerializable {
4
5 // Core Content
6 public ?string $file = null;
7 public ?string $fileType = null; // refId, url, data
8 public ?string $filePurpose = null; // assistant, vision
9
10 // Parameters
11 public float $temperature = 0.8;
12 public int $maxTokens = 1024;
13 public ?string $stop = null;
14 public ?string $responseFormat = null;
15
16 #region Constructors, Serialization
17
18 public function __construct( ?string $message = '', ?int $maxTokens = null, string $model = null ) {
19 parent::__construct( $message );
20 if ( !empty( $model ) ) {
21 $this->set_model( $model );
22 }
23 if ( !empty( $maxTokens ) ) {
24 $this->set_max_tokens( $maxTokens );
25 }
26 }
27
28 #[\ReturnTypeWillChange]
29 public function jsonSerialize() {
30 $json = [
31 //'instructions' => $this->instructions,
32 'message' => $this->message,
33
34 // 'context' => [
35 // 'messages' => $this->messages
36 // ],
37
38 'ai' => [
39 'model' => $this->model,
40 'maxTokens' => $this->maxTokens,
41 'temperature' => $this->temperature,
42 ],
43
44 'system' => [
45 'class' => get_class( $this ),
46 'envId' => $this->envId,
47 'mode' => $this->mode,
48 'scope' => $this->scope,
49 'session' => $this->session,
50 'maxMessages' => $this->maxMessages,
51 ]
52 ];
53
54 if ( !empty( $this->context ) ) {
55 $json['context']['context'] = $this->context;
56 }
57
58 if ( !empty( $this->file ) ) {
59 $json['context']['hasFile'] = true;
60 if ( $this->fileType === 'url' ) {
61 $json['context']['fileUrl'] = $this->file;
62 }
63 }
64
65 return $json;
66 }
67
68 #endregion
69
70 #region File Handling
71
72 public function set_file( string $file, string $fileType = null, string $filePurpose = null ): void {
73 if ( !empty( $fileType ) && $fileType !== 'refId' && $fileType !== 'url' && $fileType !== 'data' ) {
74 throw new Exception( "AI Engine: The file type can only be refId, url or data." );
75 }
76 if ( !empty( $filePurpose ) && $filePurpose !== 'assistant-in' && $filePurpose !== 'vision' ) {
77 throw new Exception( "AI Engine: The file purpose can only be assistant or vision." );
78 }
79 $this->file = $file;
80 $this->fileType = $fileType;
81 $this->filePurpose = $filePurpose;
82 }
83
84 public function get_file_url() {
85 if ( $this->fileType === 'url' ) {
86 return $this->file;
87 }
88 else if ( $this->fileType === 'data' ) {
89 return "data:image/jpeg;base64,{$this->file}";
90 }
91 else if ( $this->fileType === 'refId' ) {
92 throw new Exception( "AI Engine: The file type refId is not supported yet." );
93 }
94 else {
95 return null;
96 }
97 }
98
99 #endregion
100
101 #region Parameters
102
103 /**
104 * The type of return expected from the API. It can be either null or "json".
105 * @param int $maxResults The maximum number of completions.
106 */
107 public function set_response_format( $responseFormat ) {
108 if ( !empty( $responseFormat ) && $responseFormat !== 'json' ) {
109 throw new Exception( "AI Engine: The response format can only be null or json." );
110 }
111 $this->responseFormat = $responseFormat;
112 }
113
114 /**
115 * The maximum number of tokens to generate in the completion.
116 * The token count of your prompt plus max_tokens cannot exceed the model's context length.
117 * Most models have a context length of 2048 tokens (except for the newest models, which support 4096).
118 * @param float $maxTokens The maximum number of tokens.
119 */
120 public function set_max_tokens( int $maxTokens ): void {
121 $this->maxTokens = $maxTokens;
122 }
123
124 /**
125 * Set the sampling temperature to use. Higher values means the model will take more risks.
126 * Try 0.9 for more creative applications, and 0 for ones with a well-defined reply.
127 * @param float $temperature The temperature.
128 */
129 public function set_temperature( float $temperature ): void {
130 $temperature = floatval( $temperature );
131 if ( $temperature > 1 ) {
132 $temperature = 1;
133 }
134 if ( $temperature < 0 ) {
135 $temperature = 0;
136 }
137 $this->temperature = round( $temperature, 2 );
138 }
139
140 public function set_stop( string $stop ): void {
141 $this->stop = $stop;
142 }
143
144 #endregion
145
146 #region Inject Params
147
148 // Based on the params of the query, update the attributes
149 public function inject_params( array $params ): void
150 {
151 parent::inject_params( $params );
152 $params = $this->convert_keys( $params );
153
154 if ( !empty( $params['maxTokens'] ) && intval( $params['maxTokens'] ) > 0 ) {
155 $this->set_max_tokens( intval( $params['maxTokens'] ) );
156 }
157 if ( !empty( $params['temperature'] ) ) {
158 $this->set_temperature( $params['temperature'] );
159 }
160 if ( !empty( $params['stop'] ) ) {
161 $this->set_stop( $params['stop'] );
162 }
163 if ( !empty( $params['responseFormat'] ) ) {
164 $this->set_response_format( $params['responseFormat'] );
165 }
166 }
167
168 #endregion
169 }