اگر در یک سال اخیر با APIهای هوش مصنوعی مثل OpenAI سر و کار داشتهاید، حتماً متوجه شدهاید که مدیریت پرامپتها (Prompts) بهسرعت در حال تبدیل شدن به یک چالش کثیف در کدنویسی است. قرار دادن متون چندخطی و شرطی در کنترلرها، با اصول Clean Code در تضاد است. در این مقاله، پکیج نوظهور Prompt را بررسی میکنیم که با ایدهای نبوغآمیز، قدرت Blade را به دنیای هوش مصنوعی آورده است.
چرا پکیج Prompt یک تغییر دهنده بازی (Game Changer) است؟
در حالت عادی، شما مجبورید پرامپتهای خود را به صورت رشتههای متنی (Strings) مدیریت کنید. اما وقتی نیاز به شروط پیچیده دارید (مثلاً: "اگر کاربر اشتراک ویژه داشت، لحن پاسخ رسمی باشد")، کدهای شما پر از دستورات if-else و الحاق رشتهها (Concatenation) میشود. پکیج Prompt این مشکل را با استفاده از موتور View لاراول حل کرده است.
۱. نصب و راهاندازی سریع
این پکیج به قدری سبک است که در چند ثانیه نصب میشود:
composer require chimit/prompt
۲. سازماندهی پرامپتها (ساختار فایل)
یکی از بهترین قابلیتهای این ابزار، امکان سازماندهی پرامپتها در پوشههای مجزا است. شما دیگر پرامپتها را در دیتابیس یا فایلهای Config گم نمیکنید. ساختار پیشنهادی به این صورت است:
└── prompts/
├── seo/
│ └── product-meta.md
├── support/
│ └── ticket-reply.md
└── welcome.md
۳. جادوی Blade در Markdown (مثال کاربردی)
بیایید یک سناریوی واقعی را در نظر بگیریم. شما میخواهید برای یک محصول فروشگاهی، دیسکریپشن متا تولید کنید. فایل resources/prompts/seo/product-meta.md شما میتواند اینگونه باشد:
# Role
You are an SEO expert specializing in e-commerce.
Generate a compelling meta description for this product.
**Product:** {{ $product->name }}
**Price:** ${{ number_format($product->price, 2) }}
**Product Description:**
---
{!! $product->description !!}
---
@if($product->discount_percentage > 0)
**Special Offer:** {{ $product->discount_percentage }}% OFF - Limited Time!
@endif
Requirements:
- Maximum 160 characters
- Include keywords: {{ implode(', ', $keywords) }}
{!! !!} برای رندر کردن توضیحات محصول (که ممکن است حاوی تگهای HTML باشد) و از @if برای اضافه کردن بخش "تخفیف ویژه" استفاده کردیم. این یعنی پرامپت شما کاملاً هوشمند و پویاست!۴. فراخوانی تمیز در کدهای PHP
حالا ببینید کنترلر شما چقدر خلوت و خوانا میشود:
use Chimit\Prompt;
// در اینجا دادهها را به پرامپت پاس میدهیم
$prompt = Prompt::get('seo/product-meta', [
'product' => $product,
'keywords' => ['wireless headphones', 'bluetooth', 'noise cancelling']
]);
// خروجی نهایی آماده ارسال به پکیج OpenAI یا هر سرویس دیگری است
$aiResponse = OpenAI::chat()->create([
'model' => 'gpt-4',
'messages' => [['role' => 'user', 'content' => (string) $prompt]],
]);
چرا باید همین امروز از این روش استفاده کنید؟
- تستپذیری: میتوانید پرامپتها را بدون اجرای کل منطق برنامه، بهصورت جداگانه تست و بهینهسازی کنید.
- همکاری با تیم محتوا: تیم سئو یا تولید محتوا میتواند فایلهای Markdown را بدون ترس از خراب کردن کدهای PHP، ویرایش کند.
- کاهش توکنهای مصرفی: با مدیریت دقیق متغیرها در Blade، میتوانید از ارسال دادههای اضافی و هدر رفت هزینه API جلوگیری کنید.
برای مشاهده مستندات کامل و مشارکت در توسعه این پکیج، به مخزن گیتهاب آن سر بزنید:
🔗 مخزن رسمی Chimit/Prompt در گیتهابامیدواریم این مقاله دید جدیدی در مدیریت پروژههای AI-Driven در لاراول به شما داده باشد. سوالات خود را در بخش نظرات با ما در میان بگذارید.