eloquage / laravel-prompt-renderer
Configurable Blade prompt rendering for Laravel AI agents
Package info
github.com/eloquage/laravel-prompt-renderer
pkg:composer/eloquage/laravel-prompt-renderer
Fund package maintenance!
Requires
- php: ^8.4
- illuminate/contracts: ^11.0||^12.0||^13.0
- illuminate/database: ^11.0||^12.0||^13.0
- illuminate/support: ^11.0||^12.0||^13.0
- illuminate/view: ^11.0||^12.0||^13.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^11.0.0||^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Laravel Prompt Renderer
Render Blade prompt templates through one API with Blade, database, cache, stack, or custom sources.
Requirements: PHP 8.4+ and Laravel 11, 12, or 13.
Installation
composer require eloquage/laravel-prompt-renderer
Publish config (optional):
php artisan vendor:publish --tag=prompt-renderer-config
Publish views (optional):
php artisan vendor:publish --tag=prompt-renderer-views
Publish migrations when using the database or cache drivers:
php artisan vendor:publish --tag=prompt-renderer-migrations php artisan migrate
Usage
use Eloquage\LaravelPromptRenderer\PromptRenderer; $prompt = app(PromptRenderer::class)->render('example', [ 'context' => 'document review', ]);
Templates are qualified with the configured namespace (prompts by default):
render('example')→prompts.examplerender('evidence.ocr-vision')→prompts.evidence.ocr-vision
Prompt sources
Set the active source via PROMPT_RENDERER_SOURCE or config('prompt-renderer.default_source'):
| Driver | Description |
|---|---|
blade |
Default. Resolves views from app paths, published overrides, then package stubs. |
database |
Loads Blade bodies from the prompt_templates table. |
cache |
Caches template contents from an underlying driver (default: database). |
stack |
Tries drivers in config('prompt-renderer.stack') order; first match wins. |
Example stack configuration:
PROMPT_RENDERER_SOURCE=stack
'stack' => ['cache', 'database', 'blade'],
Laravel AI SDK
Use rendered prompts as agent instructions:
use Eloquage\LaravelPromptRenderer\PromptRenderer; use Laravel\Ai\Contracts\Agent; use Laravel\Ai\Promptable; class ReviewAgent implements Agent { use Promptable; public function __construct(private PromptRenderer $prompts) {} public function instructions(): string { return $this->prompts->render('example', [ 'context' => 'case review', ]); } }
Custom drivers
Register custom sources in a service provider:
use Eloquage\LaravelPromptRenderer\Contracts\PromptSource; use Eloquage\LaravelPromptRenderer\Managers\PromptSourceManager; PromptSourceManager::extend('redis', fn (): PromptSource => new RedisPromptSource());
Testing
composer test
composer analyse
composer format
License
MIT.
