Deck, formerly Prompt Deck, provides AI prompt management for Laravel and PHP.
Organise your AI agent instructions as versioned files, compare prompt performance, and activate the right version across your app with variable interpolation, tracking, A/B testing, and Laravel AI SDK integration.
Important
Prompt Deck is now Deck by PromptPHP.
From v0.4.0, the package moved from veeqtoh/prompt-deck to promptphp/deck, and the namespace changed from Veeqtoh\PromptDeck to PromptPHP\Deck.
Upgrading from v0.3.x? See the upgrade guide.
composer require promptphp/deckPublish the config and migrations
php artisan vendor:publish --provider="PromptPHP\Deck\Providers\DeckServiceProvider"
# Run migrations.
php artisan migrateUse the Artisan command to create a versioned prompt
php artisan make:prompt order-summaryThis creates the following structure
resources/prompts/
└── order-summary/
├── v1/
│ └── system.md
└── metadata.jsonEdit resources/prompts/order-summary/v1/system.md with your prompt content. Use {{ $variable }} syntax for dynamic values:
You are a {{ $tone }} customer service agent.
Summarise the following order for the customer: {{ $order }}.Load and render prompts with the Deck facade
use PromptPHP\Deck\Facades\Deck;
// Load the active version of a prompt.
$prompt = Deck::get('order-summary');
// Render a role with variables.
$prompt->system(['tone' => 'friendly', 'order' => $orderDetails]);
// "You are a friendly customer service agent. Summarise the following order..."
// Build a messages array ready for any chat-completion API.
$messages = $prompt->toMessages(['tone' => 'friendly', 'order' => $orderDetails]);
// [['role' => 'system', 'content' => '...']]Create a new version of an existing prompt
php artisan make:prompt order-summary
# Automatically creates v2, v3, etc.Activate a specific version
php artisan prompt:activate order-summary v2
# or
php artisan prompt:activate order-summary 2Or load a specific version programmatically
$prompt = Deck::get('order-summary', 'v2');If you use the Laravel AI SDK, add the HasPromptTemplate trait to your agents. This way, you do not need to define the instructions() method as it is provided automatically.
use PromptPHP\Deck\Concerns\HasPromptTemplate;
class OrderAgent extends Agent
{
use HasPromptTemplate;
// instructions() and promptMessages() are provided automatically.
}Running make:agent will also auto-scaffold a matching prompt directory.
For the complete guide, see the full documentation below.
Full documentation can be found at https://deck.promptphp.com/ or the docs directory on GitHub.
Thank you for considering contributing to Deck by PromptPHP. Please open an issue or submit a pull request on GitHub.
We follow the Laravel Code of Conduct. We expect you to abide by these guidelines as well.
If you discover a security vulnerability within Deck by PromptPHP, please email Victor Ukam at victorjohnukam@gmail.com. All security vulnerabilities will be addressed promptly.
Deck by PromptPHP is open-sourced software licensed under the MIT license.
This library is created by Victor Ukam with contributions from the Open Source Community. If you've found this package useful, please consider sponsoring this project. It will go a long way to help with maintenance.