Overview
Instructor has a built-in support for dynamically constructing JSON Schema usingJsonSchema
class. It is useful when you want to shape the structures during
runtime.
JsonSchema
class. It is useful when you want to shape the structures during
runtime.
<?php
require 'examples/boot.php';
use Cognesy\Instructor\StructuredOutput;
use Cognesy\Utils\JsonSchema\JsonSchema;
$schema = JsonSchema::object(
properties: [
JsonSchema::string('name', 'User name'),
JsonSchema::integer('age', 'User age'),
],
requiredProperties: ['name', 'age'],
);
$user = (new StructuredOutput)
->withDebugPreset('on')
->withMessages("Jason is 25 years old and works as an engineer")
->withResponseJsonSchema($schema)
->withDeserializers()
->withDefaultToStdClass()
->get();
dump($user);
assert(gettype($user) === 'object');
assert(get_class($user) === 'stdClass');
assert(isset($user->name));
assert(isset($user->age));
assert($user->name === 'Jason');
assert($user->age === 25);
?>