jpcaparas / laravel-faker-openai
An opinionated Laravel package that modifies the service container Faker behaviour to allow prompts to be generated with OpenAI
Requires
- php: ^8.2
- fakerphp/faker: ^1.24
- laravel/framework: ^10.0 || ^11.0
- nyholm/psr7: ^1.8
- openai-php/laravel: ^0.10.2
- symfony/http-client: ^7.2
Requires (Dev)
- laravel/pint: ^1.19
- orchestra/testbench: *
README
A Laravel package that extends FakerPHP by adding an AI-powered data generator using OpenAI. This allows you to generate more realistic and context-aware fake data in your Laravel applications.
Installation
Install the package via Composer:
composer require jpcaparas/laravel-faker-openai
The package will automatically register its service provider if you're using Laravel's package auto-discovery.
Configuration
- Make sure you have your OpenAI API key set in your
.env
file:
OPENAI_API_KEY=your-api-key-here
- The package uses
gpt-3.5-turbo
model by default.
Usage
The package adds a new promptAI()
method to the Faker generator. You can use it in several ways:
Basic Usage
$faker = app(\Faker\Generator::class); // Generate a fake name using AI $name = $faker->promptAI('name'); // Generate a movie review $review = $faker->promptAI('movieReview'); // Generate a movie description $description = $faker->promptAI('movieDescription');
... you can also use the built-in fake()
helper:
$name = fake('name');
With Fallback Values
You can provide fallback values that will be used if the AI request fails:
// String fallback $name = $faker->promptAI('name', 'John Doe'); // Closure fallback $name = $faker->promptAI('name', fn() => 'John Doe');
Error Handling
By default, errors are logged and the fallback value is returned. You can make it throw exceptions instead:
try { $name = $faker->promptAI('name', null, true); // Set throwOnError to true } catch (\Exception $e) { // Handle the error }
How It Works
The package works by:
- Intercepting FakerPHP method calls through a prompt
- Sending them to OpenAI's GPT model
- Returning AI-generated responses that match FakerPHP's expected output format
Testing
Run the test suite:
composer test
License
MIT