PHP code example of prismaticoder / laravel-prompt-manager
1. Go to this page and download the library: Download prismaticoder/laravel-prompt-manager library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
prismaticoder / laravel-prompt-manager example snippets
namespace App\Prompts;
use Prismaticoder\LaravelPromptManager\BaseLLMPrompt;
use Prismaticoder\LaravelPromptManager\PromptVersionManager;
class ProductDescriptionPrompt extends BaseLLMPrompt
{
private string $productName;
private array $features;
public function __construct(string $productName, array $features)
{
$this->productName = $productName;
$this->features = $features;
}
protected function versions(): PromptVersionManager
{
return new PromptVersionManager([
'v1' => fn() => $this->generateBasicPrompt(),
'v1-creative' => fn() => $this->generateCreativePrompt(),
'v1-technical' => fn() => $this->generateTechnicalPrompt(),
]);
}
protected function defaultVersion(): string
{
return 'v1';
}
private function generateBasicPrompt(): string
{
return <<<PROMPT
Write a product description for {$this->productName}.
Key features:
- " . implode("\n- ", $this->features)
PROMPT;
}
}
$prompt = ProductDescriptionPrompt::make('Ergonomic Chair', [
'Adjustable height',
'Lumbar support',
'Memory foam'
]);
// Default version
$result = $prompt->generate();
echo $result->prompt; // The generated prompt text
echo "Version used: {$result->version}" // v1
echo "Token count: {$result->token_count}";
// Specific version
$result = $prompt->generate('v1-creative');
class CustomerSupportPrompt extends BaseLLMPrompt
{
protected function defaultVersion(): string
{
return 'v1-gpt3.5'; // Only defaults to this version when no version selector is defined.
}
protected function versions(): PromptVersionManager
{
return new PromptVersionManager([
'v1-gpt3.5' => fn() => $this->basePromptWithConstraints(2000),
'v1-gpt4' => fn() => $this->basePromptWithConstraints(4000),
'v1-claude' => fn() => $this->generateClaudePrompt(),
]);
}
protected function versionSelector(): Closure
{
return function(array $versions) {
$model = config('services.llm.default_model');
return match($model) {
'gpt-4' => 'v1-gpt4',
'claude' => 'v1-claude',
default => 'v1-gpt3.5'
};
};
}
}
class TransactionFraudAnalysisPrompt extends BaseLLMPrompt
{
private Transaction $transaction;
private array $riskMetrics;
public function __construct(Transaction $transaction, array $riskMetrics)
{
$this->transaction = $transaction;
$this->riskMetrics = $riskMetrics;
}
protected function versions(): PromptVersionManager
{
return new PromptVersionManager([
'v1' => fn() => $this->getTemplateAndCompile('standard'),
'v2-high-risk' => fn() => $this->getTemplateAndCompile('high_risk'),
]);
}
private function getTemplateAndCompile(string $templateKey): string
{
// Fetch template from your existing storage
$template = PromptTemplate::findByKey($templateKey);
return collect([
'amount' => $this->transaction->amount,
'merchant' => $this->transaction->merchant_name,
'risk_score' => $this->riskMetrics['score'],
])->reduce(
fn(string $prompt, $value, $key) => str_replace("{{$key}}", $value, $prompt),
$template
);
}
protected function versionSelector(): Closure
{
return fn() => $this->riskMetrics['score'] > 0.7 ? 'v2-high-risk' : 'v1';
}
}
// Usage example:
$prompt = TransactionFraudAnalysisPrompt::make($transaction, $riskMetrics);
$result = $prompt->generate(); // Version selected based on risk score
use Prismaticoder\LaravelPromptManager\Enums\VersionSelector;
class ProductCopyPrompt extends BaseLLMPrompt
{
protected function versionSelector(): VersionSelector
{
return VersionSelector::RANDOM;
}
protected function defaultVersion(): string
{
return 'v1-formal'; // Only defaults to this version when no version selector is defined.
}
protected function versions(): PromptVersionManager
{
return new PromptVersionManager([
'v1-formal' => fn() => $this->formalTone(),
'v1-casual' => fn() => $this->casualTone(),
'v1-persuasive' => fn() => $this->persuasiveTone(),
]);
}
}
class TutorialPrompt extends BaseLLMPrompt
{
private User $user;
public function __construct(User $user)
{
$this->user = $user;
}
protected function versionSelector(): Closure
{
return fn() => match($this->user->expertise_level) {
'beginner' => 'v1-basic',
'intermediate' => 'v1-detailed',
'expert' => 'v1-advanced',
default => $this->defaultVersion()
};
}
}
class ComplexPrompt extends BaseLLMPrompt
{
protected function tokenCounter(): Closure
{
return fn(string $prompt) => Tiktoken::count($prompt);
}
}