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