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

استفاده از Docker Compose برای حذف متغیرهای محیطی در ارزیابی عامل‌های هوش مصنوعی

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

معرفی یک معماری لایه‌بندی‌شده با Docker Compose که متغیرهای محیطی (ساعت، پاسخ API و وابستگی‌ها) را منجمد می‌کند تا ارزیابی عامل‌ها از حالت حسی به حالت مهندسی تبدیل شود.

اگر یک تست از عامل هوش مصنوعی در محیط محلی شما پاس می‌شود اما در خط لوله CI شکست می‌خورد، احتمالاً با یک خطای مدل طرف نیستید، بلکه با عدم تطابق محیطی روبرو شده‌اید. برای حل این چالش، توسعه‌دهندگان اکنون از Docker Compose برای ساخت آزمایشگاه‌های ارزیابی ایزوله استفاده می‌کنند تا تمام متغیرها به‌جز منطق مدل را منجمد کنند.

تست عامل (Agent) — شبیه مدیریت تیمی از کارمندان است که هر کدام دسترسی به ابزارهای متفاوتی دارند و باید با هم هماهنگ شوند — به‌دلیل تعامل با ابزارهای پویا، پایگاه‌داده‌ها و ساعت‌های سیستم به‌شدت دشوار است. اگرچه یک کانتینر نمی‌تواند یک مدل زبانی بزرگ (LLM) — مثل کتابخانه‌داری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب می‌دهد — را کاملاً پیش‌بینی‌پذیر کند، اما می‌تواند «تغییرات تصادفی» مانند نوسان پاسخ‌های API یا تغییر وابستگی‌ها را حذف کند؛ مواردی که اغلب باعث پوشانده شدن پس‌رفت‌های رفتاری واقعی می‌شوند. طبق یک راهنمای فنی منتشر شده در ۲۱ سپتامبر ۲۰۲۶، هدف این است که متغیرهای تصادفی را از اتفاقات پیش‌بینی‌نشده به تصمیمات مهندسی نسخه‌بندی‌شده تبدیل کنیم.

همان‌طور که در تحلیل‌های قبلی ما درباره‌ی استقرار مدل‌های بازمتن اشاره کردیم، ثبات زیرساخت پیش‌نیاز هرگونه ارزیابی دقیق است.

ساخت آزمایشگاه ارزیابی عامل هوش مصنوعی قابل بازتولید با Docker Compose

معماری آزمایشگاه

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

  • Fixture API: سرویس مرکزی که پاسخ‌های مصنوعی و نسخه‌بندی‌شده ابزارها را ارائه می‌دهد. این سرویس از یک ساعت ثابت (مثلاً "2026-09-01T12:00:00Z") و یک مسیر داده‌های مشخص (مثلاً /fixtures/cases.json) استفاده می‌کند تا منطق‌های وابسته به زمان ثابت بمانند. این سرویس شامل یک بررسی سلامت (healthcheck) است که تا ۲۰ بار تلاش می‌کند تا از پایداری اتصال اطمینان حاصل کند. برای مدیریت بهینه این سرویس‌ها در محیط‌های عملیاتی، می‌توان از استراتژی‌های خودترمیمی سریع برای سرویس‌های داکر بهره برد تا پایداری زیرساخت تضمین شود.
  • Eval-Runner: موتور اصلی اجرا که پیش از شروع، وابسته به سلامت Fixture API است. این بخش با یک بذر (Seed) مشخص (مثلاً "1701") پیکربندی شده و دایرکتوری‌های شواهد را برای ماندگاری داده‌ها مونت (mount) می‌کند.
  • Fault Proxy: سرویسی اختیاری با استفاده از Toxiproxy (از طریق یک Digest SHA256 مشخص) برای تزریق تأخیر (timeout) یا پاسخ‌های بدشکل. این سرویس به توسعه‌دهندگان اجازه می‌دهد تاب‌آوری عامل را تحت پروفایل [fault] تست کنند.
  • OTel Collector: لایه‌ای اختیاری برای تله‌متری و مشاهده ردپاهای داخلی عامل که از طریق پروفایل [observe] فعال می‌شود.

بر اساس مستندات این روش، برای تضمین بازتولیدپذیری مطلق، باید ایمیج‌ها را به‌جای تگ، با اثر انگشت SHA256 تثبیت کرد و برای وابستگی‌های جاوااسکریپت از Lockfileها با نصب‌های منجمد (frozen installs) استفاده نمود. هر اجرای تست با یک مانیفست محیطی همراه است که نسخه پرامپت (مثلاً "refund-v7")، نسخه شمای ابزارها ("tools-v5")، نسخه پالیسی ("policy-v3") و بذر تصادفی (مثلاً seed 1701) را ثبت می‌کند.

ابزارهای بازتولیدپذیر

برای بازتولیدپذیر کردن ابزارها، آزمایشگاه فراخوانی‌های API تولیدی را به سمت fixture-api هدایت می‌کند. به‌جای تماس با یک نقطه پایانی متغیر در محیط تولید، عامل مسیری مصنوعی مانند /orders/synthetic-42 را فراخوانی می‌کند و در هدر درخواست، شناسه مورد را مشخص می‌کند (مثلاً x-eval-case: refund-approval-required).

سرویس Fixture برای آن نسخه خاص، دقیقاً همان بدنه، وضعیت (status) و تأخیر مصنوعی را برمی‌گرداند. این سازوکار به توسعه‌دهنده اجازه می‌دهد بین یک پس‌رفت رفتاری — مانند اینکه عامل یک مرحله تأیید صلاحیت را نادیده بگیرد — و یک تغییر در بک‌اند تمایز قائل شود. اگر پروفایل خطا از طریق دستور docker compose --profile fault run --rm eval-runner اضافه شود، سیستم می‌تواند به‌طور عمدی تأخیرهایی را ایجاد کند تا منطق تلاش مجدد (retry logic) تست شود.

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

این آزمایشگاه به‌جای تکیه بر کد خروجی ساده (exit code) فرآیند، مجموعه‌ای از مصنوعات محدود را در دایرکتوری مونت‌شده ./evidence ذخیره می‌کند. این موارد شامل موارد زیر است:

  • فایل‌های environment.json و results.json
  • فایل junit.xml برای یکپارچه‌سازی با CI
  • پوشه traces/ برای بررسی دقیق مسیرهای اجرا
  • فایل README.md که دستور اجرا، نسخه fixture و تغییرناپذیرهای مورد انتظار را شناسایی می‌کند.

برای جلوگیری از فساد داده‌ها در طول اجرای موازی جاب‌های CI، سیستم نتایج را در دایرکتوری‌های منحصربه‌فرد (مثلاً run-2026-09-09-1701) می‌نویسد و تنها پس از تخلیه کامل تمام مصنوعات، یک فایل نشانگر COMPLETE ایجاد می‌کند. این کار تضمین می‌کند که اجراهای ناقص هرگز به‌عنوان ارزیابی‌های تکمیل‌شده نمره‌دهی نشوند. در مقیاس‌های بزرگتر، مدیریت این نوع تست‌ها می‌تواند با چالش‌های مشابهی روبرو شود که برخی از نقاط شکست رایج در مقیاس‌دهی ابزارهای تست هوش مصنوعی در تحلیل‌های فنی ما بررسی شده است.

هنگام ارزیابی یک نسخه کاندید در برابر نسخه پایه، سامانه یک فایل مقایسه‌ای ماشین‌خوان تولید می‌کند. این فایل به‌جای ارائه یک امتیاز میانگین، دقیقاً ردیابی می‌کند که کدام موارد خاص دچار پس‌رفت شده‌اند (مثلاً "refund-approval-required") یا بهبود یافته‌اند (مثلاً "policy-timeout-recovery"). این رویکرد مانع از آن می‌شود که یک کاندید صرفاً به‌دلیل بهبود در ۱۰ مورد بی‌اهمیت، شکست در یک اقدام حیاتی و محافظت‌شده را بپوشاند و پاس شود.

تحلیل فنی

این تغییر رویکرد، ارزیابی عامل‌ها را از «سنجش حسی» (Vibe Check) به مهندسی نرم‌افزار دقیق تبدیل می‌کند. با هدایت فراخوانی‌های API تولیدی به یک fixture-api ثابت، توسعه‌دهندگان در نهایت می‌توانند پاسخ دهند که آیا عامل یک مرحله تأیید را به‌دلیل تغییر در پرامپت حذف کرده است یا به‌دلیل اینکه API بک‌اند شمای خود را تغییر داده است.

برای یک متخصص، این یعنی اولین سؤال هنگام شکست تست به‌جای «آیا ساعت لپ‌تاپ من متفاوت بود؟» تبدیل می‌شود به «کدام رفتار تغییر کرد؟». این رویکرد می‌پذیرد که اگرچه دمای (Temperature) صفر یک تضمین ریاضی برای یکسانی نیست، اما کنترل ورودی‌ها نتایج را برای ردیابی مسیر پیشرفت در طول زمان به اندازه کافی پایدار می‌کند.

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

گام بعدی شما

  • وابستگی‌های خارجی عامل خود را شناسایی و لیست کنید.
  • فراخوانی‌های API زنده را با یک سرویس Fixture نسخه‌بندی‌شده در یک فایل Compose محلی جایگزین کنید.
  • از SHA256 برای تثبیت ایمیج‌های زیرساختی در محیط تست استفاده کنید.

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

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

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

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

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

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

جایگزینی APIهای زنده با Fixtureهای ایزوله، نقطه پایان دوران «تست و دعا» در توسعه عامل‌های هوش مصنوعی است. این رویکرد نشان می‌دهد که چالش اصلی در مقیاس صنعتی، نه لزوماً قدرت استدلال مدل، بلکه مدیریت نویز محیطی است. در واقع، ما شاهد انتقال متدولوژی تست از دنیای داده‌محور به دنیای تعیین‌گر (Deterministic) در لایه زیرساخت هستیم.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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