Към съдържанието
21/30Глава 21 от 30

Мултимодално ценообразуване: какво наистина се таксува при изображения, аудио и видео

Три модела таксуват едни и същи 500 снимки с разлика 5,5× — а най-евтиният се сменя при преоразмеряване.

На тази страница

Ето една задача, оценена по три начина: описване на петстотин продуктови снимки, по един кратък надпис за всяка. Същите снимки, същата инструкция, същата дължина на отговора. Единственото, което се променя, е кой модел ги чете.

снимкаgpt-5.6-lunagemini-3.1-flash-liteclaude-haiku-4.5
800 × 600$0.0848$0.1638$0.4380
1024 × 768$0.1200$0.1638$0.6370
1280 × 960$0.1718$0.1638$0.9010
1600 × 1200$0.2558$0.1638$0.9010
4000 × 3000$0.3220$0.1638$0.9010

Три неща в тази таблица си струват паузата.

Най-евтиният модел се сменя между третия и четвъртия ред, при същата задача, защото някой е преоразмерил снимките. Поискайте абзац вместо надпис и точката на пресичане пак се мести: при 1280 × 960 победителят е Gemini за надпис от четиридесет token-а и OpenAI за абзац от четиристотин token-а.

Колоната на Gemini изобщо не помръдва, на нито един ред: снимка 4000 × 3000 му струва точно колкото снимка 640 × 480. Снимка 4000 × 3000 му струва точно колкото снимка 640 × 480. Това не е таван. Това е следствие от начина, по който брои, и означава, че най-честата оптимизация на разходите в този бизнес — намаляване на резолюцията преди качване — се отплаща така:

image tokens, 4000 × 3000 → 800 × 600цена на изпълнениетоспестено
gpt-5.6-luna2,942 → 570$0.3220 → $0.084873.7 %
claude-haiku-4.51,564 → 638$0.9010 → $0.438051.4 %
gemini-3.1-flash-lite1,032 → 1,032$0.1638 → $0.16380.0 %

Нито едно от тези числа не е цена, която доставчикът публикува. И трите трябваше да бъдат изчислени по три различни правила, защото снимката никъде не е таксуема единица: първо се преобразува в tokens чрез аритметика, записана на три несъвместими места.

Глава 16 изгради сметката за текст и спря там, където текстът спира. Тази глава е останалата част от фактурата: изображения, реч, транскрипция, видео и суров compute, които заедно се таксуват в осем различни единици, плюс методът за сравняване на неща, които не се продават с една и съща мярка.

Покажи подробности

Какво е нужно на тази глава от предишните.

  • Глава 7 изгради tokenizer и единицата. Всичко тук е опит нещо, което не е текст, да се превърне в тази единица.
  • Глава 8 установи какво консумира моделът: не символи, а вектори в embedding пространство. Затова изобщо е възможно изображение да се ценообразува в tokens.
  • Глава 16 изгради computeCost, неговите ценови нива и петте му token кошници. Тази глава разширява тази функция, вместо да я заменя.
  • Глава 11 въведе LoRA като fine-tuning техника, а Глава 20 я оцени като бюджетно решение. Тук тя се появява върху модел, който не е езиков модел.

Без tensors, според правилото от Глава 14: това са тарифи, преобразувания и счетоводство, така че е TypeScript.

Transformer приема последователност от вектори. Той няма мнение откъде са дошли. Глава 8 му подаде embeddings, извлечени от token id; нищо в архитектурата не изисква lookup.

Така че: нарежете картината на фиксирани квадрати, разгънете всеки квадрат в списък от числа и прекарайте всеки списък през един научен линеен слой, за да получите вектор с ширината на модела. Пач 32 × 32 от цветни пиксели е 32×32×3=307232 \times 32 \times 3 = 3072 числа; проекцията ERd×3072E \in \mathbb{R}^{d \times 3072} го превръща в един dd-мерен вектор — точно формата, в която пристига text token. Това е всичко, и е статията, чието заглавие го казва: едно изображение струва 16 × 16 думи.1 Добавете позиционно кодиране, за да знае моделът кой квадрат къде е бил, преплетете резултатите с text embeddings и последователността, която моделът чете, е отчасти картина и отчасти изречение.

Три статии го превърнаха в продукт. CLIP обучи image encoder и text encoder да се съгласяват върху четиристотин милиона scraped двойки — там идеята, че пиксели и думи могат да споделят пространство, спря да бъде хипотеза.2 Flamingo прикрепи замразен vision encoder към замразен езиков модел с няколко обучени свързващи слоя.3 LLaVA показа, че мостът може да бъде единична линейна проекция, а instruction-following може да се научи с генерирани данни — затова всеки отворен vision-language модел оттогава изглежда приблизително така.4

Последствието за фактурата ви е незабавно и съвсем непищно: пачовете са позиции в последователността, следователно са input tokens, следователно плащате за тях по input тарифата. Колко са е аритметика, и всеки доставчик я прави различно.

Три правила, всички публикувани, нито едно еднакво

Връзка към раздела: Три правила, всички публикувани, нито едно еднакво

Всяко правило по-долу е имплементирано от собствената документация на доставчика и проверено спрямо работните примери в същата документация.

OpenAI покрива изображението с пачове 32 × 32 и умножава броя по фактор за конкретния модел. Ако броят пачове надхвърли бюджета за този модел и ниво на детайлност, изображението се мащабира надолу, докато се побере:

patches=w32×h32,shrink=322budgetwh\text{patches} = \left\lceil \frac{w}{32} \right\rceil \times \left\lceil \frac{h}{32} \right\rceil, \qquad \text{shrink} = \sqrt{\frac{32^2 \cdot \text{budget}}{w \cdot h}}

Anthropic го покрива с пачове 28 × 28, по един visual token всеки, и поставя таван както на дългия ръб, така и на броя tokens — 1,568 пиксела и 1,568 tokens при моделите standard-tier, 2,576 и 4,784 при high-resolution ниво. Прекалено големите изображения се мащабират до най-големия размер, който се побира и в двете ограничения.5

Google изобщо не брои пиксели. Изображение, при което и двете страни са 384 пиксела или по-малко, струва фиксирани 258 tokens. Всичко по-голямо се нарязва на tiles от по 258 tokens, а tile решетката идва от crop единица min(w,h)/1.5\lfloor \min(w,h) / 1.5 \rfloor.6

imagetokens.tsTS
export function openaiImageTokens(
  w: number, h: number,
  { maxDim, patchBudget, multiplier }: { maxDim: number; patchBudget: number; multiplier: number },
) {
  const fit = Math.min(1, maxDim / Math.max(w, h));      // never enlarges
  w = Math.floor(w * fit); h = Math.floor(h * fit);
  let patches = Math.ceil(w / 32) * Math.ceil(h / 32);   
  if (patches > patchBudget) {
    const s = Math.sqrt((32 * 32 * patchBudget) / (w * h));
    const adj = s * Math.min(
      Math.floor((w * s) / 32) / ((w * s) / 32),
      Math.floor((h * s) / 32) / ((h * s) / 32));
    patches = Math.ceil(Math.floor(w * adj) / 32) * Math.ceil(Math.floor(h * adj) / 32);
  }
  return Math.ceil(patches * multiplier);                
}

export function anthropicVisualTokens(
  w: number, h: number,
  { maxLongEdge, maxTokens }: { maxLongEdge: number; maxTokens: number },
) {
  const tok = (a: number, b: number) => Math.ceil(a / 28) * Math.ceil(b / 28);
  const long = Math.max(w, h), short = Math.min(w, h);
  for (let L = Math.min(long, maxLongEdge); L >= 1; L--) {     
    const t = tok(L, Math.round((short * L) / long));
    if (t <= maxTokens) return t;                              
  }
  return 0;
}

export function geminiImageTokens(w: number, h: number) {
  if (w <= 384 && h <= 384) return 258;
  const crop = Math.floor(Math.min(w, h) / 1.5);               
  return Math.ceil(w / crop) * Math.ceil(h / crop) * 258;      
}

Пуснете всяко правило срещу числата, които самият му доставчик публикува:

three implementations against three documentationsTEXT
OpenAI, gpt-5.4 at detail:high (2048 px, 2,500 patches, 1.2x)
  1024x1024 -> 1024 patches -> 1229 tokens   doc says 1229   MATCH
  2048x2048 -> 2500 patches -> 3000 tokens   doc says 3000   MATCH

Anthropic, the published table (one tier per row shown)
  200x200    std   64 @ 200x200     doc   64, not resized    OK
  1000x1000  std 1296 @ 1000x1000   doc 1296, not resized    OK
  1092x1092  std 1521 @ 1092x1092   doc 1521, not resized    OK
  1920x1080  std 1560 @ 1456x819    doc 1560, 1456x819       OK
  2000x1500  std 1564 @ 1269x952    doc 1564, 1269x952       OK
  3840x2160  hi  4784 @ 2576x1449   doc 4784, 2576x1449      OK

Google, the worked example
  960x540 -> crop 360 -> 3 x 2 = 6 tiles     doc says 6      MATCH

Отпечатани са девет съвпадения; пълното изпълнение проверява петнадесет, тъй като таблицата на Anthropic дава и двете нива за всичките шест размера. Правилата вече са ваши и можете да ги пуснете върху всяка снимка, която имате — точно това е смисълът: това са единствените три функции в тази глава, които не можете да получите от ценова страница.

Пуснете една и съща 4:3 снимка през трите правила в шест размера:

размерOpenAI, highAnthropic, standardAnthropic, high-resGemini
384 × 288130154154258
640 × 4803604144141,032
800 × 6005706386381,032
1600 × 12002,2801,5642,4941,032
3200 × 24002,9421,5644,7401,032
4000 × 30002,9421,5644,7401,032

Прочетете последната колона надолу. След като картината мине 384 пиксела, числото никога повече не се променя, и това не е случайност или таван. Заместете crop единицата обратно във формулата за tiles, за изображение поне толкова широко, колкото е високо:

tiles=wh/1.5×hh/1.51.5wh×2\text{tiles} = \left\lceil \frac{w}{\lfloor h/1.5 \rfloor} \right\rceil \times \left\lceil \frac{h}{\lfloor h/1.5 \rfloor} \right\rceil \approx \left\lceil \frac{1.5\,w}{h} \right\rceil \times 2

Размерът се съкращава. Image tokens на Google зависят от aspect ratio и от нищо друго. Снимка 4:3 е четири tiles, независимо дали е миниатюра или плакат. Този единствен алгебричен факт е цялото обяснение на нулата в таблицата със спестявания по-горе, и никоя ценова страница никъде не го казва.

Другите две колони вместо това достигат таван, на различни височини и по различни причини — Anthropic при обявен token таван, OpenAI при patch бюджет след pixel ограничение — затова трите криви се пресичат при различни размери.

Сега го счупете. Очевидният начин да харчите по-малко за vision модел е да поискате по-малко детайл, така че изпратете detail: "low":

gpt-5.4, the same photograph, two detail levelsTEXT
1600x1200   low = 2280   high = 2280   ratio 1.00
3200x2400   low = 3687   high = 2942   ratio 1.25

Искането за по-малко детайл струва 25 % повече. Това не е bug и OpenAI го казва в един ред от sizing таблицата: при това семейство модели low използва лимит 2048 пиксела с budget от 6,144 пача, докато high използва същия pixel limit с budget от 2,500 пача, „така че може да използва повече tokens от high“.7 Думата low назовава настройка за fidelity, не цена: при две от петте документирани семейства модели тя не носи никакво спестяване, а при едно от тези две струва повече.

Генерирането на изображение е различна машина

Връзка към раздела: Генерирането на изображение е различна машина

Всичко досега беше модел, който чете изображение. Създаването на такова работи по механизъм, в който изобщо няма tokens, и точно затова се продава на картина, а не на дума.

Създаване на изображение: цена на картина е цена на token

Връзка към раздела: Създаване на изображение: цена на картина е цена на token

Доставчиците публикуват image generation като цена на картина. Не е така. GPT Image моделите излъчват специализирани image tokens, чийто брой зависи от поискания размер и качество; умножете публикуваните бройки по публикуваната image output тарифа на GPT Image 1 от $40 на милион и сравнете с цените на изображение на същата страница:

качество1024 × 10241024 × 15361536 × 1024
low272 tok → $0.0109 ($0.011)408 tok → $0.0163 ($0.016)400 tok → $0.0160 ($0.016)
medium1,056 tok → $0.0422 ($0.042)1,584 tok → $0.0634 ($0.063)1,568 tok → $0.0627 ($0.063)
high4,160 tok → $0.1664 ($0.167)6,240 tok → $0.2496 ($0.25)6,208 tok → $0.2483 ($0.25)

Девет изведени стойности срещу девет публикувани, като всяка двойка съвпада в рамките на $0.002.11 Google е още по-ясен и прави преобразуването вместо вас направо на ценовата страница: image output при $60 на милион tokens, „output images at 1K (1024x1024px) consume 1120 tokens and are equivalent to $0.067 per image“.12

Значи цена на изображение е цена на token с вграден брой. Това е приемливо, но скрива нещо. Вземете таблицата на текущото поколение и разделете наобратно:

gpt-image-2, published price -> implied output tokens at $30/MTEXT
quality   1024x1024            1024x1536
low       $0.006 -> 200 tok    $0.005 -> 167 tok
medium    $0.053 -> 1767 tok   $0.041 -> 1367 tok
high      $0.211 -> 7033 tok   $0.165 -> 5500 tok

По-голямото изображение е по-евтиното при всяко качество. Canvas 1024 × 1536 има 50 % повече пиксели от 1024 × 1024 и струва 23 % по-малко tokens при medium. OpenAI го отбелязва в изречение, което бихте пропуснали — „по-голяма неквадратна резолюция понякога може да произведе по-малко output tokens от по-малка или квадратна резолюция при същата настройка за качество“ — а при предишното поколение модели беше обратно: portrait струваше 50 % повече от square.11 Всеки default на 1024x1024, написан преди тази промяна, сега е скъпият вариант.

Помолете три продукта да изговорят същите 519 символа — около 38 секунди аудио — и получавате три системи от единици от двама доставчици:

моделединицацена
tts-1на символ$15.00 на милион символа → $0.007785
tts-1-hdна символ$30.00 на милион символа → $0.015570
gemini-3.1-flash-ttsна audio token, 25 в секунда$20.00 на милион → $0.019319

Един и същ доставчик продава и двете единици: tts-1 на OpenAI се ценообразува на милион символа, докато gpt-4o-mini-tts се ценообразува на милион tokens, $0.60 in и $12.00 out.13 Така че „най-евтиният text-to-speech“ не е въпрос с отговор, докато не кажете какво ще се говори.

А двете единици са слепи за противоположни неща. Цена на символ не вижда продължителност: изберете бавен, премерен глас или добавете паузи, и сметката не се движи, докато аудиото става по-дълго. Цена на секунда не вижда съдържание: тридесет секунди струват еднакво, независимо дали са плътен технически абзац или някой брои до десет. Сменете гласа и точно един от двамата ви доставчици преоценява.

Транскрипцията върви в обратната посока и е най-простият ред в цялата фактура — на минута аудио, фиксирано:

transcribing 59.6 secondsTEXT
whisper                  $0.005960     ($0.006 / min)
gpt-transcribe           $0.004470     ($0.0045 / min)
gpt-4o-mini-transcribe   $0.002980     ($0.003 / min)
gpt-live-transcribe      $0.016887     ($0.017 / min)

Обърнете внимание на последния ред спрямо третия: да го правите на живо, докато думите пристигат, струва 5,7 пъти повече от това да го правите върху завършен файл. Тази разлика е цената на невъзможността за batch, и именно тя прави следващия раздел скъп.

Сега числото, което решава дали voice е функция или продукт.

Разговорът: support разговор от десет turn-а, 149 думи, което при обявени 150 думи в минута е 59,6 секунди реч — 21,2 изговорени от обаждащия се, 38,4 изговорени обратно. Token преобразуванията са на самите доставчици. OpenAI: „audio tokens in user messages are 1 token per 100 ms of audio, while audio tokens in assistant messages are 1 token per 50 ms“.14 Google: 25 tokens в секунда, и в двете посоки, което ценовата му страница потвърждава, като публикува $12.00 на милион и $0.018 на минута на същия ред.12

Разговорът се натрупва точно както каза Глава 16, защото механизмът е същият: „the entire conversation is sent to the model for each Response... thus turns later in the session will be more expensive“.14 Само че сега историята се измерва в audio tokens.

turnuserassistantfresh audio incached audio inaudio outcost
14.4 s9.2 s440184$0.013224
25.6 s9.6 s56228192$0.014211
35.2 s9.2 s52476184$0.013670
44.0 s4.8 s4071296$0.007749
52.0 s5.6 s20848112$0.008187

Сега сравнението, което решава продукта, и четирите нормализирани към минута:

на минутаспрямо текст
gpt-realtime-2.1, без caching$0.13125937.9×
gpt-realtime-2.1, историята cached$0.05742516.6×
gemini-3.1-flash-live, без caching$0.0239656.9×
същите думи, написани, gpt-5.6-terra$0.003461

Тридесет и осем пъти. Не тридесет и осем процента. Идентичният обмен, проведен със звук вместо текст, е почти два порядъка по-скъп, и никоя част от тази разлика не е марж, който някой е решил да начисли — тя е обменният курс. Една секунда assistant audio е двадесет tokens. Същата секунда носи 2,5 думи при обявения темп, а измереният transcript върви с 1,26 tokens на дума, така че като текст това са 3,15 tokens. Звукът е 6,3 пъти по-обемна опаковка за същото значение, а всеки от неговите tokens се таксува по 5,3 пъти text output тарифата и 16 пъти text input тарифата. Умножете bulk ratio по price ratio и порядъкът вече е там, преди да започне каквото и да е счетоводство.

Две оперативни последствия излизат директно от таблицата.

Audio caching не е оптимизация, той е бизнес моделът. Cached audio input е $0.40 на милион срещу $32.00 fresh — 98,75 % отстъпка, която разполовява разговора. Правилото е от Глава 16, непроменено: cache съвпада по prefix, така че всичко, вмъкнато в началото на разговора по средата на обаждането, го унищожава, а естественото място да поставите „обаждащият се вече е verified“ е точно там.

И нищо, което правите в клиента, не отменя таксуването на звук. Потребителят говори върху assistant, кодът ви спира playback, говорителят млъква. Каквото вече е било генерирано, вече е било таксувано, защото billing се натрупва при създаването на response; и според правилото от Глава 16 всичко, което остане в разговора, се изпраща отново като input audio на всеки следващ turn. Глава 14 каза това за прекъсване на text stream. При voice струва тридесет пъти повече.

Видео се продава на секунда от някои доставчици и на clip от други, с нива за резолюция и понякога за продължителност. Тези две форми не се различават само по удобство; те се пресичат.

модел1 s2 s5 s10 s20 s
veo-3.1, на секунда, 1080p$0.400$0.800$2.000$4.000$8.000
veo-3.1-fast, на секунда, 1080p$0.120$0.240$0.600$1.200$2.400
sora-2, на секунда, 720p$0.100$0.200$0.500$1.000$2.000
hailuo-02, на clip, 1080p$0.480$0.480$0.480$0.480$0.480
mochi, на GPU-second$0.018$0.037$0.092$0.183$0.366

Доставчикът на clip е по-скъп от този на секунда под 1,2 секунди и 16,7 пъти по-евтин при двадесет. Никакво подреждане на тези два модела не оцелява при промяна на дължината на clip, така че „кой video модел е най-евтин“ не е въпрос за модели.

Последният ред е по-лош, и е честното сърце на главата. mochi се таксува спрямо реални GPU seconds — измереното prediction време на задачата — по $0.001400 на секунда на A100 и $0.001525 на H100, които са тарифите на наетата машина и нищо друго.15 Това е напълно точна тарифа и не е цена, защото количеството, което умножава, е неизвестно, докато вече не сте се ангажирали да го платите. Редът по-горе приема дванадесет GPU-seconds на секунда output; учетворете това допускане и той излиза от най-евтината група, а едва при шест пъти попада в средата на таблицата. Това е единствената тарифа на тази страница, която не можете да сложите в оферта.

И така: tokens, image tokens, символи, минути, video seconds, цели clips, GPU seconds, flat units. Осем количества, и единственият начин да ги сложите на една ос е да обявите workload и да го оцените.

Това е разширението към computeCost от Глава 16 — същата tier механика, сега с критерии, които не са prompt length:

normalise.tsTS
export interface MediaCriteria {
  resolution?: string[]; quality?: string[];
  hasAudio?: boolean; maxDurationSeconds?: number;
}
export interface MediaTier { when?: MediaCriteria; price: number }
export type MediaRate = number | MediaTier[];

const matches = (when: MediaCriteria, u: Usage) => {
  const inList = (l?: string[], v?: string) => !l || (v !== undefined && l.includes(v));
  if (!inList(when.resolution, u.resolution)) return false;
  if (!inList(when.quality, u.quality)) return false;
  if (when.hasAudio !== undefined && when.hasAudio !== (u.hasAudio ?? false)) return false;
  if (when.maxDurationSeconds !== undefined
      && (u.videoSeconds ?? 0) > when.maxDurationSeconds) return false;   
  return true;
};

const mediaPrice = (rate: MediaRate | undefined, u: Usage): number => {
  if (rate === undefined) return 0;
  if (typeof rate === "number") return rate;
  for (const t of rate.filter((t) => t.when)) if (matches(t.when!, u)) return t.price;
  return rate.find((t) => !t.when)?.price ?? 0;      // the tier with no criteria is the default
};

export function computeCost(p: Pricing, u: Usage): number {
  let c = textCost(p, u);                             // Chapter 16, unchanged
  if (p.imageInputToken || p.imageOutputToken) {
    c += (u.imageInputTokens ?? 0) * (p.imageInputToken ?? 0)
       + (u.imageOutputTokens ?? 0) * (p.imageOutputToken ?? 0);
  } else if (p.imageUnit !== undefined) c += (u.images ?? 1) * mediaPrice(p.imageUnit, u);  
  if (p.videoSecond !== undefined) c += (u.videoSeconds ?? 0) * mediaPrice(p.videoSecond, u);
  if (p.videoUnit   !== undefined) c += (u.videoCount ?? 1)   * mediaPrice(p.videoUnit, u);
  c += (u.audioInputTokens ?? 0)       * (p.audioInputToken ?? 0)
     + (u.cachedAudioInputTokens ?? 0) * (p.cachedAudioInputToken ?? p.audioInputToken ?? 0)
     + (u.audioOutputTokens ?? 0)      * (p.audioOutputToken ?? 0)
     + (u.computeSeconds ?? 0)         * (p.computeSecond ?? 0)
     + (u.chars ?? 0)                  * (p.perChar ?? 0)
     + (u.minutes ?? 0)                * (p.perMinute ?? 0);
  return c;
}

Двата маркирани реда са местата, където се чупи. Тарифа, quoted per unit, умножава u.images ?? 1; тарифа, quoted per token, умножава нещо, което по подразбиране е нула. Подайте и на двете празна usage — формата, която получавате, когато измерването е failed — и гледайте:

the same missing measurement, priced by unitTEXT
per image (nano-banana-pro)     empty usage => $0.1500
per clip  (hailuo-02)           empty usage => $0.1500
per unit  (a cloned voice)      empty usage => $3.0000
per token (gpt-image-2)         empty usage => $0.0000
per second (veo-3.1)            empty usage => $0.0000
per GPU-second (mochi)          empty usage => $0.0000

Нищо не се случи шест пъти, и струваше три долара веднъж и нищо пет пъти. Това не е разлика от закръгляне; това е решение какво означава липсващо число, взето поотделно за всяка единица и никога записано. Разумното правило е, че поле, което никой не е измерил, остава absent, защото „не е измерено“ и „измерено е и е излязло нула“ са различни неща. Тази функция тихо не е съгласна.

Вторият провал е duration. Clip-priced тарифата избира tier с maxDurationSeconds срещу u.videoSeconds ?? 0, така че usage, който никога не е записал duration, съвпада с най-краткия tier:

hailuo-02, 768pTEXT
duration recorded    ->  $0.45
duration missing     ->  $0.27

Четиридесет процента отстъпка за това, че не знаете колко дълго е било видеото. И двата bug-а имат един корен: default, избран за удобство вътре във функция, чиято цяла работа е да бъде точна.

След като costs са изчислими, сравнението се нуждае от другата половина — обявен представителен workload, по един за engine, заявен публично, така че читателят да може да не се съгласи с него:

workloads.tsTS
export const representative = {
  text:   { blend: [[{ promptTokens: 1e6 }, 0.25], [{ completionTokens: 1e6 }, 0.75]] },
  image:  { images: 1, imageInputTokens: 50, imageOutputTokens: 1500 },
  video:  { videoSeconds: 5, videoCount: 1, resolution: "1080p", hasAudio: true, computeSeconds: 60 },
  voice:  { chars: 1000, computeSeconds: 10 },
  stt:    { minutes: 1 },
};

Всеки от тези редове е аргумент. Text смесва една четвърт input и три четвърти output, защото реалната usage клони към output; fifty-fifty blend класира моделите различно. Image workload приема 1,500 output tokens — между 1,056 на OpenAI за medium square и 1,584 за medium portrait. Video приема пет секунди при 1080p, а току-що видяхме двама доставчици да си разменят местата при 1,2 секунди. Compute entry приема шестдесет GPU-seconds, защото няма какво друго да се приеме.

Това е методът, и е единственият честен наличен: не можете да сравнявате цени в различни единици; можете само да сравнявате цената на workload, който сте записали. Всяка таблица, която класира multimodal модели, без да отпечата workload, класира собствените си допускания.

Вече можете да оцените всичко, което модел може да произведе, в каквато и единица да се продава, и да кажете на глас кой workload е приело сравнението ви. Това затваря фактурата, която Глава 16 отвори, и затваря Част III: всичко от Глава 14 до тук беше за един call — как да го направите, какво да сложите в него, как да го sample-нете, какво връща, колко струва.

Глава 22 сменя единицата на анализ, и промяната е скъпа. Agent не е един call; той е loop, който сам решава колко calls да направи, а аритметиката от последните две глави е това, което превръща това от архитектурна диаграма в бюджет. Тя започва, като задава същия въпрос на същия модел два пъти, с един tool, добавен към каталога втория път, и измерва какво е направил този един tool: един call стана два, тридесет и девет input tokens станаха 420.

Дали това го прави agent зависи от това коя от две публикувани дефиниции отворите, а те не са съгласни. Една от тях не е съгласна със себе си.


Всяка цена, формула и conversion rate в тази глава беше прочетена от собствената страница на доставчика на 7 септември 2026 г. и е цитирана с тази дата, защото всички ще се променят. Token броевете, costs и сравненията бяха изчислени върху тези данни от кода, отпечатан по-горе, на една машина, без платено API повикване — което е и честната причина в тази глава да няма нито едно latency твърдение.

Image-token функциите, cost таблиците, voice-call breakdown и empty-usage резултатите бяха произведени от TypeScript, отпечатан в тази глава, пуснат на Node 22. Диалогът, използван за voice сравнението, е 149 думи и беше tokenized с tiktoken под o200k_base encoding при 188 tokens; продължителността му следва от обявен темп 150 думи в минута, който е параметър на сравнението, а не измерване. Всяка стойност от доставчик носи бележката под линия, която назовава страницата, от която идва.

  1. Dosovitskiy, A. et al. An Image Is Worth 16x16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929 (2020). Patches, линейната проекция към embedding dimension и position embeddings, които правят решетката четима за sequence model.

  2. Radford, A. et al. Learning Transferable Visual Models From Natural Language Supervision. arXiv:2103.00020 (2021). Contrastive training на image encoder и text encoder върху 400 милиона двойки и споделеното пространство, което всичко надолу по веригата приема.

  3. Alayrac, J.-B. et al. Flamingo: a Visual Language Model for Few-Shot Learning. arXiv:2204.14198 (2022). Frozen vision encoder, frozen language model, обучени bridging layers — архитектурата, която превърна image understanding в chat capability.

  4. Liu, H., Li, C., Wu, Q. and Lee, Y. J. Visual Instruction Tuning. arXiv:2304.08485 (2023). Единична линейна проекция като bridge и generated instruction data като training set; причината отворените vision-language модели да се сближат към една форма.

  5. Anthropic, Vision, platform.claude.com/docs/en/build-with-claude/vision, достъпено 2026-09-07. „Claude views images in patches instead of pixels. Each patch is a 28×28-pixel block of the image, referred to as a visual token. An image, therefore, costs ⌈width / 28⌉ × ⌈height / 28⌉ visual tokens.“ Също двете resolution нива (standard: 1568-pixel long edge, 1568 visual tokens; high-resolution, on Claude 4.7 and later: 2576 pixels and 4784 tokens), downsizing правилото и таблицата от шест реда с размери и token counts, възпроизведена по-горе. Model rates от Anthropic, Pricing, platform.claude.com/docs/en/about-claude/pricing, същата дата: Claude Haiku 4.5 при $1 и $5 на милион input и output tokens.

  6. Google, Image understanding, ai.google.dev/gemini-api/docs/image-understanding, достъпено 2026-09-07. „258 tokens if both dimensions <= 384 pixels. Larger images are tiled into 768x768 pixel tiles, each costing 258 tokens“, с crop-unit формулата — floor(min(width, height) / 1.5), dimensions divided by it and multiplied together — и worked example за 960 × 540, даващ 3 × 2 = 6 tiles. Google го нарича „a rough formula“; scale-invariance, изведена по-горе, е свойство на формулата така, както е публикувана. Audio input при същото семейство е 32 tokens в секунда audio (ai.google.dev/gemini-api/docs/audio, същата дата).

  7. OpenAI, Images and vision, developers.openai.com/api/docs/guides/images-vision, достъпено 2026-09-07. Източник на patch-based правилото (32 × 32 patches, patch_count = ceil(width/32)×ceil(height/32), формулата shrink_factor и нейната integer adjustment, лимитът за отхвърляне от 30,000 patches); model sizing таблицата, включително че low на gpt-5.4 използва 2048-pixel limit и 6,144-patch budget „so it can use more tokens than high“, срещу 2,500-patch budget на high; multiplier таблицата (1.2 за GPT-5.x семействата, 1.62 за gpt-4.1-mini, 2.46 за gpt-4.1-nano); двата worked examples, възпроизведени по-горе (1024 × 1024 → 1229 tokens, 2048 × 2048 → 3000 tokens); tile-based правилата за по-стари модели (base плюс 512-pixel tiles, 85 + 170 на gpt-4o); и списъкът с ограничения, цитиран във vision карето. 2

  8. Ho, J., Jain, A. and Abbeel, P. Denoising Diffusion Probabilistic Models. arXiv:2006.11239 (2020). Forward noising schedule, reparameterisation, който превръща objective в predicting the added noise, и sampling loop.

  9. Rombach, R., Blattmann, A., Lorenz, D., Esser, P. and Ommer, B. High-Resolution Image Synthesis with Latent Diffusion Models. arXiv:2112.10752 (2022). Изпълнение на diffusion процеса в compressed latent space, което направи фиксирания step count достатъчно достъпен, за да се продава на изображение.

  10. Prince, S. J. D. Understanding Deep Learning (MIT Press, 2023), глава 18. Обявеното делегиране за всичко, което тази глава пропусна за diffusion — variational bound, noise schedules, classifier-free guidance и sampler families. Hu, E. et al., LoRA: Low-Rank Adaptation of Large Language Models, arXiv:2106.09685 (2021), е самият adapter, въведен в Глава 11 върху езиков модел и използван тук върху image модел без промяна на математиката. Radford, A. et al., Robust Speech Recognition via Large-Scale Weak Supervision (Whisper), arXiv:2212.04356 (2022), е transcription моделът, чиято per-minute цена се появява по-горе.

  11. OpenAI, Image generation, developers.openai.com/api/docs/guides/image-generation, Pricing, developers.openai.com/api/docs/pricing, и страницата на модела за gpt-image-1, всички достъпени 2026-09-07. Страницата на модела за gpt-image-2 няма pricing section; тарифите му идват от ценовата страница по-горе. Страницата на GPT Image 1 публикува text input при $5.00, image input при $10.00 и image output при $40.00 на милион tokens до per-image таблицата, използвана в извеждането по-горе. Също: output-token таблицата за модели преди gpt-image-2 (272 / 408 / 400 low, 1056 / 1584 / 1568 medium, 4160 / 6240 / 6208 high, за square, portrait и landscape); per-image price таблиците за GPT Image 2, 1.5, 1 и 1 Mini, използвани в извежданията по-горе; изречението „a larger non-square resolution can sometimes produce fewer output tokens than a smaller or square resolution at the same quality setting“; бележката, че всяко streamed partial image струва допълнителни 100 image output tokens; и тарифите на gpt-image-2 от $8.00 image input, $2.00 cached image input, $30.00 image output и $5.00 text input на милион tokens. Text model rates, използвани за сравненията: gpt-5.6-terra при $2.00 input, $0.20 cached input и $12.00 output, gpt-5.6-luna при $0.20 и $1.20, standard tier, short context. Video: sora-2 при $0.10 на секунда при 720p и sora-2-pro при $0.30, $0.50 и $0.70 при 720p, 1024p и 1080p. Transcription: $0.006, $0.0045, $0.003 и $0.017 на минута за gpt-4o-transcribe, gpt-transcribe, gpt-4o-mini-transcribe и gpt-live-transcribe. 2

  12. Google, Gemini Developer API pricing, ai.google.dev/gemini-api/docs/pricing, достъпено 2026-09-07. Gemini 3.1 Flash-Lite при $0.25 на милион input tokens (text, image и video) и $1.50 output. Gemini 3.1 Flash Image: image output при $60 на милион tokens, с публикуваните equivalences от 747, 1120, 1680 и 2520 tokens за 0.5K, 1K, 2K и 4K images и техните per-image цени $0.045, $0.067, $0.101 и $0.151. Gemini 3.1 Flash TTS: $1.00 text input, $20.00 audio output, „audio tokens correspond to 25 tokens per second of audio“. Gemini 3.1 Flash Live Preview: $0.75 text и „$3.00 or $0.005/min“ audio input, „$4.50 (text) $12.00 or $0.018/min (audio)“ output. Veo 3.1 per second with audio: $0.40 при 720p и 1080p и $0.60 при 4K standard; $0.10, $0.12 и $0.30 fast. Gemini Omni Flash таксува video output „at a rate of 5,792 tokens per second of 720p video“, което същата бележка под линия преобразува до около $0.10 на секунда — най-ясното публикувано твърдение някъде, че per-second media price е token цена. 2

  13. OpenAI model pages за tts-1, tts-1-hd и gpt-4o-mini-tts, developers.openai.com/api/docs/models, достъпено 2026-09-07. tts-1 при $15.00 и tts-1-hd при $30.00 на милион символа; gpt-4o-mini-tts при $0.60 на милион text input tokens и $12.00 на милион audio output tokens — същият доставчик, същата операция, две единици.

  14. OpenAI, Managing costs (Realtime API), developers.openai.com/api/docs/guides/realtime-costs, достъпено 2026-09-07. „Audio tokens in user messages are 1 token per 100 ms of audio, while audio tokens in assistant messages are 1 token per 50ms of audio.“ Също: „The entire conversation is sent to the model for each Response... thus turns later in the session will be more expensive“; costs се натрупват, когато Response се създаде; worked two-turn example, чието натрупване таблицата по-горе възпроизвежда; и response.done usage payload с неговите input_token_details и output_token_details splits. Rates от ценовата страница, същата дата: gpt-realtime-2.1 audio при $32.00 input, $0.40 cached input и $64.00 output на милион tokens, text при $4.00, $0.40 и $24.00, image input при $5.00. 2

  15. Replicate, Pricing, replicate.com/pricing, достъпено 2026-09-07. Nvidia A100 (80GB) при $0.001400 на секунда и $5.04 на час; Nvidia H100 при $0.001525 на секунда и $5.49 на час.


Създадено от

David Vicente Campos

Основател на NeuraLIA Labs и съосновател на MyRealFood

Компютърен инженер съм, завършил Университета в Леон. Съосновах MyRealFood, където като CTO създадох приложението, което милиони хора са използвали, за да се хранят по-здравословно, и основах NeuraLIA Labs, където изграждам AI продукти. Тук пиша за това, което трябваше да разбера по пътя, така, както ми се иска някой да ми го беше обяснил.

Още за автора

Публикувано от NeuraLIA Labs.

Получавайте нови публикации във входящата си поща

Новини за AI, ръководства и продуктови обновления — кратък имейл, когато публикуваме нещо, което си заслужава.

Индекс на курса

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev12 мин четене

AI моделът Jev е създаден за решения, не за проза

Jev на TypeSafe AI привлича внимание, защото разглежда софтуерната интелигентност като проблем на вероятностите: изберете правилния клон, добавете увереност и не плащайте на LLM да пише текст, когато кодът има нужда от решение.

Abstract legal research workspace with documents, search nodes and governance controls.
openai11 мин четене

Astra for Law на OpenAI е правна AI система, не нов модел

Правният старт на OpenAI е не толкова за нов базов модел, колкото за системата около него: домейн извличане, надеждни инструменти, права, бенчмаркове и пътища за преглед.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering12 мин четене

Инженеринг на контекста за AI агенти с дълъг хоризонт

Дълго работещите агенти не се провалят само защото прозорецът е малък. Те се провалят, когато файлове, изходи от инструменти и остаряла история изтласкат задачата, която агентът е трябвало да завърши.

Готови ли сте LIA да избира вместо вас?

Създавайте с всички AI модели на едно място — започнете безплатно още днес.