Knaph

درست به کار بردنِ عامل‌ها33 از 37

هزینه‌ی یک جلسه

اختیاری، برای خواننده‌هایی که کمی پایتون بلدند.

در درس «پرداخت برای هر توکن» دیدید که هر نوبتِ گفت‌وگو کل تاریخچه را دوباره می‌فرستد، و در درس «هر بار همان شروع» دیدید که کش بخشِ تکراری را ارزان می‌کند. اینجا حساب می‌کنید این کار چقدر فرق ایجاد می‌کند.

تابع session_cost(price, new_tokens) را بنویسید. این دو را می‌گیرد:

  • price: قیمت به دلار برای هر یک میلیون توکن ورودی، مثل 4.0
  • new_tokens: فهرستی از اینکه هر نوبت چند توکن اضافه می‌کند، از قدیمی‌ترین، مثل [30000, 2000, 2000]

از این مدلِ ساده‌ی یک جلسه استفاده کنید:

  1. هر نوبت همه‌ی آنچه در نوبتِ قبل فرستاده شد را، به‌اضافه‌ی توکن‌های تازه‌ی خودش، می‌فرستد. با [30000, 2000, 2000]، نوبت‌ها به ترتیب ۳۰٬۰۰۰، بعد ۳۲٬۰۰۰ و بعد ۳۴٬۰۰۰ توکن می‌فرستند: روی هم ۹۶٬۰۰۰ توکن ورودی.
  2. بدون کش، هر توکن ورودی قیمت کامل دارد: ۹۶٬۰۰۰ توکن با ۴ دلار برای هر یک میلیون می‌شود ۰٫۳۸۴۰ دلار.
  3. با کش، همه‌ی آنچه در نوبتِ قبل فرستاده شد با یک‌دهمِ قیمت از کش خوانده می‌شود و فقط توکن‌های تازه‌ی همان نوبت قیمت کامل دارند. نوبتِ اول هنوز چیزی در کش ندارد، پس همه‌اش قیمت کامل است. در این مثال، نوبتِ ۲ برای ۳۰٬۰۰۰ توکن ۰٫۴ دلار برای هر یک میلیون و برای ۲٬۰۰۰ توکن ۴ دلار برای هر یک میلیون می‌پردازد.

تعداد کل توکن‌های ورودی، هزینه‌ی بدون کش و هزینه‌ی با کش را برگردانید. کدِ پایینِ برنامه آن‌ها را چاپ می‌کند.

نمونه‌ی ورودی (قیمت، بعد توکن‌های تازه‌ی هر نوبت):

4
30000 2000 2000

خروجی:

turns: 3
input tokens sent: 96000
without caching: 0.3840 dollars
with caching: 0.1608 dollars

این مدل سه چیز از کشِ واقعی را کنار می‌گذارد: نوشتن در کش کمی بیشتر از ورودیِ معمولی هزینه دارد، کش بعد از چند دقیقه بی‌استفاده ماندن از بین می‌رود، و هزینه‌ی توکن‌های خروجی جدا حساب می‌شود. هیچ‌کدام تصویرِ کلی را عوض نمی‌کند. وقتی تست‌ها را گذراندید، جلسه‌ی ۴۰ نوبتی را در تست‌ها پیدا کنید و دو هزینه را با هم مقایسه کنید.

ورود برای امتحان این تمرین.