سه هفته است که تیم پشتیبانی یک فروشگاه اینترنتی ایرانی روی یک پرامپت کار میکند. پرامپت ساده به نظر میرسد: «قوانین مرجوعی را بخوان، به سؤال مشتری جواب بده.» توی تستهای دستی هم خوب کار میکند؛ مدیر محصول سهتا سؤال میپرسد، جوابها قابل قبول است، پرامپت میرود روی سایت. دو روز بعد مشتریای میپرسد «کالا رو پسفرست کردم ولی رسید پستی گم شده، تکلیف چیه؟» و ربات با اطمینان کامل قانونی را از خودش میسازد.
مشکل پرامپت نبود. مشکل این بود که آن تیم فقط سه نمونه داشت — و آن سه نمونه را هم خودشان، با ذهنی که از قبل جواب را میدانست، نوشته بودند. برای سنجیدن یک پرامپت به دهها ورودیِ واقعنما نیاز است؛ ورودیهایی که شبیه حرفِ مشتری واقعی باشند، نه شبیه حرفِ کسی که میخواهد پرامپتش قبول شود. و جمعکردن آن دهها نمونه با دست، کاری است که هیچکس وقتش را ندارد.
آنتروپیک برای همین کار یک دستور رسمی در کوکبوکش دارد: از کلود بخواه خودش دادهٔ آزمون بسازد. نه یکیدو تا نمونهٔ سرسری، بلکه نمونههایی که از همان «توزیع آماری» ورودیهای واقعی بیرون آمده باشند. این درس همان تکنیک است.
لیست مطالب
آنچه در این درس یاد میگیرید
- چرا تست دستی پرامپت، خوشبینانهترین کاری است که میتوانید بکنید
- چطور متغیرهای یک قالب پرامپت را استخراج و به کلود معرفی کنید
- پرامپت رسمی آنتروپیک برای ساخت دادهٔ آزمون مصنوعی، خط به خط
- تفاوت حالت «با نمونه» و «بدون نمونه» و اینکه کدام را کجا به کار ببرید
- ترفند ویرایش بلوک planning؛ یعنی دستبردن در فکرِ مدل پیش از آنکه نمونه را بسازد
- چطور از همین نمونهها برای تقویت پرامپت اصلی با مثالهای چندگانه استفاده کنید

قالب پرامپت چیست و متغیر کجاست
بیشتر پرامپتهای جدی، پرامپت ثابت نیستند؛ قالباند. یک اسکلت ثابت که جاهای خالیاش در زمان اجرا پر میشود. در ادبیات آنتروپیک این جاهای خالی را با دو آکولاد نشان میدهند. مثال رسمی کوکبوک، دقیقاً همان ربات پشتیبانی داستان ماست:
prompt_template = """You are a customer support bot for Acme Corporation.
Here is an FAQ with Acme's relevant policies:
<documents>
{{DOCUMENTS}}
</documents>
Please respond to this customer support question using details from the policies:
<question>
{{QUESTION}}
</question>"""
این قالب دو متغیر دارد: DOCUMENTS و QUESTION. و همینجا نکتهٔ کلیدی است: این دو متغیر در دنیای واقعی از دو جای کاملاً متفاوت میآیند. سند قوانین را یک کارمند نوشته، در ورد تایپ شده، لحن اداری دارد و ممکن است هزار کلمه باشد. سؤال را مشتری با عجله در چت تایپ کرده، غلط تایپی دارد، شاید بیربط باشد و شاید پنجاه کلمه هم نشود. اگر نمونههای آزمون شما این تفاوت را بازتاب ندهند، آزمون بیمعنی است.
استخراج متغیرها کار سختی نیست — یک عبارت باقاعده کافی است:
import re
def extract_variables(prompt_template):
"""Extract variables from a prompt template."""
pattern = r"{{([^}]+)}}"
variables = re.findall(pattern, prompt_template)
return set(variables)
def construct_variables_names(prompt_template):
"""Construct a string of variable names from a prompt template."""
variables = extract_variables(prompt_template)
return "n".join(variables)
def construct_variables_block(prompt_template):
"""Construct a variables block for the synthetic test data prompt."""
variables = extract_variables(prompt_template)
output = ""
for v in variables:
output += f"<{v}>n"
output += f'[a full, complete, value for the variable "{v}". (You do not need to repeat the variable name inside the tags.)]n'
output += f"</{v}>n"
return output.strip()
کار این سه تابع یک چیز است: برای کلود یک «فرم خالی» بسازند. فهرست متغیرها را به او بدهند و بگویند جواب را در چه ساختاری برگرداند. همین ساختاردادن به خروجی، تفاوت میان نمونهای است که با دو خط کد قابل پارس است و متنی که باید با دست از آن داده بیرون کشید.
پرامپت اصلی؛ جایی که کار واقعی انجام میشود
حالا پرامپتی که این فرم خالی را به کلود میدهد. این متن، نسخهٔ رسمی کوکبوک آنتروپیک برای حالتی است که هیچ نمونهای از قبل ندارید:
تا اینجا مقدمه بود. بخش اصلی این درس — نمونهها، پرامپتهای آماده و تمرینها — برای اعضای ویژه باز میشود.
تولید دادهٔ آزمون مصنوعی؛ پرامپت را با نمونههای واقعنما بسنج
برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.
🎁 ورود / ثبتنام و شروع ۱۴ روز رایگان
