PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.8.9
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.8.9
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 / function.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
function.php
163 lines
1 <?php
2
3 class Meow_MWAI_Query_Function {
4 public string $name;
5 public string $description;
6 public array $parameters;
7 public string $type; // 'code-engine', etc...
8 public string $target; // 'server' or 'client'
9 public ?string $id;
10
11 public function __construct(
12 string $name,
13 string $description,
14 array $parameters = [],
15 string $type = null,
16 string $id = null,
17 string $target = null
18 ) {
19 // $name: The name of the function to be called.
20 // Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.
21 if ( !preg_match( '/^[a-zA-Z0-9_-]{1,64}$/', $name ) ) {
22 throw new InvalidArgumentException( "AI Engine: Invalid function name ($name) for Meow_MWAI_Query_Function." );
23 }
24
25 foreach ( $parameters as $parameter ) {
26 if ( !( $parameter instanceof Meow_MWAI_Query_Parameter ) ) {
27 throw new InvalidArgumentException( 'AI Engine: Invalid parameter for Meow_MWAI_Query_Function.' );
28 }
29 }
30
31 $this->name = $name;
32 $this->description = $description;
33 $this->parameters = $parameters;
34 $this->type = $type ?? 'manual';
35 $this->id = $id;
36 $this->target = $target ?? 'server';
37 }
38
39 public function serializeForOpenAI() {
40 // Initialize the base structure with name and description
41 $json = [ 'name' => $this->name, 'description' => $this->description ];
42
43 // Check if parameters are set and not empty
44 if ( !empty( $this->parameters ) ) {
45 $properties = [];
46 $required = [];
47
48 // Loop through each parameter to construct the properties object
49 foreach ( $this->parameters as $parameter ) {
50
51 $properties[$parameter->name] = [
52 'type' => $parameter->type, // Assuming each parameter has a 'type' attribute
53 'description' => $parameter->description, // Assuming each parameter has a 'description' attribute
54 ];
55
56 // If the parameter type is "array" and has a "items" attribute, include it
57 if ( $parameter->type === 'array' ) {
58 $properties[$parameter->name]['items'] = [
59 'type' => 'string', // Assuming the items are strings
60 ];
61 }
62
63 // If an enum is set for the parameter, include it
64 if ( isset( $parameter->enum ) ) {
65 $properties[$parameter->name]['enum'] = $parameter->enum;
66 }
67
68 // If the parameter is required, add its name to the required array
69 if ( $parameter->required ) {
70 $required[] = $parameter->name;
71 }
72 }
73
74 // Assemble the parameters part of the JSON
75 $json['parameters'] = [
76 'type' => 'object',
77 'properties' => $properties,
78 'required' => $required,
79 ];
80 }
81
82 return $json;
83 }
84
85 public function serializeForAnthropic() {
86 $json = [
87 'name' => $this->name,
88 'description' => $this->description,
89 'input_schema' => [
90 'type' => 'object',
91 'properties' => new stdClass()
92 ],
93 ];
94
95 if ( !empty( $this->parameters ) ) {
96 $properties = [];
97 $required = [];
98 foreach ( $this->parameters as $parameter ) {
99 $properties[$parameter->name] = [
100 'type' => $parameter->type,
101 'description' => $parameter->description,
102 ];
103 if ( isset( $parameter->enum ) ) {
104 $properties[$parameter->name]['enum'] = $parameter->enum;
105 }
106 if ( $parameter->required ) {
107 $required[] = $parameter->name;
108 }
109 }
110 $json['input_schema']['properties'] = empty( $properties ) ? new stdClass() : $properties;
111 if ( !empty( $required ) ) {
112 $json['input_schema']['required'] = $required;
113 }
114 }
115
116 return $json;
117 }
118
119 public static function fromJson( array $json ): Meow_MWAI_Query_Function {
120 $funcName = $json['name'];
121 $funcDesc = $json['description'] ?? '';
122 $funcType = $json['type'] ?? null;
123 $funcId = $json['id'] ?? null;
124 $funcTarget = $json['target'] ?? null;
125 if ( $funcId === null && !empty( $json['snippetId'] ) ) {
126 $funcId = $json['snippetId'];
127 }
128 $args = [];
129 if ( !empty( $json['args'] ) ) {
130 foreach ( $json['args'] as $arg ) {
131 $name = ltrim( $arg['name'], '$' );
132 $desc = $arg['description'] ?? null;
133 $type = $arg['type'] ?? 'string';
134 $required = $arg['required'] ?? false;
135 $args[] = new Meow_MWAI_Query_Parameter( $name, $desc, $type, $required );
136 }
137 }
138 return new self( $funcName, $funcDesc, $args, $funcType, $funcId, $funcTarget );
139 }
140
141 public static function toJson( Meow_MWAI_Query_Function $function ): array {
142 $json = [
143 'name' => $function->name,
144 'desc' => $function->description,
145 'type' => $function->type,
146 'id' => $function->id,
147 'target' => $function->target,
148 'args' => [],
149 ];
150
151 foreach ( $function->parameters as $param ) {
152 $json['args'][] = [
153 'name' => $param->name,
154 'desc' => $param->description,
155 'type' => $param->type,
156 'required' => $param->required,
157 ];
158 }
159
160 return $json;
161 }
162 }
163