| Server IP : 216.106.184.20 / Your IP : 216.73.216.234 Web Server : LiteSpeed System : Linux asmodeus.in-hell.com 5.14.0-570.58.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 29 06:24:11 EDT 2025 x86_64 User : sekoaid1 ( 1891) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/sekoaid1/public_html/wp-content/plugins/ai-engine/classes/queries/ |
Upload File : |
<?php
class Meow_MWAI_Query_Function implements JsonSerializable {
public string $name;
public string $description;
public array $parameters;
public string $type;
public function __construct( string $name, string $description, array $parameters = [], string $type = 'PHP' ) {
// $name: The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.
if ( !preg_match( '/^[a-zA-Z0-9_-]{1,64}$/', $name ) ) {
throw new InvalidArgumentException( "Invalid function name ($name). It must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64." );
}
foreach ( $parameters as $parameter ) {
if ( !( $parameter instanceof Meow_MWAI_Query_Parameter ) ) {
throw new InvalidArgumentException( "Invalid parameter." );
}
}
$this->name = $name;
$this->description = $description;
$this->parameters = $parameters;
$this->type = $type;
}
#[\ReturnTypeWillChange]
public function jsonSerialize()
{
$json = [ 'name' => $this->name, 'description' => $this->description ];
// OpenAI requires at least one parameter, so we'll add one if there are none.
if ( empty( $this->parameters ) ) {
$newParam = new Meow_MWAI_Query_Parameter(
'intendedActionConfidence',
'The probability, in a range from 0 to 100, representing OpenAI’s confidence that invoking this function aligns with its intended action.',
'integer',
false
);
$this->parameters = [ $newParam ];
}
if ( !empty( $this->parameters ) ) {
$params = [];
foreach ( $this->parameters as $parameter ) {
$params[$parameter->name] = $parameter;
}
$required = array_filter( $this->parameters, function ( $param ) { return $param->required; } );
$required = array_map( function ( $param ) { return $param->name; }, $required );
$json['parameters'] = [ 'type' => 'object', 'properties' => $params ];
$json['required'] = $required;
}
return $json;
}
}