This package is a super handy JSON Schema Mapper for the LLM Agents project.
This package gives you a nifty SchemaMapper that can:
- Convert PHP classes to JSON schemas
- Turn JSON data into PHP objects
Here's a quick look at how the main components fit together:
classDiagram
class SchemaMapperInterface {
<<interface>>
+toJsonSchema(string $class): array
+toObject(string $json, ?string $class): object
}
class SchemaMapper {
-generator: JsonSchemaGenerator
-mapper: TreeMapper
+toJsonSchema(string $class): array
+toObject(string $json, ?string $class): object
}
SchemaMapperInterface <|.. SchemaMapper
SchemaMapper --> JsonSchemaGenerator
SchemaMapper --> TreeMapper
First things first, let's get this package installed:
composer require llm-agents/json-schema-mapper
If you're using the Spiral framework (and why wouldn't you be? It's awesome!), you'll need to register the bootloader.
Here's how:
- Open up your
app/src/Application/Kernel.php
file. - Add the
LLM\Agents\JsonSchema\Mapper\Integration\Spiral\SchemaMapperBootloader
to thedefineBootloaders()
method:
class Kernel extends \Spiral\Framework\Kernel
{
// ...
public function defineBootloaders(): array
{
return [
// ... other bootloaders ...
\LLM\Agents\JsonSchema\Mapper\Integration\Spiral\SchemaMapperBootloader::class,
];
}
}
And that's it! The bootloader will take care of registering all the necessary components for you.
If you're using the Laravel framework, you'll need to register the Service provider.
Here's how:
Just register the LLM\Agents\JsonSchema\Mapper\Integration\Laravel\SchemaMapperServiceProvider
And that's it! The service provider will take care of registering all the necessary components for you.
Let's say you have a User
class and you want to get its JSON schema:
use LLM\Agents\JsonSchema\Mapper\SchemaMapperInterface;
class UserController
{
public function __construct(
private SchemaMapperInterface $schemaMapper
) {}
public function getUserSchema(): array
{
return $this->schemaMapper->toJsonSchema(User::class);
}
}
Got some JSON data that you want to turn into a PHP object? No problem:
use LLM\Agents\JsonSchema\Mapper\SchemaMapperInterface;
class UserService
{
public function __construct(
private SchemaMapperInterface $schemaMapper
) {}
public function createUserFromJson(string $json): User
{
return $this->schemaMapper->toObject($json, User::class);
}
}
We'd love your help to make this package even better! Here's how you can contribute:
- Fork the repository
- Write some awesome code
- Create a new Pull Request
Please make sure your code follows PSR-12 coding standards and include tests for any new features.
This package is open-sourced software licensed under the MIT license. Feel free to use it, modify it, and share it!
That's all, folks! If you have any questions or run into any issues, don't hesitate to open an issue on GitHub.