ادعای مورد بحث
فروشندگان ایجنتهایی را توصیف میکنند که سالها اجرا میشوند، با قیمتگذاریای که با فعالیت انعطاف مییابد. این چارچوب جذاب است: برای آنچه استفاده میکنید بپردازید، در زمان بیکاری کوچک شوید. اما ایجنتی که یک سال اجرا میشود یک جلسه چت طولانی نیست. یک سرویس حالتمند با چرخه عمر است، و منحنی هزینه هیچ شباهتی به مدل مبتنی بر توکن که ارائهدهندگان ابر و مدل فعلاً ارائه میدهند ندارد.
جدا کردن بازاریابی از مهندسی یعنی پرسیدن یک سؤال ساده: در یک افق بلندمدت واقعاً چه چیزی انباشته میشود؟ پاسخ در درجه اول توکنهای استنتاج نیست. حالت پایدار، بیدارشدنهای دورهای، و کار تعمیری است که وقتی یک اجرا از فرضیات تعبیهشده در ساعت اولش فراتر میرود، انباشته میشود.
حافظه پایدار و ایندکسهای برداری
ایجنتی که در طول ماهها به یاد میآورد، ورودیهای حافظه، امبدینگها و ساختارهای ایندکس را انباشته میکند که با تاریخچه مقیاس مییابند، نه با ترافیک. یک ایندکس برداری که بازسازیاش در یک اجرای کوتاه ارزان بود، وقتی یک سال مشاهدات را نگه میدارد به یک بدهی ذخیرهسازی و محاسباتی تبدیل میشود. امبدینگ مجدد هزینه پنهان است: تغییر یک مدل امبدینگ، تنظیم چانکینگ، یا ترمیم دریفت اغلب یعنی بازمحاسبه بردارها برای کل تاریخچه. آن عملیات متناسب با تاریخچه ذخیرهشده است، نه با حجم درخواست فعلی.
همین امر برای لاگهای اپیزودیک، رونوشتهای فراخوانی ابزار، و سوابق تصمیمگیری صادق است. افزودنشان ارزان است و مهاجرت، هرس کردن یا ایندکس مجددشان گران. در طول یک سال، قلم غالب هزینه اغلب نگهداری حالتی است که بهندرت خوانده میشود اما باید سازگار بماند.
بیدارشدنها و برنامهریزی مجدد
ایجنتی که هر ساعت بیدار میشود تا ببیند کاری برای انجام دادن نیست، همچنان هزینه مونتاژ کانتکست را میپردازد. مسیر ضربان قلب ممکن است بهازای هر فراخوانی ارزان باشد، اما رایگان نیست: حالت اخیر را بارگذاری میکند، شرایط را بررسی میکند، و تصمیم میگیرد که آیا تشدید کند. اگر مسیر بیدارشدن همان پنجره کانتکست مسیر تعمق را به اشتراک بگذارد، هر بیدارشدن بیاثر هزینه توکنهایی را میپردازد که هیچ تغییر حالتی تولید نمیکنند.
برنامهریزی مجدد هزینه مکرر دیگر است. اجراهای طولانی با محیطهای تغییریافته، اعتبارنامههای منقضی، و اهداف جابهجاشده مواجه میشوند. هر برنامهریزی مجدد نیازمند بازسازی یک مجموعه کاری از حافظه است، که یعنی بازیابی، رتبهبندی، و مونتاژ پرامپت. فراوانی برنامهریزی مجدد تابعی از میزان ناپایداری محیط است، نه میزان مشغولیت ایجنت.

تلاشهای مجدد ابزار و آشتیدهی
اجراهای طولانی شکستهای جزئی را انباشته میکنند. یک فراخوانی API که موفق شد اما پاسخش گم شد، یک نوشتن که دو بار انجام شد، یک سیستم پاییندستی که طرحوارهاش را در میانه اجرا تغییر داد. اینها در طول یک سال رویدادهای نادر نیستند؛ نرخ پسزمینه طبیعی سیستمهای توزیعشده هستند. هزینه، آشتیدهی است: تشخیص واگرایی، تصمیمگیری درباره اینکه کدام حالت معتبر است، و ترمیم آن.
کار آشتیدهی تمایل دارد با تعداد ابزارهای یکپارچهشده و طول اجرا بهصورت فوقخطی رشد کند، چون هر یکپارچهسازی جدید یک حالت شکست جدید و یک مسیر ترمیم جدید اضافه میکند. یک اجرای کوتاه میتواند بیشتر این را نادیده بگیرد. یک اجرای یکساله نمیتواند.
مسیر ضربان قلب ارزان را از مسیر تعمق گران جدا کنید
ضربان قلب باید یک بررسی کوچک و قطعی باشد که طبق زمانبندی اجرا میشود و تا وقتی شرطی برآورده نشود، مدل بزرگی را فراخوانی نمیکند. تعمق باید مسیری جداگانه با بودجه خودش باشد که با سیگنالهای صریح فعال میشود. این جداسازی مؤثرترین راه برای کنترل هزینه بیکاری است، چون مانع میشود بیدارشدنهای بیاثر کانتکست در سطح تعمق را مصرف کنند.
یک مکانیزم مشخص: ضربان قلب یک خلاصه حالت فشرده (چند کیلوبایت) را میخواند و مجموعهای از قواعد را ارزیابی میکند. اگر هیچ قاعدهای فعال نشود، یک برچسب زمانی مینویسد و خارج میشود. فقط وقتی قاعدهای فعال شود، ایجنت یک مجموعه کاری کامل مونتاژ میکند و مدلی را فراخوانی میکند. معاوضه، تأخیر است: ضربان قلب نمیتواند تصمیمهای ظریف بگیرد، پس برخی شرایط تا چرخه تعمق بعدی از دست میروند. این برای بیشتر اهداف افق بلند قابل قبول است، اما نه برای همه.
کانتکست هر بیدارشدن را محدود کنید و فقط دلتاها را به مجموعه کاری ارتقا دهید
اجراهای طولانی تیمها را وسوسه میکنند که کل تاریخچه را در هر فراخوانی بفرستند. این سریعترین راه برای وابسته کردن هزینه به طول اجرا بهجای فعالیت است. در عوض، مجموعه کاری را محدود کنید و فقط دلتاها را ارتقا دهید: مشاهدات جدید، خروجیهای ابزار تغییریافته، و تصمیمهای صریح از آخرین تعمق. بقیه در ذخیرهسازی سرد میماند و بر حسب تقاضا بازیابی میشود.
معاوضه، کیفیت بازیابی است. یک مجموعه کاری محدود میتواند کانتکست مرتبطی را از دست بدهد که یک پرامپت با تاریخچه کامل شاملش میشد. کاهشدهنده، یک مرحله بازیابی است که خودش بودجهبندی شده، ب
Server rack closeup
برای هر اجرا یک شرط پایانی تعریف کنید
ایجنتی بدون حالت پایانی یک اشتراک است. هر اجرای افق بلند باید یک شرط پایانی صریح داشته باشد: هدفی که میتوان آن را کامل علامت زد، یک مهلت، یا آستانه شکستی که اجرا را متوقف میکند. بدون آن، ایجنت بهطور نامحدود بیدار میشود، برنامهریزی مجدد میکند و حالت انباشته میکند، و منحنی هزینه این را بازتاب میدهد.
شرایط پایانی همچنین قیمتگذاری را خوانا میکنند. یک اجرا با پایان تعریفشده را میتوان در برابر یک هدف تکمیلشده قیمتگذاری کرد. یک اجرا بدون آن را فقط میتوان در برابر زمان قیمتگذاری کرد، که دقیقاً همان مدلی است که ایجنتهای افق بلند آن را گران میکنند.
چه چیزی را باید ابزارگذاری کرد
هزینه بهازای هر هدف تکمیلشده، نه هزینه بهازای هر توکن. هزینه توکن یک ورودی است؛ هدف خروجی است. ابزارگذاری هدف مقایسه اجراها و تشخیص زمانی که یک اجرا به نگهداری نامحدود میلغزد را ممکن میکند.
نسبت بیکاری به فعالیت و سهم بیدارشدنهایی که هیچ تغییر حالتی تولید نکردند. این دو متریک مسیر ضربان قلب را آشکار میکنند. نسبت بالای بیکاری به فعالیت لزوماً بد نیست، اما سهم بالای بیدارشدنهایی که هیچ تغییر حالتی تولید نمیکنند و همچنان کانتکست در سطح تعمق مصرف میکنند، سیگنالی روشن است که مسیرها جدا نشدهاند.
یک کار هرس ماهانه که ورودیهای حافظهای را که دیگر به هیچ تصمیمی ارجاع داده نمیشوند حذف میکند. حافظهای که هرگز خوانده نمیشود هزینه ذخیرهسازی بدون فایده است، و با افزودن نویز کیفیت بازیابی را تخریب میکند. کار هرس باید محافظهکارانه باشد: ورودیها را فقط وقتی حذف کنید که هیچ سابقه تصمیمی به آنها ارجاع نمیدهد، و یک سنگ قبر نگه دارید تا حذف قابل حسابرسی باشد.
معاوضه اینجا فراخوانی است. هرس میتواند کانتکستی را حذف کند که یک تصمیم آینده آن را مفید مییافت. کاهشدهنده این است که بر اساس ارجاع هرس کنید، نه بر اساس سن، و سنگ قبر را نگه دارید تا یک خطای بازیابی بتواند به یک حذف عمدی ردیابی شود نه یک از دست رفتن خاموش.
چه چیزی برای قیمتگذاری تغییر میکند
اگر هزینههای غالب حالت بیکار، ذخیرهسازی و برنامهریزی مجدد باشند، آنگاه قیمتگذاریای که فقط با فعالیت انعطاف مییابد برای اجراهای طولانی کمبهایش میکند و برای اجراهای کوتاه بیشبهایش. یک مدل صادقانهتر از چرخه عمر اجرا تبعیت میکند: هزینهای برای برقراری حالت، هزینهای مکرر برای نگهداری آن، و هزینهای برای پایان دادن و آشتیدهی. قیمتگذاری مبتنی بر فعالیت میتواند روی آن بنشیند، اما نمیتواند جایگزینش شود.
پیامد مهندسی این است که ایجنتهای افق بلند باید با همان نظم هر سرویس حالتمند طراحی شوند: چرخه عمر صریح، مجموعههای کاری محدود، مسیرهای گرم و سرد جدا، و ابزارگذاریای که هدف را اندازه میگیرد نه ورودی را. این چیزی است که یک اجرای یکساله را خوانا میکند، و این چیزی است که قیمتگذاری الاستیک را معنادار میکند نه تزئینی.
