PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.0.4
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.0.4
3.5.9 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 / base.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
base.php
252 lines
1 <?php
2
3 class Meow_MWAI_Query_Base implements JsonSerializable {
4 public ?string $session = null;
5 public string $env = ''; // I don't like this env, as it can be confused with envId. Could be renamed 'domain' or 'source'.
6 public string $prompt = '';
7 public string $model = '';
8 public string $mode = '';
9 public int $maxResults = 1;
10
11 // Functions
12 public array $functions = [];
13 public ?string $functionCall = null;
14
15 // Overrides for env
16 public string $envId = '';
17 public ?string $apiKey = null;
18 public ?string $service = null; // TODO: This should be removed at some point. Should use envId instead.
19
20 // Seem to be only used by the Assistants, to get the current thread/discussion.
21 // Maybe we should try to move this to the assistant class, or use it as ExtraParams.
22 public ?string $botId = null;
23
24 // Extra Parameters (used by specific services, or for statistics, etc)
25 public array $extraParams = [];
26
27 public function __construct( $prompt = '' ) {
28 global $mwai_core;
29 if ( is_string( $prompt ) ) {
30 $this->setPrompt( $prompt );
31 }
32 $this->session = $mwai_core->get_session_id();
33 }
34
35 #[\ReturnTypeWillChange]
36 public function jsonSerialize() {
37 return [
38 'class' => get_class( $this ),
39 'env' => $this->env,
40 'envId' => $this->envId,
41 'prompt' => $this->prompt,
42 'model' => $this->model,
43 'mode' => $this->mode,
44 'session' => $this->session,
45 'maxResults' => $this->maxResults
46 ];
47 }
48
49 public function addFunction( Meow_MWAI_Query_Function $function ): void {
50 $this->functions[] = $function;
51 $this->functionCall = "auto";
52 }
53
54 public function setFunctions( array $functions ): void {
55 $this->functions = $functions;
56 $this->functionCall = "auto";
57 }
58
59 public function getFunctions(): array {
60 return $this->functions;
61 }
62
63 public function replace( $search, $replace ) {
64 $this->prompt = str_replace( $search, $replace, $this->prompt );
65 }
66
67 public function getLastPrompt(): string {
68 return $this->prompt;
69 }
70
71 /**
72 * The environment, like "chatbot", "imagesbot", "chatbot-007", "textwriter", etc...
73 * Used for statistics, mainly.
74 * @param string $env The environment.
75 */
76 public function setEnv( string $env ): void {
77 $this->env = $env;
78 }
79
80 /**
81 * The environment ID for AI services.
82 * Used for statistics, mainly.
83 * @param string $envId The environment ID.
84 */
85 public function setEnvId( string $envId ): void {
86 $this->envId = $envId;
87 }
88
89 /**
90 * ID of the model to use.
91 * @param string $model ID of the model to use.
92 */
93 public function setModel( string $model ) {
94 $this->model = $model;
95 }
96
97 public function getModel() {
98 return $this->model;
99 }
100
101 /**
102 * The mode
103 * @param string $mode.
104 */
105 public function setMode( string $mode ) {
106 $this->mode = $mode;
107 }
108
109 /**
110 * Given a prompt, the model will return one or more predicted completions.
111 * It can also return the probabilities of alternative tokens at each position.
112 * @param string $prompt The prompt to generate completions.
113 */
114 public function setPrompt( string $prompt ) {
115 $this->prompt = $prompt;
116 }
117
118 public function getPrompt() {
119 return $this->prompt;
120 }
121
122 /**
123 * Similar to the prompt, but focus on the new/last message.
124 * Only used when the model has a chat mode (and only used in messages).
125 * With Meow_MWAI_Query_Base, this is the same as setPrompt.
126 * @param string $prompt The messages to generate completions.
127 */
128 public function setNewMessage( string $newMessage ): void {
129 $this->setPrompt( $newMessage );
130 }
131
132 public function getLastMessage() {
133 return $this->getPrompt();
134 }
135
136 public function getMessages() {
137 return null;
138 }
139
140 /**
141 * The API key to use.
142 * @param string $apiKey The API key.
143 */
144 public function setApiKey( string $apiKey ) {
145 $this->apiKey = $apiKey;
146 }
147
148 /**
149 * The service to use.
150 * @param string $service The service.
151 */
152 public function setService( string $service ) {
153 $this->service = $service;
154 }
155
156 /**
157 * The session ID to use.
158 * @param string $session The session ID.
159 */
160 public function setSession( string $session ) {
161 $this->session = $session;
162 }
163
164 /**
165 * The bot ID to use.
166 * @param string $botId The bot ID.
167 */
168 public function setBotId( string $botId ) {
169 $this->botId = $botId;
170 }
171
172 /**
173 * How many completions to generate for each prompt.
174 * Because this parameter generates many completions, it can quickly consume your token quota.
175 * Use carefully and ensure that you have reasonable settings for max_tokens and stop.
176 * @param float $maxResults Number of completions.
177 */
178 public function setMaxResults( int $maxResults ) {
179 $this->maxResults = $maxResults;
180 }
181
182 // **
183 // * Check if everything is correct, otherwise fix it (like the max number of tokens).
184 // */
185 public function finalChecks() {
186 }
187
188 protected function convertKeys( $params )
189 {
190 $newParams = [];
191 foreach ( $params as $key => $value ) {
192 $newKey = '';
193 $capitalizeNextChar = false;
194 for ( $i = 0; $i < strlen( $key ); $i++ ) {
195 if ( $key[$i] == '_' ) {
196 $capitalizeNextChar = true;
197 }
198 else {
199 $newKey .= $capitalizeNextChar ? strtoupper($key[$i]) : $key[$i];
200 $capitalizeNextChar = false;
201 }
202 }
203 $newParams[$newKey] = $value;
204 }
205 return $newParams;
206 }
207
208 // Quick and dirty token estimation
209 // Let's keep this synchronized with Helpers in JS
210 protected function estimateTokens( $promptOrMessages ): int
211 {
212 $text = "";
213 // https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
214 if ( is_array( $promptOrMessages ) ) {
215 foreach ( $promptOrMessages as $message ) {
216 $role = $message['role'];
217 $content = $message['content'];
218 if ( is_array( $content ) ) {
219 foreach ( $content as $subMessage ) {
220 if ( $subMessage['type'] === 'text' ) {
221 $text .= $subMessage['text'];
222 }
223 }
224 }
225 else {
226 $text .= "=#=$role\n$content=#=\n";
227 }
228 }
229 }
230 else {
231 $text = $promptOrMessages;
232 }
233 $tokens = 0;
234 return apply_filters( 'mwai_estimate_tokens', (int)$tokens, $text, $this->model );
235 }
236
237 public function toJson() {
238 return json_encode( $this );
239 }
240
241 #region Extra Params
242 public function setExtraParam( string $key, $value ): void {
243 $this->extraParams[$key] = $value;
244 }
245
246 public function getExtraParam( string $key ) {
247 $value = $this->extraParams[$key];
248 return $value;
249 }
250
251 #endregion Extra Params
252 }