Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/llm-agents-php/schema-mapper
This package is a super handy JSON Schema Mapper for the LLM Agents project.
https://github.com/llm-agents-php/schema-mapper
json-schema-generator llm-agents php php8
Last synced: 3 days ago
JSON representation
This package is a super handy JSON Schema Mapper for the LLM Agents project.
- Host: GitHub
- URL: https://github.com/llm-agents-php/schema-mapper
- Owner: llm-agents-php
- License: mit
- Created: 2024-08-28T05:22:43.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-09-01T13:47:15.000Z (26 days ago)
- Last Synced: 2024-09-24T20:05:04.580Z (3 days ago)
- Topics: json-schema-generator, llm-agents, php, php8
- Language: PHP
- Homepage:
- Size: 9.77 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JSON Schema Mapper for LLM Agents
[![PHP](https://img.shields.io/packagist/php-v/llm-agents/json-schema-mapper.svg?style=flat-square)](https://packagist.org/packages/llm-agents/json-schema-mapper)
[![Latest Version on Packagist](https://img.shields.io/packagist/v/llm-agents/json-schema-mapper.svg?style=flat-square)](https://packagist.org/packages/llm-agents/json-schema-mapper)
[![Total Downloads](https://img.shields.io/packagist/dt/llm-agents/json-schema-mapper.svg?style=flat-square)](https://packagist.org/packages/llm-agents/json-schema-mapper)This package is a super handy JSON Schema Mapper for the LLM Agents project.
## What's it all about?
This package gives you a nifty SchemaMapper that can:
- Convert PHP classes to JSON schemas
- Turn JSON data into PHP objects## Class Diagram
Here's a quick look at how the main components fit together:
```mermaid
classDiagram
class SchemaMapperInterface {
<>
+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
```## Getting Started
### Installation
First things first, let's get this package installed:
```bash
composer require llm-agents/json-schema-mapper
```### Setting it up in Spiral
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:**
1. Open up your `app/src/Application/Kernel.php` file.
2. Add the `LLM\Agents\JsonSchema\Mapper\Integration\Spiral\SchemaMapperBootloader` to the `defineBootloaders()` method:```php
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.
### Setting it up in Laravel
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.
## How to Use It
### Converting a PHP Class to JSON Schema
Let's say you have a `User` class and you want to get its JSON schema:
```php
use LLM\Agents\JsonSchema\Mapper\SchemaMapperInterface;class UserController
{
public function __construct(
private SchemaMapperInterface $schemaMapper
) {}public function getUserSchema(): array
{
return $this->schemaMapper->toJsonSchema(User::class);
}
}
```### Converting JSON to a PHP Object
Got some JSON data that you want to turn into a PHP object? No problem:
```php
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);
}
}
```## Contributing
We'd love your help to make this package even better! Here's how you can contribute:
1. Fork the repository
2. Write some awesome code
3. Create a new Pull RequestPlease make sure your code follows PSR-12 coding standards and include tests for any new features.
## License
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.