منطق ایجنت‌ها › M2 — حل مسئله و طراحی راه‌حل ⭐
۲.۶ پایدار تدریسی ~۳۵ دقیقه

Prompt engineering

قبل از این فصل: فصل ۱.۳

در یک نگاه

۲.۶.۱

ساختار یک درخواست خوب

در فصل ۲.۴ spec نوشتی — آن برای خودت بود. prompt آن است که به ایجنت می‌دهی. و نکته این است که یک prompt خوب معمولاً ترجمه‌ی مستقیم همان spec است.

چهار تکه دارد:

مقایسه کن. ضعیف: «این فایل را خلاصه کن.» قوی: «این فایل فروش را برای جلسه‌ی مدیران خلاصه کن. آن‌ها فقط سه چیز می‌خواهند: جمع فروش، بهترین محصول، و هر چیزی که غیرعادی است. حداکثر پنج خط، بدون مقدمه. اگر عددی مشکوک بود، به‌جای حدس‌زدن جدا بنویسش.»

دومی طولانی‌تر است، ولی طولانی‌بودن مزیتش نیست — مشخص‌بودنش است. هر جمله‌ی اضافه یک ابهام را می‌بندد.

۲.۶.۲

مثال دادن

قوی‌ترین ابزارِ کم‌استفاده. اگر یک نمونه از خروجیِ دلخواهت داری، دادنش از هر توضیحی مؤثرتر است.

چرا؟ چون خیلی از چیزهایی که می‌خواهی را نمی‌شود توصیف کرد ولی می‌شود نشان داد: لحن، سطح جزئیات، اینکه چقدر رسمی باشد، اینکه عددها چطور نوشته شوند.

سه شکل که خوب جواب می‌دهند:

و اگر خروجیِ اولی که گرفتی تقریباً درست بود، همان را اصلاح کن و به‌عنوان مثال برگردانش: «مثل این، ولی…».

۲.۶.۳

نقش و لحن و قالب خروجی

سه تنظیم کوچک که اثر بزرگ دارند:

نقش. «تو یک حسابدار باتجربه‌ای» یا «تو ویراستار یک مجله‌ی فنی هستی». این کار سطح جزئیات و واژگان را جابه‌جا می‌کند. مفید است — ولی جادویی نیست و جای context مشخص را نمی‌گیرد.

لحن و مخاطب. بگو برای چه کسی است: «برای مدیری که وقت ندارد» با «برای همکاری که باید بتواند تکرارش کند» دو متن کاملاً متفاوت می‌سازند.

قالب خروجی. صریح بگو. «فهرست نقطه‌ای»، «جدول با این سه ستون»، «حداکثر پنج خط»، «بدون مقدمه و نتیجه‌گیری». آن آخری مخصوصاً وقت زیادی نجات می‌دهد.

و یک تکنیک ساختاری که در متن‌های بلند خیلی کمک می‌کند: تکه‌های مختلفِ درخواستت را با برچسب از هم جدا کن. مثلاً متنِ اصلی را بین دو خط بگذار و بالایش بنویس «متن:» و پایین‌تر «کاری که می‌خواهم:». وقتی درخواست طولانی می‌شود، این مرزبندی جلوی قاطی‌شدنِ دستور با داده را می‌گیرد.

۲.۶.۴

تکرار و اصلاح، به‌جای یک ضرب

تصور غلط رایج: prompt خوب یعنی یک متن طولانیِ بی‌نقص که در یک ضرب نوشته شود.

به‌خاطر بسپار prompt خوب ساخته می‌شود، نه نوشته. با یک درخواست ساده شروع کن، خروجی را ببین، و فقط همان چیزی را که کم بود اضافه کن. سه دور کوتاه تقریباً همیشه از یک متن طولانیِ حدسی بهتر جواب می‌دهد.

دلیلش این است که تا خروجی را ندیده‌ای، نمی‌دانی کجا را بد فهمیده. نصف جمله‌هایی که «برای اطمینان» می‌نویسی، اصلاً لازم نبودند — و context را بی‌دلیل بزرگ می‌کنند (فصل ۱.۳).

روشِ عملی: بعد از هر خروجی، یک جمله بپرس از خودت — «چه چیزی کم بود؟» — و فقط همان یک چیز را اضافه کن. بعد دوباره.

۲.۶.۵

کارگاه: از ضعیف تا قوی

یک درخواست واقعی را قدم‌به‌قدم قوی می‌کنیم. کار: خلاصه‌ی فایل فروش.

دور ۰: «این فایل را خلاصه کن.»
نتیجه: یک متن عمومی که توضیح می‌دهد CSV چیست و چند عدد پراکنده می‌دهد.

دور ۱ — کار را مشخص کن: «جمع فروش هر محصول را بده.»
بهتر شد، ولی مرجوعی‌ها را هم حساب کرده.

دور ۲ — قاعده اضافه کن: «…فقط ردیف‌های تحویل‌شده. مرجوعی‌ها را کم کن.»
درست شد، ولی ردیف‌های خرابِ فایل را بی‌صدا رد کرده.

دور ۳ — ابهام را ببند: «…و هر ردیفی که تاریخ یا تعدادش خوانده نمی‌شود را جدا فهرست کن، حدس نزن
حالا همان چیزی است که می‌خواستم.

دور ۴ — قالب: «خروجی: یک جدول با ستون محصول و جمع، و زیرش فهرست ردیف‌های مشکوک. بدون مقدمه.»

نگاه کن به مسیر: هر دور یک چیز اضافه شد، و هر کدام جوابِ یک مشکلِ دیده‌شده بود، نه یک حدس. اگر می‌خواستی این چهار تا را از اول بنویسی، احتمالاً دو تایشان به ذهنت نمی‌رسید و دو تای دیگر لازم نبودند.

۲.۶.۶

ضدالگوهای رایج

نکته‌ی طلایی قبل از فرستادن یک درخواست مهم، این را امتحان کن: «قبل از اینکه شروع کنی، بگو چه چیزی از این درخواست برایت مبهم است.» فهرستی که می‌گیری همان چیزهایی است که وگرنه از خودش حدس می‌زد — و تو هیچ‌وقت نمی‌فهمیدی کجا حدس زده.
ضدالگو جمع‌کردن prompt‌های «جادویی» از اینترنت و کپی‌کردنشان. آن prompt برای کارِ کسِ دیگر و context او نوشته شده. چیزی که کار می‌کند، prompt نیست — روشِ ساختنش است: مشخص بگو، خروجی را ببین، یک چیز اصلاح کن.

و قالب‌هایی که در طول دوره ساخته می‌شوند — «اول طرح بعد اجرا»، «نقش مخالف»، «تست ابهام» — یک‌جا در کتابخانه‌ی الگو جمع شده‌اند؛ فرقشان با prompt جادویی این است که هر کدام به روش و درسِ خودش وصل است.

تمرین (ساختنی + توضیحی)

این prompt خراب را درست کن و بنویس هر تغییر چه اثری داشت.

لطفاً اگر امکانش هست این فایل رو یه نگاه بنداز و یه گزارش حرفه‌ای و کامل ازش بده که همه‌چیز توش باشه، ممنون.

روی فایل نمونه‌ها/داده/فروش-۱۴۰۵.csv اجرایش کن، بعد در چهار دور بهترش کن — هر دور فقط یک تغییر. بعد از هر دور بنویس چه چیزی در خروجی عوض شد.

حداقل سه ضدالگوی بخش ۲.۶.۶ در این متن هست. کدام‌ها؟

پاسخنامه — یک نمونه‌ی خوب را ببین

ضدالگوها: ادب اضافه («لطفاً اگر امکانش هست»، «ممنون») · صفت به‌جای معیار («حرفه‌ای»، «کامل») · و «همه‌چیز توش باشه» که در واقع یعنی هیچ‌چیز مشخص نیست.

دور ۱: «جمع فروش هر محصول را از این فایل بده.» ← از یک متن پراکنده به سه عدد مشخص رسید.

دور ۲: «فقط ردیف‌های تحویل‌شده.» ← دیدم مرجوعی‌ها را هم حساب کرده بود؛ عددها کم شدند و درست شدند.

دور ۳: «ردیف‌هایی که تاریخ یا تعدادشان خوانده نمی‌شود را جدا فهرست کن، حدس نزن.» ← سه ردیف بیرون آمد که در دو دور قبل بی‌صدا رد شده بودند. این را در خروجی ندیده بودم — با مقایسه‌ی تعداد ردیف‌ها فهمیدم.

دور ۴: «خروجی: جدول محصول/جمع، زیرش فهرست مشکوک‌ها، بدون مقدمه.» ← دیگر لازم نبود از لای متن عددها را دربیاورم.

چرا این جواب خوب است: دور سوم از یک مشاهده آمده (تعداد ردیف‌ها نمی‌خواند)، نه از حدس. همان چیزی که بخش ۲.۶.۴ می‌گوید.

برای عمق بیشتر

ذخیره شد