PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.0.3
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.0.3
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 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
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