1. Go to this page and download the library: Download sourceability/portal library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Sourceability\Portal\Bundle\DependencyInjection\Attribute\AutoconfigureSpell;
#[AutoconfigureSpell('Categorize')]
class CategorizeSpell implements Spell
{
use Sourceability\Portal\Spell\Spell;
/*
* @implements Spell<TInput, TOutput>
*/
class MySpell implements Spell
/**
* @return string|array<string, mixed>|JsonSerializable The JSON-Schema of the desired completion output.
*/
public function getSchema(): string|array|JsonSerializable;
public function getSchema()
{
return [
'type' => 'object',
'properties' => [
'release' => [
'description' => 'The release reference/key.',
'examples' => ['v1.0.1', 'rc3', '2022.48.2'],
]
],
];
}
/**
* @param TInput $input
*/
public function getPrompt($input): string
{
return sprintf('Do something with ' . $input);
}
/**
* @param array<mixed> $completionValue
* @return array<TOutput>
*/
public function transcribe(array $completionValue): array
{
return array_map(fn ($item) => new Money($item), $completionValue);
}
/**
* @return array<TInput>
*/
public function getExamples(): array;
$portal = new Portal(...);
$result = $portal->cast(
new FraudSpell(),
['user' => $user->toArray()] // This contains TInput
);
// $result->value contains array<TOutput>
actOnThe($result->value);
$transferResult = $portal->transfer(
['type' => 'string'], // output schema
'The prompt'
);
$transferResult->value; // the json decoded value
use Sourceability\Portal\Spell\ApiPlatformSpell;
/**
* @extends ApiPlatformSpell<string, array<Part>>
*/
class PartListSpell extends ApiPlatformSpell
{
public function getExamples(): array
{
return [
'smartwatch',
'bookshelf speaker',
];
}
public function getPrompt($input): string
{
return sprintf('A list of parts to build a %s.', $input);
}
protected function isCollection(): bool
{
return true;
}
protected function getClass(): string
{
return Part::class;
}
}
use ApiPlatform\Metadata\ApiProperty;
class Part
{
#[ApiProperty(
description: 'Product description',
schema: ['maxLength' => 100],
)]
public string $description;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.