گرفتن خروجی جدول و فهرست و JSON از هوش مصنوعی

قسمت ۲ — جدول، فهرست و JSON

⏱ زمان مطالعه: حدود ۹ دقیقه✏️ تمرین دارد
آموزش · پرامپت‌نویسی

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

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

۱. سه قالب ماشین‌خوان و جای درست هرکدام

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

  • جدول وقتی چند مورد داری که همگی ویژگی‌های یکسانی دارند و می‌خواهی مقایسه‌شان کنی. جدول برای چشم انسان ساخته شده و برای ورود به صفحهٔ گسترده هم مناسب است.
  • فهرست ساختارمند وقتی موردها ویژگی مشترک دارند اما محتوای هر ویژگی طولانی است و در خانهٔ جدول جا نمی‌شود.
  • خروجی JSON وقتی جواب قرار است به ابزار دیگری تحویل داده شود یا در برنامه‌ای پردازش شود. این قالب برای ماشین بهینه است و خواندنش برای انسان سخت‌تر.

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

۲. جدول: ستون‌ها را قبل از پرسیدن تعریف کن

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

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

نکتهٔ دوم، ترتیب ستون‌هاست. ترتیب را صریح بنویس و شماره بزن؛ اگر ترتیب را ننویسی، در هر اجرا می‌تواند جابه‌جا شود و مقایسهٔ دو خروجی سخت می‌شود.

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

۳. فهرست: تفاوت فهرست ساده و فهرست تودرتو

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

برای فهرست تودرتو، نام فیلدها را در یک اسکلت خالی بنویس و از مدل بخواه عیناً آن را پر کند. اگر فیلدی را در اسکلت نگذاری، مدل ممکن است از خودش اضافه کند؛ پس بنویس که هیچ فیلد اضافه‌ای مجاز نیست. تعیین تعداد دقیق موردها را هم فراموش نکن: «دقیقاً پنج مورد» بسیار پایدارتر از «چند مورد» است.

تعریف کلیدها و نوع مقدار در خروجی JSON

۴. خروجی JSON: کلید و نوع مقدار را قفل کن

برای ساختار داده، صرفِ گفتن «به‌صورت JSON بده» کافی نیست. سه چیز را باید ببندی: نام دقیق کلیدها، نوع مقدار هر کلید، و شکل آرایه‌ها. نمونهٔ آماده برای کپی:

پنج رقیب اصلی یک فروشگاه آنلاین لوازم خانگی را استخراج کن.

خروجی را فقط و فقط به‌صورت یک شیء JSON معتبر بده، با این شمای دقیق:

{
  "items": [
    {
      "name": "string — نام برند، حداکثر ۵ کلمه",
      "positioning": "string — یک جمله، حداکثر ۲۰ کلمه",
      "price_tier": "low" | "mid" | "high",
      "strengths": ["string", "..."],
      "source_confidence": 0.0
    }
  ],
  "notes": "string"
}

قواعد:
- دقیقاً ۵ عضو در items؛ نه بیشتر، نه کمتر.
- هیچ کلید اضافه‌ای نساز و هیچ کلیدی را حذف نکن.
- اگر مقداری را نمی‌دانی: رشته‌ها را "نامشخص"، اعداد را 0 و آرایه‌ها را [] بگذار.
- price_tier فقط یکی از سه مقدار مجاز باشد.
- هیچ متنی بیرون از JSON ننویس؛ نه مقدمه، نه توضیح، نه بلوک کد.

سه بند آخر همان‌هایی هستند که معمولاً فراموش می‌شوند و بیشترین خرابی را می‌سازند. به‌ویژه بند آخر: بدون آن، مدل اغلب یک جملهٔ توضیحی قبل یا بعد از خروجی می‌گذارد و هر ابزاری که بخواهد آن را بخواند، خطا می‌دهد.

۵. مقادیر خالی: جایی که بیشتر ساختارها می‌شکنند

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

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

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

مدیریت مقادیر خالی در خروجی ساختارمند

۶. حذف متن اضافه دور خروجی

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

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

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

۷. چهار اشتباه رایج

خواستن جدول برای دادهٔ ناهمگون. اگر موردها ویژگی مشترک ندارند، جدول پر از خانهٔ خالی می‌شود. اینجا فهرست تودرتو انتخاب درست‌تری است.

نام‌گذاری مبهم کلیدها. کلیدهایی مثل «توضیح» یا «اطلاعات» عملاً هر چیزی را می‌پذیرند و بین اجراها ناهمگون می‌شوند. نام کلید باید دقیقاً بگوید چه چیزی داخلش می‌آید.

ترکیب متن توضیحی با ساختار داده. اگر هم تحلیل بخواهی و هم خروجی ساختارمند، دو مرحله جلو برو: اول تحلیل، بعد در پیام جدا فقط ساختار داده.

نبستن تعداد. «چند مورد بده» یعنی هر بار تعداد متفاوت. عدد دقیق بنویس و تأکید کن نه بیشتر و نه کمتر. کنترل دقیق‌تر طول و تعداد بخش‌ها موضوع قسمت سوم، کنترل طول و ساختار متن است.

۸. پرسش و پاسخ

کلیدهای JSON را فارسی بنویسم یا انگلیسی؟ انگلیسی و بدون فاصله بنویس؛ پایدارتر است و هر ابزاری بدون دردسر می‌خواندش. مقدارها می‌توانند فارسی باشند.

چرا گاهی خروجی داخل بلوک کد می‌آید؟ چون مدل حدس می‌زند برای خواندن راحت‌تر است. اگر مزاحم است، صریح بنویس که بدون علامت‌گذاری بلوک کد بدهد.

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

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

دو تمرین زیر را انجام بده؛ دومی را روی داده‌ای اجرا کن که واقعاً در کارت استفاده می‌شود.

✏️ تمرین

در گرفتن خروجی JSON از هوش مصنوعی، کدام بند بیشترین نقش را در جلوگیری از شکستن ساختار دارد؟

🔒

این تمرین ویژهٔ اعضاست

برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.

🎁 ورود / ثبت‌نام و شروع ۱۴ روز رایگان
قبلاً عضو شده‌ای؟ فقط کافی است وارد شوی. اشتراک: از ۱۹۹٬۰۰۰ تومان / ماه
جمع‌بندی. خروجی ماشین‌خوان با انتخاب درست قالب شروع می‌شود و با بستن جزئیات ادامه پیدا می‌کند: ستون‌های نام‌دار برای جدول، اسکلت خالی برای فهرست تودرتو، و کلید و نوع مقدار برای ساختار داده. اما آنچه واقعاً ساختار را نجات می‌دهد، قاعدهٔ مقادیر خالی و بند حذف متن اضافه است. اگر مبانی پرامپت‌نویسی را می‌خواهی مرور کنی، پرامپت‌نویسی برای مبتدی‌ها را بخوان و آموزش‌های بیشتر را در بخش آموزش‌های هوش مصنوعی دنبال کن.
— (0 رأی)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *