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

<Callout type="info" title="از متن آزاد به داده">
خروجی ساختاریافته، پاسخ‌های هوش مصنوعی را از متن آزاد به داده‌های قابل پردازش و عملیاتی تبدیل می‌کند.
</Callout>

## چرا ساختار اهمیت دارد

<StructuredOutputDemo />

## تکنیک‌های پایه قالب‌بندی

### لیست‌ها

لیست‌ها برای دستورالعمل‌های گام‌به‌گام، موارد رتبه‌بندی‌شده یا مجموعه‌ای از نکات مرتبط ایده‌آل هستند. آن‌ها به راحتی قابل مرور و پردازش هستند. از **لیست‌های شماره‌دار** زمانی که ترتیب مهم است (مراحل، رتبه‌بندی‌ها) و از **نقاط گلوله‌ای** برای مجموعه‌های بدون ترتیب استفاده کنید.

<TryIt 
  compact
  title="قالب‌بندی لیست"
  prompt={`Provide 5 tips for better sleep.

Format: Numbered list with a brief explanation for each.
Each tip should be bold, followed by a dash and explanation.`}
/>

<Callout type="tip" title="بهترین شیوه‌های لیست">
تعداد دقیق موارد مورد نظر، اینکه آیا توضیحات شامل شوند یا نه، و اینکه آیا موارد باید پررنگ باشند یا ساختار خاصی داشته باشند را مشخص کنید.
</Callout>

### جداول

جداول در مقایسه چندین مورد در ابعاد یکسان عالی هستند. آن‌ها برای مقایسه ویژگی‌ها، خلاصه داده‌ها و هرگونه اطلاعات با ویژگی‌های منسجم ایده‌آل هستند. همیشه سرستون‌های خود را به صراحت تعریف کنید.

<TryIt 
  compact
  title="قالب‌بندی جدول"
  prompt={`Compare the top 4 Python web frameworks.

Format as a markdown table with columns:
| Framework | Best For | Learning Curve | Performance |`}
/>

<Callout type="tip" title="بهترین شیوه‌های جدول">
نام ستون‌ها، انواع داده مورد انتظار (متن، اعداد، امتیازها) و تعداد سطرهای مورد نیاز را مشخص کنید. برای مقایسه‌های پیچیده، برای خوانایی بهتر به ۴ تا ۶ ستون محدود شوید.
</Callout>

### سرتیترها و بخش‌ها

سرتیترها ساختار واضحی برای سند ایجاد می‌کنند و پاسخ‌های طولانی را قابل مرور و سازمان‌یافته می‌سازند. از آن‌ها برای گزارش‌ها، تحلیل‌ها یا هر پاسخ چندبخشی استفاده کنید. سرتیترهای سلسله‌مراتبی (##، ###) روابط بین بخش‌ها را نشان می‌دهند.

```
Analyze this business proposal.

Structure your response with these sections:
## Executive Summary
## Strengths
## Weaknesses
## Recommendations
## Risk Assessment
```

<Callout type="tip" title="بهترین شیوه‌های بخش‌بندی">
بخش‌های خود را به ترتیب مورد نظر لیست کنید. برای یکپارچگی، مشخص کنید هر بخش باید شامل چه چیزی باشد (مثلاً «خلاصه اجرایی: فقط ۲-۳ جمله»).
</Callout>

### تأکید با دستورات حروف بزرگ

کلمات با حروف بزرگ به عنوان سیگنال‌های قوی برای مدل عمل می‌کنند و محدودیت‌ها یا الزامات مهم را برجسته می‌سازند. برای حداکثر تأثیر از آن‌ها به صورت محدود استفاده کنید—استفاده بیش از حد تأثیر آن‌ها را کاهش می‌دهد.

**دستورات رایج حروف بزرگ:**

<InfoGrid items={[
  { label: "NEVER", description: "ممنوعیت مطلق: «NEVER include personal opinions»", color: "red" },
  { label: "ALWAYS", description: "الزام ضروری: «ALWAYS cite sources»", color: "green" },
  { label: "IMPORTANT", description: "دستور حیاتی: «IMPORTANT: Keep responses under 100 words»", color: "amber" },
  { label: "DO NOT", description: "ممنوعیت قوی: «DO NOT make up statistics»", color: "red" },
  { label: "MUST", description: "عمل الزامی: «Output MUST be valid JSON»", color: "blue" },
  { label: "ONLY", description: "محدودیت: «Return ONLY the code, no explanations»", color: "purple" },
]} />

```
Summarize this article.

IMPORTANT: Keep the summary under 100 words.
NEVER add information not present in the original.
ALWAYS maintain the original tone and perspective.
DO NOT include your own opinions or analysis.
```

<Callout type="warning" title="با احتیاط استفاده کنید">
اگر همه چیز با حروف بزرگ باشد یا به عنوان حیاتی علامت‌گذاری شود، هیچ چیز برجسته نمی‌شود. این دستورات را برای محدودیت‌های واقعاً مهم ذخیره کنید.
</Callout>

## خروجی JSON

JSON (نشانه‌گذاری شیء جاوا اسکریپت) محبوب‌ترین قالب برای خروجی ساختاریافته هوش مصنوعی است. این قالب توسط ماشین قابل خواندن است، به طور گسترده توسط زبان‌های برنامه‌نویسی پشتیبانی می‌شود و برای APIها، پایگاه‌های داده و جریان‌های کاری خودکار ایده‌آل است. کلید JSON قابل اعتماد، ارائه یک طرح (schema) واضح است.

### درخواست پایه JSON

با یک الگو که ساختار دقیق مورد نظر را نشان می‌دهد شروع کنید. نام فیلدها، انواع داده و مقادیر نمونه را شامل کنید. این به عنوان یک قرارداد عمل می‌کند که مدل از آن پیروی خواهد کرد.

<TryIt 
  title="استخراج JSON"
  description="استخراج داده‌های ساختاریافته از متن غیرساختاریافته."
  prompt={`Extract information from this text and return as JSON:

{
    "company_name": "string",
    "founding_year": number,
    "headquarters": "string",
    "employees": number,
    "industry": "string"
}

Text: "Apple Inc., founded in 1976, is headquartered in Cupertino, California. The technology giant employs approximately 164,000 people worldwide."`}
/>

### ساختارهای پیچیده JSON

برای داده‌های تودرتو، از JSON سلسله‌مراتبی با اشیاء درون اشیاء، آرایه‌هایی از اشیاء و انواع ترکیبی استفاده کنید. هر سطح را به وضوح تعریف کنید و از حاشیه‌نویسی‌های سبک TypeScript (`"positive" | "negative"`) برای محدود کردن مقادیر استفاده کنید.

```
Analyze this product review and return JSON:

{
  "review_id": "string (generate unique)",
  "sentiment": {
    "overall": "positive" | "negative" | "mixed" | "neutral",
    "score": 0.0-1.0
  },
  "aspects": [
    {
      "aspect": "string (e.g., 'price', 'quality')",
      "sentiment": "positive" | "negative" | "neutral",
      "mentions": ["exact quotes from review"]
    }
  ],
  "purchase_intent": {
    "would_recommend": boolean,
    "confidence": 0.0-1.0
  },
  "key_phrases": ["string array of notable phrases"]
}

Return ONLY valid JSON, no additional text.

Review: "[review text]"
```

### اطمینان از JSON معتبر

مدل‌ها گاهی متن توضیحی یا قالب‌بندی Markdown اطراف JSON اضافه می‌کنند. با دستورالعمل‌های صریح درباره قالب خروجی از این جلوگیری کنید. می‌توانید JSON خام یا JSON داخل بلوک‌های کد درخواست کنید—بر اساس نیازهای پردازش خود انتخاب کنید.

دستورالعمل‌های صریح اضافه کنید:

```
IMPORTANT:
- Return ONLY the JSON object, no markdown code blocks
- Ensure all strings are properly escaped
- Use null for missing values, not undefined
- Validate that the output is parseable JSON
```

یا با درخواست از مدل برای قرار دادن خروجی در بلوک کد:

````
Return the result as a JSON code block:
```json
{ ... }
```
````

## خروجی YAML

YAML نسبت به JSON خواناتر برای انسان است و از تورفتگی به جای براکت استفاده می‌کند. این قالب استاندارد فایل‌های پیکربندی (Docker، Kubernetes، GitHub Actions) است و زمانی که خروجی توسط انسان خوانده می‌شود یا در زمینه‌های DevOps استفاده می‌شود، به خوبی کار می‌کند. YAML به تورفتگی حساس است، بنابراین در مورد الزامات قالب‌بندی دقیق باشید.

<TryIt 
  compact
  title="تولید YAML"
  prompt={`Generate a GitHub Actions workflow for a Node.js project.

Return as valid YAML:
- Include: install, lint, test, build stages
- Use Node.js 18
- Cache npm dependencies
- Run on push to main and pull requests`}
/>

## خروجی XML

XML هنوز برای بسیاری از سیستم‌های سازمانی، APIهای SOAP و یکپارچه‌سازی‌های قدیمی مورد نیاز است. این قالب نسبت به JSON پرحجم‌تر است اما ویژگی‌هایی مانند خصوصیات، فضاهای نام و بخش‌های CDATA را برای داده‌های پیچیده ارائه می‌دهد. نام عناصر، ساختار تودرتو و جایی که از خصوصیات در مقابل عناصر فرزند استفاده کنید را مشخص کنید.

```
Convert this data to XML format:

Requirements:
- Root element: <catalog>
- Each item in <book> element
- Include attributes where appropriate
- Use CDATA for description text

Data: [book data]
```

## قالب‌های سفارشی

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

### قالب تحلیل ساختاریافته

از جداکننده‌ها (===، ---، [SECTION]) برای ایجاد اسناد قابل مرور با مرزهای واضح بین بخش‌ها استفاده کنید. این قالب برای بررسی کد، ممیزی‌ها و تحلیل‌ها عالی است.

```
Analyze this code using this exact format:

=== CODE ANALYSIS ===

[SUMMARY]
One paragraph overview

[ISSUES]
• CRITICAL: [issue] — [file:line]
• WARNING: [issue] — [file:line]  
• INFO: [issue] — [file:line]

[METRICS]
Complexity: [Low/Medium/High]
Maintainability: [score]/10
Test Coverage: [estimated %]

[RECOMMENDATIONS]
1. [Priority 1 recommendation]
2. [Priority 2 recommendation]

=== END ANALYSIS ===
```

### قالب جای‌خالی پر کن

الگوهای با جای خالی (___) مدل را راهنمایی می‌کنند تا فیلدهای خاصی را پر کند و در عین حال قالب‌بندی دقیق را حفظ کند. این روش برای فرم‌ها، خلاصه‌ها و اسناد استاندارد که یکپارچگی در آن‌ها مهم است عالی است.

```
Complete this template for the given product:

PRODUCT BRIEF
─────────────
Name: _______________
Tagline: _______________
Target User: _______________
Problem Solved: _______________
Key Features:
  1. _______________
  2. _______________
  3. _______________
Differentiator: _______________

Product: [product description]
```

## پاسخ‌های نوع‌دار

پاسخ‌های نوع‌دار دسته‌ها یا انواع موجودیت را تعریف می‌کنند که مدل باید آن‌ها را شناسایی و برچسب‌گذاری کند. این تکنیک برای تشخیص موجودیت نام‌دار (NER)، وظایف طبقه‌بندی و هر استخراجی که نیاز به دسته‌بندی منسجم اطلاعات دارید ضروری است. انواع خود را به وضوح با مثال‌ها تعریف کنید.

<TryIt 
  compact
  title="استخراج موجودیت"
  prompt={`Extract entities from this text.

Entity Types:
- PERSON: Full names of people
- ORG: Organization/company names
- LOCATION: Cities, countries, addresses
- DATE: Dates in ISO format (YYYY-MM-DD)
- MONEY: Monetary amounts with currency

Format each as: [TYPE]: [value]

Text: "Tim Cook announced that Apple will invest $1 billion in a new Austin facility by December 2024."`}
/>

## پاسخ‌های ساختاریافته چندبخشی

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

```
Research this topic and provide:

### PART 1: EXECUTIVE SUMMARY
[2-3 sentence overview]

### PART 2: KEY FINDINGS
[Exactly 5 bullet points]

### PART 3: DATA TABLE
| Metric | Value | Source |
|--------|-------|--------|
[Include 5 rows minimum]

### PART 4: RECOMMENDATIONS
[Numbered list of 3 actionable recommendations]

### PART 5: FURTHER READING
[3 suggested resources with brief descriptions]
```

## قالب‌بندی شرطی

قالب‌بندی شرطی به شما امکان می‌دهد قالب‌های خروجی مختلفی را بر اساس ویژگی‌های ورودی تعریف کنید. این برای سیستم‌های طبقه‌بندی، اولویت‌بندی و مسیریابی که قالب پاسخ باید بر اساس آنچه مدل تشخیص می‌دهد متفاوت باشد قدرتمند است. از منطق if/then واضح با الگوهای خروجی صریح برای هر مورد استفاده کنید.

<TryIt 
  compact
  title="طبقه‌بندی تیکت"
  prompt={`Classify this support ticket.

If URGENT (system down, security issue, data loss):
  Return: 🔴 URGENT | [Category] | [Suggested Action]

If HIGH (affects multiple users, revenue impact):
  Return: 🟠 HIGH | [Category] | [Suggested Action]

If MEDIUM (single user affected, workaround exists):
  Return: 🟡 MEDIUM | [Category] | [Suggested Action]

If LOW (questions, feature requests):
  Return: 🟢 LOW | [Category] | [Suggested Action]

Ticket: "I can't login to my account. I've tried resetting my password twice but still getting an error. This is blocking my entire team from accessing the dashboard."`}
/>

## آرایه‌ها و لیست‌ها در JSON

استخراج چندین مورد در آرایه‌ها نیاز به تعریف دقیق طرح دارد. ساختار آرایه، آنچه هر مورد باید شامل شود و نحوه مدیریت موارد خاص (آرایه‌های خالی، موارد تکی) را مشخص کنید. شامل کردن یک فیلد تعداد به تأیید کامل بودن کمک می‌کند.

```
Extract all action items from this meeting transcript.

Return as JSON array:
{
  "action_items": [
    {
      "task": "string describing the task",
      "assignee": "person name or 'Unassigned'",
      "deadline": "date if mentioned, else null",
      "priority": "high" | "medium" | "low",
      "context": "relevant quote from transcript"
    }
  ],
  "total_count": number
}

Transcript: "[meeting transcript]"
```

## دستورالعمل‌های اعتبارسنجی

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

```
Generate the report, then:

VALIDATION CHECKLIST:
□ All required sections present
□ No placeholder text remaining
□ All statistics include sources
□ Word count within 500-700 words
□ Conclusion ties back to introduction

If any check fails, fix before responding.
```

## مدیریت فیلدهای اختیاری

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

```
Extract contact information. Use null for missing fields.

{
  "name": "string (required)",
  "email": "string or null",
  "phone": "string or null", 
  "company": "string or null",
  "role": "string or null",
  "linkedin": "URL string or null"
}

IMPORTANT: 
- Never invent information not in the source
- Use null, not empty strings, for missing data
- Phone numbers in E.164 format if possible
```

## خلاصه

<Callout type="tip" title="تکنیک‌های کلیدی">
درباره قالب صریح باشید، از مثال‌ها استفاده کنید، انواع را مشخص کنید، موارد خاص را با مقادیر null مدیریت کنید و از مدل بخواهید خروجی خود را اعتبارسنجی کند.
</Callout>

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

خروجی‌های ساختاریافته برای ساخت برنامه‌های قابل اعتماد مبتنی بر هوش مصنوعی ضروری هستند. در فصل بعدی، پرامپتینگ زنجیره تفکر را برای وظایف استدلال پیچیده بررسی خواهیم کرد.
