پرش به محتوای اصلی
پرش به محتوای مقاله

فایل JSON؛ سدی در برابر هزینه‌های پنهان زیرساختی عامل‌های کدنویس

·۱۴ شهریور ۱۴۰۵۷ دقیقه مطالعه۳ بازدید
راهنما
مسدودسازی زیرساخت اختراع‌شده پیش از ادغام
مسدودسازی زیرساخت اختراع‌شده پیش از ادغام
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی مفهوم «دفتر ثبت فرضیات» (Assumption Ledger) پیش از تولید کد؛ این یعنی مدل مجبور است ابتدا «قصد» خود را در قالب JSON اعلام کند و سپس کد بنویسد، نه اینکه هر دو را هم‌زمان انجام دهد.

تصور کنید یک توسعه‌دهنده مستقل (Indie Hacker) برای صرفه‌جویی در هزینه، از یک ترکیب ساده شامل SQLite، یک کرون‌جاب (cron job) و کمی صبر استفاده می‌کند، اما عامل کدنویس او تا ساعت ۱۱ شب، نیمی از مسیر پرداخت را بازنویسی می‌کند تا Redis، وب‌هوک‌های Stripe و یک Worker برای صف (Queue Worker) را به پروژه اضافه کند. این وضعیت یک تنش و مشکل رو به رشد را نشان می‌دهد: مدل‌های هوش مصنوعی تمایل دارند سکوتِ مستندات را با حدس‌های زیرساختی محبوب اما گران‌قیمت پر کنند که معمولاً حول محور کش‌ها، صف‌ها و APIهای پولی می‌چرخند.

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

همان‌طور که در تحلیل‌های قبلی ما درباره‌ی امنیت مدل‌های بازمتن اشاره کردیم، کنترل دسترسی‌ها کلید پایداری است. برای حل این مشکل، مکانیسم جدیدی به نام «سیستم منشور» (Charter System) معرفی شده است. در این رویکرد، عامل هوش مصنوعی مانند پیمانکاری است که باید پیش از نوشتن حتی یک خط کد، تمام فرضیات زیرساختی خود را در یک دفتر ثبت (Ledger) لیست کند. یک فرم پر شده باعث می‌شود اقلام گران‌قیمت در همان ابتدا دیده شوند. اگر حدسی با منشور مطابقت نداشته باشد، کد مسدود می‌شود، نه دست توسعه‌دهنده.

مکانیسم منشور و دفتر ثبت

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

این منشور شامل محدودیت‌های بسیار مشخصی است:

  • allowed_deps: فهرستی سخت‌گیرانه از کتابخانه‌های مجاز (مثلاً flask یا sqlite3).
  • forbidden_substrings: لیست سیاهی از توکن‌های گران‌قیمت مانند stripe ،redis ،sqs ،rds ،openai یا mongodb+srv.
  • max_files_touched: محدودیتی (مثلاً ۶ فایل) برای جلوگیری از اینکه عامل در یک مرحله کل معماری پروژه را دگرگون کند.
  • allowed_paths: دایرکتوری‌های خاصی که عامل اجازه تغییر آن‌ها را دارد، مانند app.py ،templates/** ،static/** و lib/**.
  • allowed_env: متغیرهای محیطی مجاز مانند DATABASE_PATH و PUBLIC_BASE_URL.

بر اساس مستندات این روش، عامل پیش از تولید تغییرات (Diff)، باید یک فایل assumption_ledger.json تولید کند. این دفتر ثبت از فرمت JSON استفاده می‌کند و برای هر حدس، یک شیء می‌سازد. مدل باید هر ادعای زیرساختی را در دو دسته «تأیید شده» (verified) یا «مسدود شده» (blocked) قرار دهد.

برای مثال، یک دفتر ثبت ممکن است حاوی این ادعای تأیید شده باشد که «بخش پرداخت می‌تواند سبدهای خرید را در SQLite محلی ذخیره کند»، زیرا app.py از قبل DATABASE_PATH را باز کرده است. در مقابل، ادعایی مبنی بر اینکه «شارژ کارت‌ها به یک Worker برای وب‌هوک Stripe نیاز دارد»، به دلیل ممنوعیت Stripe در منشور، «مسدود» می‌شود. این مسدود شدن یک ویژگی است، نه شکست؛ زیرا وسوسه مدل را با زبان ساده ثبت می‌کند تا توسعه‌دهنده بعداً آگاهانه هزینه آن را بپذیرد.

اجرای خودکار و نظارت

برای اینکه عامل نتواند صورت‌حساب‌ها را به‌صورت پنهانی در کد جای دهد (Smuggle)، یک اسکریپت بازبینی با زبان پایتون به کار گرفته می‌شود. این اسکریپت برای حفظ سادگی، تنها از کتابخانه‌های استاندارد پایتون برای خواندن منشور، دفتر ثبت و تغییرات کد استفاده می‌کند.

پرامپت داده شده به عامل کوتاه و سخت‌گیرانه است و کدنویسی را تا زمان اعتبارسنجی دفتر ثبت ممنوع می‌کند. به عامل گفته می‌شود: «پیش از ابداع زیرساخت، charter.json را بخوان. ابتدا assumption_ledger.json و سپس unified diff را خروجی بده. هیچ وابستگی خارج از allowed_deps اضافه نکن».

این اسکریپت بازبینی، اعتبارسنجی‌های بسیار دقیقی انجام می‌دهد:

  • اعتبارسنجی مسیر: بررسی می‌کند که تعداد فایل‌های تغییر یافته از max_files_touched بیشتر نشود و اطمینان حاصل می‌کند تمام مسیرها با الگوهای (globs) موجود در allowed_paths مطابقت دارند.
  • همگام‌سازی دفتر: تأیید می‌کند فایل‌های لیست شده در دفتر ثبت دقیقاً با فایل‌های موجود در Diff یکی باشند.
  • بررسی وابستگی‌ها: اطمینان حاصل می‌کند هرگونه new_deps در لیست allowed_deps باشند و تمام Importها را برای یافتن موارد غیرمجاز اسکن می‌کند (به جز کتابخانه‌های استاندارد مانند json ،os ،re ،sys ،pathlib و typing).
  • اسکن توکن‌ها: خطوط اضافه شده در Diff را برای یافتن هر یک از forbidden_substrings جست‌وجو می‌کند.
  • تأیید منطق: بررسی می‌کند که هر فرض «تأیید شده» شواهد همراه داشته باشد و هیچ ادعای «مسدود شده‌ای» در کد نهایی نفوذ نکرده باشد.

اگر اسکریپت تخلفی پیدا کند، با وضعیت غیرصفر (non-zero status) خارج می‌شود. توسعه‌دهنده می‌تواند کارایی این بازبین را با تست دو Diff بسنجد: یکی که در محدوده SQLite می‌ماند (که پیام charter ok چاپ می‌کند) و دیگری که سعی می‌کند یک Import مربوط به Stripe را در lib/cart.py بگنجاند (که با کد ۱ خارج شده و به stripe اشاره می‌کند).

مقیاس‌پذیری با دروازه بازبینی

برای توسعه‌دهندگانی که می‌خواهند این روند را خودکارتر کنند، این بازبین می‌تواند روی یک سرور کوچک و رایگان میزبانی شود. در این حالت، توسعه‌دهنده می‌تواند یک Payload حاوی دفتر ثبت و Diff را از طریق یک فراخوانی curl به نقطه پایانی /check ارسال کند.

اگر سرور خطای ۴۲۲ برگرداند، تغییرات رد می‌شود. این یک «دروازه بازبینی» (Review Gate) ایجاد می‌کند که به برنامه‌نویس اجازه می‌دهد بدون نگرانی از اینکه مدل در پس‌زمینه در حال سفارش «لیفتراک‌های دیجیتال» است، از صفحه نمایش فاصله بگیرد و لپ‌تاپ خود را ببندد.

برخی توسعه‌دهندگان این بازبین را در کنار مدل‌های رایگان کدنویسی قرار می‌دهند. برای مثال، MonkeyCode دسترسی رایگان به مدل و یک گزینه سرور رایگان را برای پشتیبانی از این چرخه فراهم می‌کند. در این ساختار، مدل پیش‌نویس دفتر ثبت و Diff را تهیه می‌کند، در حالی که سرور صرفاً آن‌ها را بر اساس منشور امتیازدهی می‌کند.

محدودیت‌ها و موازنه ها

این روش عمداً سطحی طراحی شده است و جایگزین بازبینی‌های امنیتی حرفه‌ای نمی‌شود. نویسنده به چند نقطه ضعف بحرانی اشاره می‌کند:

  • پول‌شویی توکن‌ها (Token Laundering): یک مدل مصمم می‌تواند با تغییر نام Importها یا استفاده از URLهای کدگذاری شده برای پنهان کردن یک سرویس، محدودیت‌های متنی را دور بزند.
  • شواهد جعلی: وضعیت «تأیید شده» در دفتر ثبت بر اساس متن تولید شده توسط خود مدل است، نه بر اساس اجرای واقعی، تست‌های دیتابیس یا بررسی فایل‌های باز شده.
  • کهنگی لیست‌ها (List Rot): لیست توکن‌های ممنوعه باید ماهانه پاک‌سازی و به‌روز شود، زیرا فروشندگان نام محصولات خود را تغییر می‌دهند. یک منشور قدیمی تبدیل به یک «تئاتر گران‌قیمت» می‌شود که کاربرد واقعی ندارد.

این رویکرد برای تیم‌هایی که نیاز به استانداردهای PCI، HIPAA یا SOC دارند طراحی نشده است، و همچنین برای پروژه‌هایی که واقعاً به یک صف (Queue) پولی نیاز دارند مناسب نیست. در این موارد، منشور مانع از طراحی درست می‌شود. راهکار این است که منشور در روز روشن (با آگاهی کامل) ویرایش شود و سپس کد تولید گردد.

چرخش در گردش‌کارهای عامل‌محور

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

این تغییر، تمرکز را از مهندسی پرامپت (Prompt Engineering) — که شبیه هنر سؤال درست پرسیدن از یک مشاور است — به «مهندسی سیاست» (Policy Engineering) منتقل می‌کند. به‌جای امید به اینکه مدل بهینه بماند، توسعه‌دهنده مرزی سخت تعریف می‌کند که مدل نمی‌تواند نادیده بگیرد. دفتر ثبت همان تابلوی ایست است که تضمین می‌کند توسعه‌دهنده صبح روز بعد با یک زیرساخت غیرقابل پرداخت بیدار نشود.

گام بعدی شما

  • یک فایل charter.json ساده برای پروژه‌های کوچک خود بسازید و توکن‌های گران‌قیمت ابری را در آن ممنوع کنید.
  • از اسکریپت‌های بازبینی محلی برای چک کردن Diffهای تولید شده توسط عامل‌ها استفاده کنید تا از نشت هزینه جلوگیری شود.
  • اگر از مدل‌های رایگان استفاده می‌کنید، یک نقطه پایانی /check ساده برای اتوماسیون بازبینی‌ها راه‌اندازی کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

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

تأثیر برای ایران

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

·نگاه ما
تحریریه دات‌هوش

جایگزینی مهندسی پرامپت با مهندسی سیاست، نشان‌دهنده بلوغ در تعامل با عامل‌های هوش مصنوعی است. به نظر ما، این رویکرد پذیرش این واقعیت است که مدل‌های زبانی ذاتاً برای «بهینه‌سازی هزینه» طراحی نشده‌اند و تنها راه کنترل آن‌ها، ایجاد لایه‌های سخت‌افزاری یا نرم‌افزاری خارجی (Out-of-band) است که اجازه تخطی را ندهند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.