هر پرامپت عالی دارای عناصر ساختاری مشترکی است. درک این اجزا به شما امکان می‌دهد پرامپت‌ها را به صورت سیستماتیک بسازید، نه از طریق آزمون و خطا.

<Callout type="tip" title="بلوک‌های سازنده">
این اجزا را مانند آجرهای لگو در نظر بگیرید. برای هر پرامپت به همه آن‌ها نیاز ندارید، اما دانستن امکانات موجود به شما کمک می‌کند دقیقاً آنچه نیاز دارید را بسازید.
</Callout>

## اجزای اصلی

یک پرامپت مؤثر معمولاً شامل برخی یا همه این عناصر است:

<PromptBreakdown parts={[
  { label: "نقش", text: "شما یک مهندس نرم‌افزار ارشد هستید" },
  { label: "زمینه", text: "که روی یک اپلیکیشن React کار می‌کنید." },
  { label: "وظیفه", text: "این کد را برای باگ‌ها بررسی کنید" },
  { label: "محدودیت‌ها", text: "و فقط روی مسائل امنیتی تمرکز کنید." },
  { label: "فرمت", text: "یافته‌ها را به صورت لیست شماره‌دار برگردانید." },
  { label: "مثال", text: "مانند: ۱. ریسک SQL injection در خط ۴۲" }
]} />

بیایید هر جزء را با جزئیات بررسی کنیم.

## ۱. نقش / شخصیت

تعیین نقش، پاسخ‌های مدل را از دیدگاه یک تخصص یا چشم‌انداز خاص متمرکز می‌کند.

<Compare 
  before={{ label: "بدون نقش", content: "محاسبات کوانتومی را توضیح دهید." }}
  after={{ label: "با نقش", content: "شما یک استاد فیزیک هستید که در ساده‌سازی موضوعات پیچیده برای مبتدیان تخصص دارید. محاسبات کوانتومی را توضیح دهید." }}
/>

نقش، مدل را آماده می‌کند تا:
- از واژگان مناسب استفاده کند
- تخصص مرتبط را به کار ببرد
- دیدگاه یکپارچه‌ای حفظ کند
- مخاطب را به درستی در نظر بگیرد

### الگوهای مؤثر نقش

```
"You are a [profession] with [X years] of experience in [specialty]"
"Act as a [role] who is [characteristic]"
"You are an expert [field] helping a [audience type]"
```

## ۲. زمینه / پیش‌زمینه

زمینه، اطلاعاتی را فراهم می‌کند که مدل برای درک موقعیت شما نیاز دارد. به یاد داشته باشید: مدل هیچ چیز درباره شما، پروژه‌تان یا اهدافتان نمی‌داند، مگر اینکه به آن بگویید.

<Compare 
  before={{ label: "زمینه ضعیف", content: "این باگ را در کد من رفع کنید." }}
  after={{ label: "زمینه قوی", content: "من در حال ساخت یک REST API با Node.js و Express.js هستم. این API احراز هویت کاربر را با توکن‌های JWT انجام می‌دهد. وقتی کاربر سعی می‌کند به یک مسیر محافظت‌شده دسترسی پیدا کند، حتی با توکن معتبر، خطای 403 دریافت می‌کند. این کد مربوطه است: [code]" }}
/>

### چه چیزی در زمینه بگنجانیم

- **جزئیات پروژه** — پشته فناوری، معماری، محدودیت‌ها
- **وضعیت فعلی** — چه چیزهایی امتحان کرده‌اید، چه چیزی کار می‌کند، چه چیزی کار نمی‌کند
- **اهداف** — در نهایت چه می‌خواهید به دست آورید
- **محدودیت‌ها** — محدودیت‌های زمانی، الزامات فنی، راهنماهای سبک

## ۳. وظیفه / دستورالعمل

وظیفه، قلب پرامپت شماست—آنچه می‌خواهید مدل انجام دهد. مشخص و بدون ابهام باشید.

### طیف دقت

<SpecificitySpectrum levels={[
  { level: "مبهم", text: "در این مقاله به من کمک کنید" },
  { level: "بهتر", text: "این مقاله را ویرایش کنید" },
  { level: "خوب", text: "این مقاله را از نظر دستور زبان و وضوح ویرایش کنید" },
  { level: "بهترین", text: "این مقاله را از نظر دستور زبان و وضوح ویرایش کنید، لحن اصلی را حفظ کنید اما پرگویی را ۲۰٪ کاهش دهید" }
]} />

### افعال عملی که خوب کار می‌کنند

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">ایجاد</span>
    <span className="text-muted-foreground">Write, Create, Generate, Compose, Design</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">تحلیل</span>
    <span className="text-muted-foreground">Analyze, Evaluate, Compare, Assess, Review</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">تبدیل</span>
    <span className="text-muted-foreground">Convert, Translate, Reformat, Summarize, Expand</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">توضیح</span>
    <span className="text-muted-foreground">Explain, Describe, Clarify, Define, Illustrate</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">حل مسئله</span>
    <span className="text-muted-foreground">Solve, Debug, Fix, Optimize, Improve</span>
  </div>
</div>

## ۴. محدودیت‌ها / قواعد

محدودیت‌ها خروجی مدل را محدود می‌کنند. آن‌ها از مشکلات رایج جلوگیری کرده و مرتبط بودن را تضمین می‌کنند.

### انواع محدودیت‌ها

**محدودیت‌های طول:**
```
"Keep your response under 200 words"
"Provide exactly 5 suggestions"
"Write 3-4 paragraphs"
```

**محدودیت‌های محتوا:**
```
"Do not include any code examples"
"Focus only on the technical aspects"
"Avoid marketing language"
```

**محدودیت‌های سبک:**
```
"Use a formal, academic tone"
"Write as if speaking to a 10-year-old"
"Be direct and avoid hedging language"
```

**محدودیت‌های دامنه:**
```
"Only consider options available in Python 3.10+"
"Limit suggestions to free tools"
"Focus on solutions that don't require additional dependencies"
```

## ۵. فرمت خروجی

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

### فرمت‌های رایج

**لیست‌ها:**
```
"Return as a bulleted list"
"Provide a numbered list of steps"
```

**داده‌های ساختاریافته:**
```
"Return as JSON with keys: title, description, priority"
"Format as a markdown table with columns: Feature, Pros, Cons"
```

**ساختارهای خاص:**
```
"Structure your response as:
 ## Summary
 ## Key Points
 ## Recommendations"
```

### مثال خروجی JSON

```
Analyze this customer review and return JSON:
{
  "sentiment": "positive" | "negative" | "neutral",
  "topics": ["array of main topics"],
  "rating_prediction": 1-5,
  "key_phrases": ["notable phrases"]
}

Review: "The product arrived quickly and works great, but 
the instructions were confusing."
```

## ۶. مثال‌ها (یادگیری Few-Shot)

مثال‌ها قدرتمندترین راه برای نشان دادن دقیق آنچه می‌خواهید به مدل هستند.

### مثال One-Shot

```
Convert these sentences to past tense.

Example:
Input: "She walks to the store"
Output: "She walked to the store"

Now convert:
Input: "They run every morning"
```

### مثال Few-Shot

```
Classify these support tickets by urgency.

Examples:
"My account was hacked" → Critical
"How do I change my password?" → Low
"Payment failed but I was charged" → High

Classify: "The app crashes when I open settings"
```

## ترکیب همه اجزا

این یک پرامپت کامل با استفاده از همه اجزاست:

<TryIt 
  title="مثال پرامپت کامل"
  description="این پرامپت نشان می‌دهد که چگونه هر شش جزء با هم کار می‌کنند. آن را امتحان کنید تا ببینید چگونه پرامپت‌های ساختاریافته نتایج حرفه‌ای تولید می‌کنند."
  prompt={`# Role
You are a senior technical writer with 10 years of experience creating developer documentation.

# Context
I'm documenting a REST API for a payment processing service. The audience is developers integrating our API into their applications. They have intermediate programming knowledge but may be new to payment processing concepts.

# Task
Write documentation for the following API endpoint that creates a new payment intent.

# Constraints
- Use clear, concise language
- Include common error scenarios
- Do not include implementation details about our backend
- Assume readers understand HTTP and JSON basics

# Output Format
Structure the documentation as:
1. Endpoint Overview (2-3 sentences)
2. Request (method, URL, headers, body with example)
3. Response (success and error examples)
4. Code Example (in JavaScript/Node.js)

# Endpoint Details
POST /v1/payments/intents
Body: { "amount": 1000, "currency": "usd", "description": "Order #1234" }`}
/>

## حداقل پرامپت مؤثر

هر پرامپتی به همه اجزا نیاز ندارد. برای کارهای ساده، یک دستورالعمل واضح ممکن است کافی باشد:

```
Translate "Hello, how are you?" to Spanish.
```

از اجزای اضافی استفاده کنید وقتی:
- کار پیچیده یا مبهم است
- به فرمت خاصی نیاز دارید
- نتایج با انتظارات مطابقت ندارند
- یکپارچگی در چندین پرس‌وجو اهمیت دارد

## الگوهای رایج پرامپت

این چارچوب‌ها یک چک‌لیست ساده برای دنبال کردن هنگام نوشتن پرامپت‌ها به شما می‌دهند. روی هر مرحله کلیک کنید تا یک مثال ببینید.

<CRISPEFramework />

<RTFFramework />

## خلاصه

پرامپت‌های مؤثر ساخته می‌شوند، نه کشف. با درک و به‌کارگیری این اجزای ساختاری، می‌توانید:

- در اولین تلاش نتایج بهتری بگیرید
- پرامپت‌هایی که کار نمی‌کنند را اشکال‌زدایی کنید
- قالب‌های پرامپت قابل استفاده مجدد بسازید
- نیات خود را به وضوح بیان کنید

<Quiz 
  question="کدام جزء بیشترین تأثیر را بر کیفیت پاسخ دارد؟"
  options={[
    "همیشه نقش/شخصیت",
    "همیشه فرمت خروجی",
    "بستگی به کار دارد",
    "طول پرامپت"
  ]}
  correctIndex={2}
  explanation="کارهای مختلف از اجزای مختلف بهره می‌برند. یک ترجمه ساده به ساختار حداقلی نیاز دارد، در حالی که یک تحلیل پیچیده از نقش، زمینه و مشخصات فرمت دقیق سود می‌برد."
/>

<TryIt 
  prompt={`You are a senior product manager with 10 years of experience in SaaS products.

Context: I'm building a task management app for remote teams. We're a small startup with limited engineering resources.

Task: Suggest 3 features we should prioritize for our MVP.

Constraints:
- Features must be implementable by a team of 2 developers in 4 weeks
- Focus on what differentiates us from Trello and Asana

Format: For each feature, provide:
1. Feature name
2. One-sentence description  
3. Why it matters for remote teams`}
  description="این پرامپت از هر شش جزء استفاده می‌کند. آن را امتحان کنید و ببینید چگونه رویکرد ساختاریافته نتایج متمرکز و عملی تولید می‌کند."
/>

## پرامپت خود را بسازید

حالا نوبت شماست! از این سازنده پرامپت تعاملی برای ساختن پرامپت خود با استفاده از اجزایی که یاد گرفتید استفاده کنید:

<PromptBuilder 
  title="سازنده پرامپت تعاملی"
  description="هر بخش را پر کنید تا یک پرامپت کامل و خوش‌ساختار بسازید"
/>

<PromptChallenge
  title="چالش فصل: ساختن پرامپت بررسی کد"
  task="یک پرامپت بنویسید که از یک هوش مصنوعی بخواهد کد را برای آسیب‌پذیری‌های امنیتی بررسی کند. پرامپت شما باید به اندازه کافی مشخص باشد تا بازخورد عملی دریافت کنید."
  criteria={[
    "شامل یک نقش یا سطح تخصص واضح است",
    "نوع بررسی کد را مشخص می‌کند (تمرکز امنیتی)",
    "فرمت خروجی مورد انتظار را تعریف می‌کند",
    "محدودیت‌ها یا دامنه مناسب تعیین می‌کند"
  ]}
  hints={[
    "فکر کنید یک بررسی‌کننده کد باید چه تخصصی داشته باشد",
    "درباره اینکه به دنبال چه مسائل امنیتی باشید مشخص باشید",
    "در نظر بگیرید که یک فرمت پاسخ ساختاریافته بخواهید"
  ]}
  exampleSolution={`You are a senior security engineer with expertise in web application security and OWASP Top 10 vulnerabilities.

Task: Review the following code for security vulnerabilities.

Focus on:
- SQL injection risks
- XSS vulnerabilities  
- Authentication/authorization issues
- Input validation gaps

Output format:
For each issue found:
1. Line number(s)
2. Vulnerability type
3. Risk level (High/Medium/Low)
4. Recommended fix

[CODE TO REVIEW]`}
  difficulty="intermediate"
/>

در فصل بعدی، اصول اساسی که تصمیمات ساخت پرامپت را هدایت می‌کنند بررسی خواهیم کرد.
