اگر امروز برای تولید تصویر در اپلیکیشن خود به یک مدل خاص وابسته شدهاید، احتمالاً هزینه جابهجایی به مدل رقیب برای شما کمرشکن است. اما با پیادهسازی یک بودجه تلمتری و مرزهای محدود در API، میتوان مدلهای هوش مصنوعی را مانند ابزارهای مصرفی و قابل تعویض مدیریت کرد. این قرارداد داخلی سختگیرانه بین یک اپلیکیشن و آداپتورهای AI میتواند پیش از آنکه اتفاق بیفتد، جلوی وابستگی شدید به یک فروشنده (Vendor Lock-in) را بگیرد.
این رویکرد در زمانی ارائه میشود که سازمانها با پدیده «پراکندگی تأمینکننده» (Provider Sprawl) دستوپنجه نرم میکنند؛ وضعیتی که در آن تغییر مدل از یکی به دیگری مستلزم بازنویسی گسترده سیستمهای ثبت وقایع (Logging)، صورتحسابها و منطق پرامپتهاست. در بسیاری از ساختارهای فعلی، اپلیکیشن بیش از حد با ویژگیهای خاص و رفتارهای عجیب API یک شرکت گره خورده است و همین موضوع باعث میشود هزینه جابهجایی به شدت بالا برود. برای مقابله با این چالش، پیادهسازی معماری لایهٔ سوئیچینگ میتواند راهکاری موثر برای جلوگیری از وابستگی به مدلهای پیشرو مانند Sora و Veo باشد.
تصور کنید زیرساخت هوش مصنوعی شما شبیه به یک پریز برق باشد؛ دستگاه شما نباید اهمیت دهد که برق از نیروگاه بادی میآید یا زغالسنگ، تا زمانی که ولتاژ ثابت باشد. این تصمیم معماری در یک گردشکار استخدام برای پشتیبانی مشتری به کار گرفته شده است، جایی که کارتهای نقشآفرینی (Role-play cards) برای کاندیداها تولید میشوند. در این گردشکار، یک ارزیاب، کاندیداها را بر اساس یک دستورالعمل شغلی (Rubric) امتیازدهی میکند، در حالی که یک تولیدکننده تصویر، یک کارت نقشآفرینی استاندارد را از متنی تأییدشده و غیرمرتبط با کاندیدا تولید میکند. امتیاز و کارت تولیدشده یک شناسه گردشکار (Workflow ID) مشترک دارند، اما محتوای دادهای (Payload) آنها مشترک نیست. این جداسازی تضمین میکند که جابهجایی تأمینکننده در مرز رسانهای (Media Boundary) اتفاق بیفتد، در حالی که شواهد استخدامی در مرز اپلیکیشن باقی بمانند.
سه اصل تغییرناپذیر برای قابلیت جابهجایی
طبق مستندات این چارچوب، سیستم برای حفظ پایداری بر سه مرز سخت تکیه دارد:
- قرارداد کوچک: اپلیکیشن فقط پرامپت تأییدشده، کلاس نسبت ابعاد (Aspect-ratio class)، تعداد خروجی و یک توکن یکتایی (Idempotency Token) را ارسال میکند. در مقابل، شناسههای داخلی داراییها و یک وضعیت نرمالشده (Normalized Status) دریافت میکند. تمام متادیتای خاص هر تأمینکننده — مانند نام مدل، فیلدهای پرامپت بازبینیشده، متادیتای ایمنی و URLهای تحویل — در لایه آداپتور (Adapter) — شبیه به یک تبدیل برق که ولتاژهای مختلف را به یک استاندارد واحد میرساند — پنهان میماند. اگر یک تأمینکننده جدید نتواند ورودی یا خروجی مورد نیاز را ارائه دهد، سیستم در مرحله «مذاکره قابلیتها» (Capability Negotiation) درخواست را پیش از تولید رد میکند؛ آداپتور هرگز نباید درخواست را بهصورت خاموش بازتفسیر کند.
- جداسازی شواهد: دادههای کاندیدا — مانند امتیازات دستورالعمل، یادداشتهای ارزیاب، بخشهایی از رزومه یا ویژگیهای محافظتشده — هرگز وارد سرویس تصویر نمیشوند. سرویس فقط یک شناسه گردشکار را برای همبستهسازی (Correlation) میبیند. این امر تضمین میکند که شواهد استخدامی در سیستم ثبت اصلی (System of Record) باقی بمانند، در حالی که کارت نقشآفرینی تولیدشده صرفاً به عنوان یک ابزار ارائه تلقی شود، نه شواهدی برای تصمیمگیری در مورد استخدام. این نوع جداسازی دادهها یادآور معماری Tenant-Aware است که با اتصال سخت به مستاجر، از نشت داراییها و خطاهای احراز هویت جلوگیری میکند.
- تلمتری محدود: ثبت وقایع تنها به شناسههای داخلی آداپتور، نسخههای قرارداد، کلاسهای نتیجه، تعداد تلاشها، دستههای زمانی (Duration Buckets)، تعداد تصاویر و مقادیر اندازهگیری کلی محدود شده است. طبق گزارش توسعهدهندگان، ثبت متن خام پرامپتها، شناسههای درخواست، شناسههای دارایی، پیامهای خطا و شناسههای کاندیدا در برچسبهای متری (Metric Labels) ممنوع است تا از ایجاد «فضای سریهای نامحدود» (Unbounded Series Space) و نشت دادههای حساس به سیستمهای ذخیرهسازی دیگر جلوگیری شود.
مدیریت مرز تأمینکننده
هنگام یکپارچهسازی مدلهایی مانند OpenAI، Claude یا Gemini، هر تأمینکنندهای که نتواند الزامات قرارداد را برآورده کند، رد میشود. در این مدل، رویکرد «یک کلید» (One Key) اعتبارنامهها را ساده میکند اما معنای خروجی، سیاستهای نگهداری یا قابلیت نظارت را تضمین نمیکند. نامها معیارهای ضعیفی برای انتخاب هستند؛ کلمات OpenAI، Claude و Gemini در یک سند الزامات، صرفاً به عنوان برچسبهای یکپارچهسازی تلقی میشوند، نه دلیلی برای اثبات قابلیتهای مشترک.
برای تضمین کیفیت، هر آداپتور جدید باید از یک آزمون «درخواست طلایی» (Golden-request) و اعتبارسنجی داراییها عبور کند. تیم از یک فیکسچر ارزیابی خاص استفاده میکند که شامل متنهای تأییدشده نقشآفرینی، تعداد خروجی مورد انتظار، انواع رسانههای مجاز، حداقل و حداکثر محدودههای بایتی و لیستی قطعی از اعتبارسنجیها است. از آنجایی که برابری پیکسلها (Pixel Equality) معیار منطقی برای خروجیهای زاینده نیست، سیستم بر انطباق با قرارداد تمرکز میکند.
قوانین پذیرش آداپتور
هر هدف پیش از آنکه قابل مسیریابی (Routable) شود، باید تستهای شناسایی و قرارداد را پاس کند:
- یکپارچهسازی OpenAI: تنها در صورتی فعال میشود که پیکربندی خروجی تصویر توسط پروب قرارداد پذیرفته شود. این مورد مستلزم عبور از شمای درخواست طلایی و اعتبارسنجی دارایی است. تلمتری به شناسه داخلی آداپتور محدود شده و جزئیات مدل بالادستی در یک جدول جستجوی کمتعداد (Low-cardinality lookup) نگه داشته میشود.
- یکپارچهسازی Claude: مسیریابی خروجی تصویر رد میشود مگر اینکه مرحله شناسایی، قابلیت مورد نیاز را تأیید کند. در این حالت، ثبت یک نتیجه «عدم پشتیبانی» صریح، بر جایگزینی خروجی با متن ترجیح داده میشود. سیستم بهجای دادههای پرامپت یا کاندیدا، رد شدن قابلیت را ثبت میکند.
- یکپارچهسازی Gemini: مستقل از سایر قابلیتهای Gemini، تنها برای پیکربندیهای خروجی تصویر تستشده فعال میگردد. این مدل باید همان فیکسچر، سیاست ابعاد و بررسیهای دارایی را پاس کند. مصرف گزارششده بهطور جداگانه از تخمین تخصیص نگهداری میشود.
- سایر مدلهای تبدیل متن به تصویر (Text-to-Image): از طریق همان رابط آداپتور بدون تغییر در قرارداد اپلیکیشن اضافه میشوند. این مدلها باید مجموعه کامل فیکسچرها و تست بازگشت (Rollback) را اجرا کنند تا یک شناسه آداپتور پایدار و همان تاکسونومی نتایج را دریافت کنند.
ریاضیات نظارتپذیری
حجم تلمتری در اینجا یک مسئله حسابی است، نه تخمینی. به نقل از گزارش فنی، سرویسی که برای ۵۰,۰۰۰ درخواست روزانه، ۸ رویداد تولید کند و هر رویداد ۷۰۰ بایت باشد، در ۳۰ روز به ۸.۴ گیگابایت داده تبدیل میشود (۸ × ۵۰,۰۰۰ × ۷۰۰ × ۳۰). این محاسبه بدون در نظر گرفتن سربار ایندکس، تکثیر (Replication) و فشردهسازی است، زیرا این موارد به سیستم تلمتری خاص بستگی دارند.
برای مدیریت این حجم، محدودیتهای شدیدی بر تعداد ترکیبات (Cardinality) اعمال شده است. با ۴ آداپتور، ۶ نتیجه نرمالشده، ۳ محیط استقرار و ۱۰ دسته تأخیر (Latency Buckets)، حد بالای دکارتی برای یک خانواده هیستوگرام ۷۲۰ ترکیب است (۴ × ۶ × ۳ × ۱۰). اضافه کردن ۵۰,۰۰۰ شناسه گردشکار روزانه به عنوان برچسب، این حجم را بدون افزودن ارزش عملیاتی منفجر میکند. در عوض، شناسههای گردشکار به ردپاهای نمونهبرداری شده (Sampled Traces) یا وقایع تشخیصی ایندکسشده منتقل میشوند.
نمونهبرداری و اندازهگیری
نمونهبرداری از قوانین تصمیمگیری خاصی پیروی میکند. سیستم تمام رد شدنهای قابلیت، رد شدنهای سیاستی، پاسخهای بدشکل و نتایج مبهم را برای یک بازه تشخیصی کوتاه نگه میدارد. موفقیتهای روتین با یک نرخ اعلامشده (مثلاً ۱٪) برای تحلیل ردپا نمونهبرداری میشوند، هرچند شمارندههای تجمیعی (Aggregated Counters) برای هر درخواست حفظ میشوند. ردپاهای نمونهبرداری شده هرگز به عنوان دفتر کل صورتحساب (Billing Ledger) استفاده نمیشوند.
اندازهگیری (Metering) به دو فیلد مجزا نیاز دارد: «مصرف گزارششده» (شواهدی از آداپتور) و «تخمین تخصیص داخلی» (یک مقدار برنامهریزی شده که توسط درگاه یا Gateway استخراج میشود). ترکیب این دو، عدم قطعیت را پنهان میکند. تطبیق مالی از رکوردهای تغییرناپذیر در سطح درخواست با دسترسی محدود و سیاست نگهداری مجزا از لاگهای عیبیابی استفاده میکند.
استقرار و اعتبارسنجی
آداپتورهای جدید ابتدا بهصورت «تاریک» (Dark Launch) مستقر میشوند؛ یعنی ترافیک واقعی نمیگیرند و در عوض، فیکسچرهای ثابت را برای اعتبارسنجی تجزیه (Parsing)، ذخیرهسازی و مقایسه تلمتری نرمالشده اجرا میکنند. تنها پس از تطبیق موفقیتآمیز نتایج مبهم — مانند Timeoutها که نیاز به تطبیق از طریق توکن یکتایی دارند — آداپتور به یک گروه (Cohort) کوچک و صریحاً تعیینشده منتقل میشود.
ارتقاء آداپتور مستلزم یک تست بازگشت (Rollback) آزمایششده به پیکربندی مسیریابی قبلی است. سیستم قانون «عدم بازگشت خاموش» (No Silent Fallback) را اجرا میکند: یک پاسخ بدشکل پیش از آنکه دارایی برای ارزیاب قابل مشاهده شود، قرنطینه میشود. این کار مانع از آن میشود که یک درخواست صرفاً به دلیل شکست یک آداپتور، رژیم سیاستی، ابعاد تصویر یا تخصیص هزینه خود را تغییر دهد.
مسیر درخواست قابل جابهجایی
درخواستهای ارسالی به API، محدودیتهای کسبوکار را بیان میکنند، نه پارامترهای تأمینکننده. برای مثال، یک درخواست معمولی به این شکل است:
curl --fail-with-body --request POST \--url https://images.example/api/generations \--header 'Authorization: Bearer ${IMAGE_GATEWAY_KEY}' \--header 'Content-Type: application/json' \--header 'Idempotency-Key: hiring-demo-0187-card-01' \--data '{ "contract_version": "2026-01", "workflow_id": "hiring-demo-0187", "purpose": "support-roleplay-card", "prompt": "A neutral help-desk workspace used for a customer support role-play exercise", "aspect_ratio": "landscape", "output_count": 1 }'
پرامپت در اینجا یک متن سناریوی تأییدشده است، نه ورودی کاندیدا. درگاه (Gateway) تنها از میان آداپتورهایی انتخاب میکند که با نسخه قرارداد 2026-01 سازگار باشند. پاسخ دریافتی شامل ارجاعات داخلی به داراییهاست، نه URLهای بالادستی که باعث افشای انتخاب تأمینکننده شود. پاسخهای خام تأمینکننده تنها برای نیازهای حسابرسی (Audit) تعریفشده ذخیره میشوند؛ در غیر این صورت، سیستم فیلدهای نرمالشده و رکوردهای تشخیصی کوتاهمدت را ذخیره میکند تا از تکرار ورودیها در لاگهای عمومی جلوگیری شود.
رد مدل پروکسی شفاف
تیم توسعه بهطور صریح طراحی «پروکسی شفاف» (Transparent Proxy) را رد کرد. اگرچه پروکسی که تمام فیلدهای بالادستی را فوروارد میکند برای ارزیابیهای کوتاهمدت در یک آزمایشگاه مدل ایزوله با پرامپتهای مصنوعی جذاب است، اما مرز مناسبی برای وضعیت پایدار تولید نیست. این مدل، کد اپلیکیشن را به شمای فروشنده گره میزند، باعث تورم تلمتری میشود و منطق جابهجایی تأمینکننده را به داخل اپلیکیشن فراخواننده نشت میدهد.
علاوه بر این، تیم تشخیص داد که جستوجوی برداری (Vector Search) یک موضوع مجزا است. در حالی که Embeddingها (از طریق OpenAI) و pgvector جستوجوی شباهت را فراهم میکنند، آنها یک قرارداد تولید تصویر ایجاد نمیکنند. هر زیرسیستمی که باید بخشهایی از دستورالعمل را بهصورت معنایی بازیابی کند، باید از طبقهبندی دادهها و ریاضیات نگهداری خاص خود استفاده کند، نه اینکه در تلمتری تولید تصویر ادغام شود.
تحلیل: تغییر پارادایم یکپارچهسازی AI
این چارچوب این فرض بنیادی را تغییر میدهد که یکپارچهسازی AI یعنی به حداکثر رساندن مجموعه ویژگیهای یک مدل. در عوض، استدلال میکند که برای گردشکارهای تولیدی، گستردهترین سطح تماس (Surface Area) یک نقطه ضعف است. با محدود کردن عمدی آنچه اپلیکیشن از تأمینکننده «میبیند»، تیم انعطافپذیری فوری را با حاکمیت (Governance) بلندمدت معاوضه میکند.
برای یک توسعهدهنده عملی، این بدان معناست که «بهترین» مدل دیگر مدلی نیست که بیشترین ویژگیها را داشته باشد، بلکه مدلی است که بهطور مستمر با قرارداد داخلی سازگار باشد. این امر تلاش مهندسی را از تنظیم پرامپت (Prompt Tuning) به اجرای قرارداد (Contract Enforcement) منتقل میکند و تضمین میکند که منطق کسبوکار نسبت به آزمایشگاه AI زیربنایی، بیتفاوت (Agnostic) باقی بماند.
گام بعدی شما
- بررسی کنید آیا در معماری فعلی شما، تغییر مدل AI مستلزم تغییر در کدهای لایه Application است یا خیر.
- برای APIهای خود یک «قرارداد محدود» تعریف کنید که فقط ورودیهای ضروری را بپذیرد و متادیتای مدل را در لایه Adapter پنهان کند.
- سیستم نظارتی خود را از ثبت دادههای متغیر (مانند ID کاربر) به سمت ثبت دستههای وضعیت (Status Classes) ببرید تا حجم دادههای تلمتری کنترل شود.
اما مدیریت هزینههای استنتاج در این مقیاس، چالش دیگری است — به تحلیل ما درباره بهینهسازی هزینههای GPU مراجعه کنید.




گفتگو