سمیرا برنامهنویس یک استارتاپ بیمه در تهران است. سامانهای نوشته که ایمیل مشتریها را به مدل میدهد و مدل باید نام، شمارهٔ بیمهنامه و نوع درخواست را به شکل JSON برگرداند تا مستقیم در پایگاه داده بنشیند. دو هفته بیعیب کار میکند. ساعت دو بامداد یکشنبه، صف پردازش میایستد. علت؟ مدل قبل از آکولاد باز، یک جملهٔ مهربان اضافه کرده بود: «حتماً! این هم اطلاعات استخراجشده:». همان یک جمله کافی بود تا json.loads خطا بدهد و کل صف بخوابد.
این دقیقاً همان مسئلهای است که کوکبوک آنتروپیک با نام «فعالکردن حالت JSON» به آن میپردازد. نکتهٔ مهم اما این است: راهحل امروز با راهحل دو سال پیش فرق دارد. سه نسل تکنیک وجود دارد و هر سه هنوز کاربرد دارند؛ فقط باید بدانید کدامیک برای کدام موقعیت ساخته شده است. در این درس هر سه را میبینیم و در انتها میدانید کِی سراغ کدام بروید.
لیست مطالب
آنچه در این درس یاد میگیرید
- چرا مدل زبانی بهطور طبیعی تمایل دارد دور خروجی خود توضیح بپیچد و چرا این یک باگ نیست.
- تکنیک پیشپرکردن پاسخ: چطور با گذاشتن یک آکولاد در دهان مدل، مقدمهگویی را حذف کنید.
- نقش
stop_sequencesدر بستن زودهنگام خروجی و خطر پنهان آن. - روش ابزارمحور: تعریف شِما بهعنوان ابزار و اجبار مدل با
tool_choice. - روش رسمی و امروزی: خروجی ساختیافته با
output_config.formatو تضمین انطباق با شِما. - محدودیتهای واقعی: تأخیر اولین درخواست، هزینهٔ توکن، حالتهای شکست و ناسازگاریها.
- یک چکلیست تصمیمگیری برای انتخاب میان این سه روش.
چرا گرفتن JSON از مدل سختتر از چیزی است که بهنظر میرسد
مدل زبانی روی متن آموزش دیده و در متنِ انسانی، دادهٔ خام تقریباً هیچوقت لخت نمیآید؛ همیشه یک جملهٔ مقدمه دارد. وقتی مینویسید «خروجی را به شکل JSON بده»، مدل این را یک درخواست سبک میفهمد، نه یک قرارداد ماشینی. پس محتملترین ادامهٔ متن از نگاه او، یک جملهٔ توضیحی و بعد JSON است. مشکل اینجاست که کد شما مهربانی مدل را نمیفهمد.
بدتر از مقدمه، مواردی است که خروجی تقریباً درست است: کامای اضافی در انتهای آرایه، گیومهٔ فارسی بهجای گیومهٔ استاندارد، یک فیلد جاافتاده، یا عددی که داخل رشته آمده. این خطاها در آزمایش دستی دیده نمیشوند و در تولید، ماهها بعد و در بدترین ساعت ممکن خودشان را نشان میدهند. اگر پیشتر درس کنترل قالب خروجی را خواندهاید، این ادامهٔ فنی و سختگیرانهٔ همان بحث است.
راه اول: پیشپرکردن پاسخ مدل
سادهترین ترفند این است که نوبت پاسخ را خودتان شروع کنید. در پیامهای ارسالی، بعد از پیام کاربر یک پیام با نقش assistant بگذارید که فقط یک آکولاد باز است. مدل مجبور میشود از همان نقطه ادامه دهد و دیگر جایی برای مقدمهچینی ندارد.
تا اینجا مقدمه بود. بخش اصلی این درس — نمونهها، پرامپتهای آماده و تمرینها — برای اعضای ویژه باز میشود.
خروجی JSON مطمئن از هوش مصنوعی؛ سه روش رسمی آنتروپیک برای دادهٔ ماشینخوان
برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.
🎁 ورود / ثبتنام و شروع ۱۴ روز رایگان