| Server IP : 217.11.249.137 / Your IP : 216.73.216.54 Web Server : Apache System : FreeBSD triton.blueboard.cz 13.5-STABLE FreeBSD 13.5-STABLE stable/13-a3d32f9e6 GENERIC amd64 User : www ( 80) PHP Version : 8.0.30 Disable Function : ini_restore, show_source, socket_select, socket_create_listen, socket_create_pair, socket_listen, socket_strerror, shell_exec, proc_nice, proc_terminate, readlink, symlink, link, pfsocketopen, ini_alter, dl, pcntl_exec, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifsignaled, pcntl_wifstoped, pcntl_wifstopsig, pcntl_wtermsig, socket_accept, socket_bind, socket_create, socket_create_listen, popen, zlib_decode MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /data/www/24781/extramagazin_cz/www/wp-includes/php-ai-client/src/Tools/DTO/ |
Upload File : |
<?php
declare (strict_types=1);
namespace WordPress\AiClient\Tools\DTO;
use WordPress\AiClient\Common\AbstractDataTransferObject;
/**
* Represents a function declaration for AI models.
*
* This DTO describes a function that can be called by the AI model,
* including its name, description, and parameter schema.
*
* @since 0.1.0
*
* @phpstan-type FunctionDeclarationArrayShape array{
* name: string,
* description: string,
* parameters?: array<string, mixed>
* }
*
* @extends AbstractDataTransferObject<FunctionDeclarationArrayShape>
*/
class FunctionDeclaration extends AbstractDataTransferObject
{
public const KEY_NAME = 'name';
public const KEY_DESCRIPTION = 'description';
public const KEY_PARAMETERS = 'parameters';
/**
* @var string The name of the function.
*/
private string $name;
/**
* @var string A description of what the function does.
*/
private string $description;
/**
* @var array<string, mixed>|null The JSON schema for the function parameters.
*/
private ?array $parameters;
/**
* Constructor.
*
* @since 0.1.0
*
* @param string $name The name of the function.
* @param string $description A description of what the function does.
* @param array<string, mixed>|null $parameters The JSON schema for the function parameters.
*/
public function __construct(string $name, string $description, ?array $parameters = null)
{
$this->name = $name;
$this->description = $description;
$this->parameters = $parameters;
}
/**
* Gets the function name.
*
* @since 0.1.0
*
* @return string The function name.
*/
public function getName(): string
{
return $this->name;
}
/**
* Gets the function description.
*
* @since 0.1.0
*
* @return string The function description.
*/
public function getDescription(): string
{
return $this->description;
}
/**
* Gets the function parameters schema.
*
* @since 0.1.0
*
* @return array<string, mixed>|null The parameters schema.
*/
public function getParameters(): ?array
{
return $this->parameters;
}
/**
* {@inheritDoc}
*
* @since 0.1.0
*/
public static function getJsonSchema(): array
{
return ['type' => 'object', 'properties' => [self::KEY_NAME => ['type' => 'string', 'description' => 'The name of the function.'], self::KEY_DESCRIPTION => ['type' => 'string', 'description' => 'A description of what the function does.'], self::KEY_PARAMETERS => ['type' => 'object', 'description' => 'The JSON schema for the function parameters.', 'additionalProperties' => \true]], 'required' => [self::KEY_NAME, self::KEY_DESCRIPTION]];
}
/**
* {@inheritDoc}
*
* @since 0.1.0
*
* @return FunctionDeclarationArrayShape
*/
public function toArray(): array
{
$data = [self::KEY_NAME => $this->name, self::KEY_DESCRIPTION => $this->description];
if ($this->parameters !== null) {
$data[self::KEY_PARAMETERS] = $this->parameters;
}
return $data;
}
/**
* {@inheritDoc}
*
* @since 0.1.0
*/
public static function fromArray(array $array): self
{
static::validateFromArrayData($array, [self::KEY_NAME, self::KEY_DESCRIPTION]);
return new self($array[self::KEY_NAME], $array[self::KEY_DESCRIPTION], $array[self::KEY_PARAMETERS] ?? null);
}
}