PHP Classes

File: docs/configuration.md

Recommend this page to a friend!
  Packages of Victor John Ukam   Prompt Deck   docs/configuration.md   Download  
File: docs/configuration.md
Role: Auxiliary data
Content type: text/markdown
Description: Auxiliary data
Class: Prompt Deck
Organize versioned artificial intelligence promts
Author: By
Last change:
Date: 2 months ago
Size: 8,376 bytes
 

Contents

Class file image Download

Configuration

<a name="introduction"></a>

Introduction

Prompt Deck ships with sensible defaults that work out of the box. Like most Laravel packages, all configuration lives in config/prompt-deck.php and every option can be overridden via environment variables for deployment flexibility.

<a name="publishing-the-configuration"></a>

Publishing the Configuration

Publish the configuration file using the Artisan command:

php artisan vendor:publish --tag=prompt-deck-config

This copies the package's default configuration to config/prompt-deck.php in your application. Once published, you can modify it freely.

<a name="prompts-path"></a>

Prompts Path

The path option determines where your versioned prompt files are stored on disk:

'path' => resource_path('prompts'),

By default, prompts live in resources/prompts/. You can change this to any directory:

'path' => base_path('ai/prompts'),

The directory is created automatically when you first run php artisan make:prompt.

<a name="file-extension"></a>

File Extension

The extension option controls the file extension used for prompt template files:

'extension' => 'md',

Markdown (.md) is the default and recommended for readability. You can change it to any extension:

| Value | Result | |---|---| | md | system.md, user.md | | txt | system.txt, user.txt | | blade.php | system.blade.php, user.blade.php | | prompt | system.prompt, user.prompt |

> Note > Changing the extension only affects newly generated files. Existing prompt files are not renamed automatically.

<a name="versioning-strategy"></a>

Versioning Strategy

The versioning option controls how prompt versions are organised:

'versioning' => 'directory',

Currently, only the directory strategy is supported. Each version is stored in its own sub-directory (v1/, v2/, etc.) within the prompt's folder:

resources/prompts/order-summary/
??? v1/
?   ??? system.md
??? v2/
?   ??? system.md
?   ??? user.md
??? metadata.json

<a name="cache"></a>

Cache

The cache section controls prompt caching behaviour. Caching avoids repeated filesystem reads by storing loaded prompts in your configured cache store.

'cache' => [
    'enabled' => env('PROMPTDECK_CACHE_ENABLED', env('APP_DEBUG', false) ? false : true),
    'store'   => env('PROMPTDECK_CACHE_STORE', 'file'),
    'ttl'     => env('PROMPTDECK_CACHE_TTL', 3600),
    'prefix'  => env('CACHE_PREFIX', env('PROMPTDECK_CACHE_PREFIX', 'prompt-deck:')),
],

<a name="enabling-disabling-cache"></a>

Enabling / Disabling

'enabled' => env('PROMPTDECK_CACHE_ENABLED', env('APP_DEBUG', false) ? false : true),

By default, caching is disabled when APP_DEBUG=true (local development) and enabled in production. This ensures that file changes are picked up immediately during development.

Override via your .env:

PROMPTDECK_CACHE_ENABLED=false   # Always disable caching
PROMPTDECK_CACHE_ENABLED=true    # Always enable caching

<a name="cache-store"></a>

Cache Store

'store' => env('PROMPTDECK_CACHE_STORE', 'file'),

The cache store to use. Must match a store name defined in your config/cache.php. Common values:

| Store | Description | |---|---| | file | File-based cache (default). Simple, no extra dependencies. | | redis | Redis cache. Fast, shared across workers. | | memcached | Memcached. Similar to Redis. | | array | In-memory only. Cleared on each request (useful for testing). |

<a name="ttl"></a>

TTL

'ttl' => env('PROMPTDECK_CACHE_TTL', 3600),

Cache time-to-live in seconds. After this duration, the prompt is re-read from disk on the next access. Default is 3600 seconds (1 hour).

<a name="cache-key-prefix"></a>

Cache Key Prefix

'prefix' => env('CACHE_PREFIX', env('PROMPTDECK_CACHE_PREFIX', 'prompt-deck:')),

The prefix prepended to all cache keys. The final cache key follows the pattern: {prefix}{prompt-name}.v{version}.

For example, with the default prefix:

prompt-deck:order-summary.v2

<a name="database-tracking"></a>

Database Tracking

The tracking section controls whether prompt versions and executions are logged to the database.

'tracking' => [
    'enabled'    => env('PROMPTDECK_TRACKING_ENABLED', env('APP_DEBUG', false) ? false : true),
    'connection' => env('PROMPTDECK_DB_CONNECTION'),
],

<a name="enabling-disabling-tracking"></a>

Enabling / Disabling

'enabled' => env('PROMPTDECK_TRACKING_ENABLED', env('APP_DEBUG', false) ? false : true),

Like caching, tracking is disabled in debug mode and enabled in production by default. When enabled:

  • Version activation is stored in the `prompt_versions` database table (instead of `metadata.json`).
  • Execution tracking via `PromptDeck::track()` inserts records into the `prompt_executions` table.

> Important > You must publish and run the migrations before enabling tracking. See Installation ? Publishing Migrations.

<a name="database-connection"></a>

Database Connection

'connection' => env('PROMPTDECK_DB_CONNECTION'),

The database connection to use for tracking tables. Set to null (the default) to use your application's default connection. Set to a named connection from config/database.php if you want tracking data stored on a separate database:

PROMPTDECK_DB_CONNECTION=analytics

<a name="ai-sdk-integration"></a>

AI SDK Integration

'scaffold_on_make_agent' => env('PROMPTDECK_SCAFFOLD_ON_MAKE_AGENT', true),

When the Laravel AI SDK is installed and this option is true, Prompt Deck automatically creates a matching prompt directory whenever you run php artisan make:agent. See the AI SDK Integration documentation for details.

Set to false to disable automatic scaffolding:

PROMPTDECK_SCAFFOLD_ON_MAKE_AGENT=false

<a name="full-configuration-reference"></a>

Full Configuration Reference

| Key | Type | Default | Description | |---|---|---|---| | path | string | resource_path('prompts') | Base directory where prompt files are stored. | | extension | string | md | File extension for prompt template files. | | versioning | string | directory | Versioning strategy (directory). | | cache.enabled | bool | true (prod) / false (debug) | Enable prompt caching. | | cache.store | string | file | Cache store name. | | cache.ttl | int | 3600 | Cache TTL in seconds. | | cache.prefix | string | prompt-deck: | Cache key prefix. | | tracking.enabled | bool | true (prod) / false (debug) | Enable database tracking. | | tracking.connection | string\|null | null | Database connection name. | | scaffold_on_make_agent | bool | true | Auto-scaffold prompts on make:agent. |

<a name="environment-variables-reference"></a>

Environment Variables Reference

| Variable | Default | Description | |---|---|---| | PROMPTDECK_CACHE_ENABLED | Dynamic | Enable/disable caching. | | PROMPTDECK_CACHE_STORE | file | Cache store to use. | | PROMPTDECK_CACHE_TTL | 3600 | Cache TTL in seconds. | | PROMPTDECK_CACHE_PREFIX | prompt-deck: | Cache key prefix. | | PROMPTDECK_TRACKING_ENABLED | Dynamic | Enable/disable database tracking. | | PROMPTDECK_DB_CONNECTION | null | Database connection for tracking. | | PROMPTDECK_SCAFFOLD_ON_MAKE_AGENT | true | Auto-scaffold on make:agent. |