تیپ #۲۱

خروجی ساختاریافته: پاسخ قابل‌اعتماد با شِمای JSON

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

توضیح کامل‌تر

وقتی از یک مدل زبانی می‌خواهیم داده‌ی ماشین‌خوان تولید کند، متن آزاد شکننده‌ترین بخش pipeline است: یک کوتیشن جابه‌جا می‌شود و کل زنجیره‌ی ایجنت از کار می‌افتد. خروجی ساختاریافته این مشکل را از ریشه حل می‌کند، چون مدل موظف می‌شود دقیقاً همان شِمایی را تولید کند که شما تعریف کرده‌اید. در عمل دو مسیر وجود دارد: بعضی APIها حالت strict را پشتیبانی می‌کنند و شِما را در سطح موتور مدل اعمال می‌کنند، و بعضی ابزارها با محدودسازی گرامر در زمان نمونه‌گیری توکن، فقط توکن‌هایی را مجاز می‌دانند که ساختار را نقض نکنند. نکته‌ی مهم این است که شِما را کوچک و صریح نگه دارید: فیلدهای required، مقادیر enum برای دسته‌بندی‌ها، و additionalProperties برابر false تا مدل فیلد اضافه نسازد. برای مثال در یک ایجنت پشتیبانی مشتری، می‌توانید خروجی را با فیلدهای intent و priority و order_id تعریف کنید تا کد بعدی بدون هیچ حدس و گمانی تصمیم بگیرد. حتی با این محدودیت‌ها هم یک لایه‌ی اعتبارسنجی و تلاش دوباره در سمت کد لازم است، چون سرویس‌دهنده‌ها محدودیت‌های متفاوتی دارند و خطای شبکه یا نیمه‌کاره ماندن پاسخ همیشه ممکن است.

مفاهیم پایه
← بازگشت به همهٔ نکته‌های روز