Μετάβαση στο περιεχόμενο
21/30Κεφάλαιο 21 από 30

Multimodal pricing: τι χρεώνουν πραγματικά εικόνες, ήχος και βίντεο

Τρία μοντέλα με τις ίδιες 500 φωτογραφίες διαφωνούν κατά 5,5× — και το φθηνότερο αλλάζει μόλις γίνει resize.

Σε αυτή τη σελίδα

Να μία εργασία, τιμολογημένη με τρεις τρόπους: περιγράψτε πεντακόσιες φωτογραφίες προϊόντων, μία σύντομη λεζάντα για καθεμία. Ίδιες φωτογραφίες, ίδια οδηγία, ίδια διάρκεια απάντησης. Το μόνο που αλλάζει είναι ποιο μοντέλο τις διαβάζει.

φωτογραφία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

Τρία πράγματα σε αυτόν τον πίνακα αξίζουν στάση.

Το φθηνότερο μοντέλο αλλάζει ανάμεσα στην τρίτη και την τέταρτη γραμμή, στην ίδια εργασία, επειδή κάποιος έκανε resize στις φωτογραφίες. Ζητήστε μια παράγραφο αντί για λεζάντα και το σημείο διασταύρωσης μετακινείται ξανά: στα 1280 × 960 ο νικητής είναι το Gemini για λεζάντα σαράντα token και το OpenAI για παράγραφο τετρακοσίων token.

Η στήλη του Gemini δεν μετακινείται καθόλου, σε καμία γραμμή: μια φωτογραφία 4000 × 3000 του κοστίζει ακριβώς όσο μια 640 × 480. Μια φωτογραφία 4000 × 3000 του κοστίζει ακριβώς όσο μια φωτογραφία 640 × 480. Αυτό δεν είναι cap. Είναι συνέπεια του τρόπου που μετρά, και σημαίνει ότι η πιο συνηθισμένη βελτιστοποίηση κόστους σε αυτήν τη δουλειά — downsample πριν το upload — αποδίδει έτσι:

image tokens, 4000 × 3000 → 800 × 600κόστος του runεξοικονόμηση
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 έστησε τον λογαριασμό για το κείμενο και σταμάτησε εκεί όπου σταματά το κείμενο. Αυτό το κεφάλαιο είναι το υπόλοιπο τιμολόγιο: εικόνες, ομιλία, transcription, βίντεο και raw compute, που συνολικά χρεώνονται σε οκτώ διαφορετικές μονάδες, και η μέθοδος για να συγκρίνετε πράγματα που δεν πωλούνται με το ίδιο μέτρο.

Εμφάνιση λεπτομερειών

Τι χρειάζεται αυτό το κεφάλαιο από τα προηγούμενα.

  • Το Κεφάλαιο 7 έστησε τον tokenizer και τη μονάδα. Όλα εδώ είναι μια προσπάθεια να μετατραπεί κάτι που δεν είναι κείμενο σε εκείνη τη μονάδα.
  • Το Κεφάλαιο 8 καθόρισε τι καταναλώνει ένα μοντέλο: όχι σύμβολα, αλλά διανύσματα σε έναν embedding χώρο. Γι’ αυτό μια εικόνα μπορεί να τιμολογηθεί σε tokens εξαρχής.
  • Το Κεφάλαιο 16 έστησε το computeCost, τα επίπεδα τιμής του και τους πέντε κουβάδες token. Αυτό το κεφάλαιο επεκτείνει εκείνη τη συνάρτηση αντί να την αντικαθιστά.
  • Το Κεφάλαιο 11 εισήγαγε το LoRA ως τεχνική fine-tuning και το Κεφάλαιο 20 το τιμολόγησε ως απόφαση budget. Εδώ εμφανίζεται σε ένα μοντέλο που δεν είναι γλωσσικό μοντέλο.

Χωρίς tensors, σύμφωνα με τον κανόνα από το Κεφάλαιο 14: εδώ έχουμε τιμολόγια, μετατροπές και λογιστική, άρα είναι TypeScript.

Ένας transformer παίρνει μια ακολουθία διανυσμάτων. Δεν έχει άποψη για το από πού προήλθαν. Το Κεφάλαιο 8 τον τροφοδότησε με embeddings που ανακτήθηκαν από ένα token id· τίποτα στην αρχιτεκτονική δεν απαιτεί το lookup.

Άρα: κόψτε την εικόνα σε σταθερά τετράγωνα, ισιώστε κάθε τετράγωνο σε μια λίστα αριθμών και περάστε κάθε λίστα από ένα learned linear layer για να πάρετε ένα διάνυσμα με το πλάτος του μοντέλου. Ένα patch 32 × 32 έγχρωμων pixels είναι 32×32×3=307232 \times 32 \times 3 = 3072 αριθμοί· η προβολή ERd×3072E \in \mathbb{R}^{d \times 3072} το μετατρέπει σε ένα διάνυσμα dd διαστάσεων, ακριβώς το σχήμα με το οποίο φτάνει ένα text token. Αυτό είναι όλο, και είναι το paper που το λέει στον τίτλο του: μια εικόνα αξίζει 16 × 16 λέξεις.1 Προσθέστε positional encoding ώστε το μοντέλο να ξέρει ποιο τετράγωνο ήταν πού, διαπλέξτε τα αποτελέσματα με τα text embeddings, και η ακολουθία που διαβάζει το μοντέλο είναι εν μέρει εικόνα και εν μέρει πρόταση.

Τρία papers το μετέτρεψαν σε προϊόν. Το CLIP εκπαίδευσε έναν image encoder και έναν text encoder να συμφωνούν, πάνω σε τετρακόσια εκατομμύρια scraped ζεύγη, και εκεί η ιδέα ότι pixels και λέξεις μπορούν να μοιράζονται έναν χώρο έπαψε να είναι υπόθεση.2 Το Flamingo έδεσε έναν frozen vision encoder πάνω σε ένα frozen γλωσσικό μοντέλο με λίγα εκπαιδευμένα bridging layers.3 Το LLaVA έδειξε ότι η γέφυρα μπορούσε να είναι μία μόνο linear projection και ότι το instruction-following μπορούσε να διδαχθεί με generated data, γι’ αυτό και κάθε ανοικτό vision-language μοντέλο από τότε μοιάζει χονδρικά ίδιο.4

Η συνέπεια για το τιμολόγιό σας είναι άμεση και καθόλου λαμπερή: τα patches είναι θέσεις στην ακολουθία, άρα είναι input tokens, άρα πληρώνετε γι’ αυτά στην τιμή input. Το πόσα είναι αριθμητική, και κάθε provider το κάνει διαφορετικά.

Κάθε κανόνας παρακάτω υλοποιείται από την ίδια την τεκμηρίωση του provider και ελέγχεται απέναντι στα worked examples της ίδιας τεκμηρίωσης.

Το OpenAI καλύπτει την εικόνα με patches 32 × 32 και πολλαπλασιάζει το πλήθος με έναν παράγοντα ανά μοντέλο. Αν το πλήθος patches υπερβαίνει το budget για εκείνο το μοντέλο και επίπεδο detail, η εικόνα μικραίνει μέχρι να χωρέσει:

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 την καλύπτει με patches 28 × 28, ένα visual token το καθένα, και βάζει cap τόσο στη μακριά πλευρά όσο και στο πλήθος token — 1.568 pixels και 1.568 tokens στα standard-tier models, 2.576 και 4.784 στο high-resolution tier. Οι υπερμεγέθεις εικόνες μικραίνουν στο μεγαλύτερο μέγεθος που χωρά και στα δύο.5

Το Google δεν μετρά pixels καθόλου. Μια εικόνα με αμφότερες τις πλευρές στα 384 pixels ή κάτω κοστίζει flat 258 tokens. Οτιδήποτε μεγαλύτερο κόβεται σε tiles των 258 token το καθένα, και το tile grid προκύπτει από crop unit 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;      
}

Τρέξτε το καθένα απέναντι στους αριθμούς που τυπώνει ο δικός του vendor:

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

Τυπώνονται εννέα συμφωνίες· το πλήρες run ελέγχει δεκαπέντε, αφού ο πίνακας του Anthropic δίνει και τα δύο tiers για όλα τα έξι μεγέθη. Οι κανόνες είναι πλέον δικοί σας για να τους τρέξετε σε οποιαδήποτε φωτογραφία έχετε, και αυτό είναι το ζητούμενο: αυτές είναι οι μόνες τρεις συναρτήσεις σε αυτό το κεφάλαιο που δεν μπορείτε να πάρετε από μια σελίδα τιμών.

Περάστε την ίδια φωτογραφία 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 pixels, ο αριθμός δεν αλλάζει ποτέ ξανά, και αυτό δεν είναι σύμπτωση ούτε cap. Αντικαταστήστε το crop unit πίσω στον τύπο των 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 είτε είναι thumbnail είτε αφίσα. Αυτό το μοναδικό αλγεβρικό γεγονός είναι όλη η εξήγηση του μηδενικού στη στήλη εξοικονόμησης παραπάνω, και καμία σελίδα τιμών πουθενά δεν το δηλώνει.

Οι άλλες δύο στήλες κάνουν cap, σε διαφορετικά ύψη και για διαφορετικούς λόγους — το Anthropic σε δηλωμένο token ceiling, το OpenAI σε patch budget μετά από pixel limit — γι’ αυτό οι τρεις καμπύλες τέμνονται σε διαφορετικά μεγέθη.

Τώρα σπάστε το. Ο προφανής τρόπος να ξοδέψετε λιγότερα σε vision model είναι να ζητήσετε λιγότερο detail, άρα στείλτε 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

Το να ζητήσετε λιγότερο detail κόστισε 25 % περισσότερο. Δεν είναι bug και το OpenAI το λέει σε μία γραμμή του sizing table: σε εκείνη την οικογένεια μοντέλων, το low χρησιμοποιεί όριο 2048 pixels με budget 6.144 patches ενώ το high χρησιμοποιεί το ίδιο όριο pixels με budget 2.500 patches, «οπότε μπορεί να χρησιμοποιήσει περισσότερα tokens από το high».7 Η λέξη low ονομάζει ρύθμιση fidelity, όχι τιμή: σε δύο από τις πέντε τεκμηριωμένες οικογένειες μοντέλων δεν αγοράζει καμία εξοικονόμηση, και σε μία από αυτές τις δύο κοστίζει περισσότερο.

Όλα μέχρι τώρα αφορούσαν ένα μοντέλο που διαβάζει μια εικόνα. Το να φτιάξει μία τρέχει σε μηχανισμό χωρίς tokens καθόλου, και αυτός είναι ο λόγος που πωλείται ανά εικόνα αντί ανά λέξη.

Δημιουργία εικόνας: η τιμή ανά εικόνα είναι τιμή ανά token

Σύνδεσμος στην ενότητα: Δημιουργία εικόνας: η τιμή ανά εικόνα είναι τιμή ανά token

Οι vendors δημοσιεύουν τη δημιουργία εικόνων ως τιμή ανά εικόνα. Δεν είναι. Τα GPT Image models εκπέμπουν εξειδικευμένα image tokens των οποίων το πλήθος εξαρτάται από το ζητούμενο μέγεθος και quality· πολλαπλασιάστε τα δημοσιευμένα πλήθη με τη δημοσιευμένη τιμή image output του GPT Image 1, $40 ανά εκατομμύριο, και συγκρίνετε με τις τιμές ανά εικόνα στην ίδια σελίδα:

quality1024 × 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

Η μεγαλύτερη εικόνα είναι η φθηνότερη σε κάθε quality. Ένας canvas 1024 × 1536 έχει 50 % περισσότερα pixels από έναν 1024 × 1024 και κοστίζει 23 % λιγότερα tokens στο medium. Το OpenAI το επισημαίνει σε μια πρόταση που θα προσπερνούσατε — «a larger non-square resolution can sometimes produce fewer output tokens than a smaller or square resolution at the same quality setting» — και στην προηγούμενη γενιά μοντέλων ίσχυε το αντίστροφο, με το portrait να κοστίζει 50 % περισσότερο από το square.11 Κάθε default του 1024x1024 που γράφτηκε πριν από εκείνη την αλλαγή είναι τώρα η ακριβή επιλογή.

Ήχος, χρεωμένος ανά δευτερόλεπτο, χαρακτήρα και token

Σύνδεσμος στην ενότητα: Ήχος, χρεωμένος ανά δευτερόλεπτο, χαρακτήρα και token

Ζητήστε από τρία προϊόντα να πουν τους ίδιους 519 χαρακτήρες — περίπου 38 δευτερόλεπτα ήχου — και παίρνετε τρία συστήματα μονάδων από δύο vendors:

μοντέλομονάδατιμή
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

Ο ίδιος vendor πουλά και τις δύο μονάδες: το tts-1 του OpenAI τιμολογείται ανά εκατομμύριο χαρακτήρες ενώ το gpt-4o-mini-tts τιμολογείται ανά εκατομμύριο tokens, $0.60 in και $12.00 out.13 Άρα το «φθηνότερο text-to-speech» δεν είναι ερώτηση με απάντηση μέχρι να πείτε τι εκφωνείτε.

Και οι δύο μονάδες είναι τυφλές σε αντίθετα πράγματα. Μια τιμή ανά χαρακτήρα δεν βλέπει διάρκεια: επιλέξτε μια αργή, μετρημένη φωνή ή προσθέστε παύσεις, και ο λογαριασμός δεν κουνιέται ενώ ο ήχος μεγαλώνει. Μια τιμή ανά δευτερόλεπτο δεν βλέπει περιεχόμενο: τριάντα δευτερόλεπτα κοστίζουν το ίδιο είτε είναι πυκνή τεχνική παράγραφος είτε κάποιος μετρά μέχρι το δέκα. Αλλάξτε φωνή και ακριβώς ένας από τους δύο vendors σας αλλάζει τιμή.

Το transcription πηγαίνει ανάποδα και είναι η πιο απλή γραμμή σε όλο το τιμολόγιο — ανά λεπτό ήχου, flat:

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, και αυτό κάνει την επόμενη ενότητα ακριβή.

Τώρα ο αριθμός που αποφασίζει αν η φωνή είναι feature ή προϊόν.

Η κλήση: μια συζήτηση υποστήριξης δέκα turns, 149 λέξεις, που με δηλωμένα 150 words per minute είναι 59,6 δευτερόλεπτα ομιλίας — 21,2 από τον καλούντα, 38,4 ως απάντηση. Οι μετατροπές token είναι των ίδιων των providers. 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 Μόνο που τώρα το history μετριέται σε audio tokens.

turnuserassistantfresh audio incached audio inaudio outκόστος
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, history 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 rate και 16 φορές την text input rate. Πολλαπλασιάστε έναν λόγο όγκου με έναν λόγο τιμής και η τάξη μεγέθους υπάρχει ήδη πριν αρχίσει οποιαδήποτε λογιστική.

Δύο επιχειρησιακές συνέπειες βγαίνουν κατευθείαν από τον πίνακα.

Το audio caching δεν είναι βελτιστοποίηση, είναι το business model. Το cached audio input είναι $0.40 ανά εκατομμύριο έναντι $32.00 fresh — έκπτωση 98,75 % που κόβει την κλήση στη μέση. Ο κανόνας είναι του Κεφαλαίου 16, αμετάβλητος: η cache ταιριάζει prefix, άρα οτιδήποτε εισάγεται στην αρχή της συζήτησης στη μέση της κλήσης την καταστρέφει, και το φυσικό σημείο για να βάλετε «ο καλών είναι πλέον επαληθευμένος» είναι ακριβώς εκεί.

Και τίποτα που κάνετε στον client δεν ξε-χρεώνει έναν ήχο. Ο χρήστης μιλά πάνω από τον assistant, ο κώδικάς σας σταματά το playback, το ηχείο σωπαίνει. Ό,τι είχε ήδη παραχθεί είχε ήδη χρεωθεί, επειδή η χρέωση συσσωρεύεται όταν δημιουργείται το response· και σύμφωνα με τον κανόνα του Κεφαλαίου 16, ό,τι παραμένει στη συζήτηση ξαναστέλνεται, ως input audio, σε κάθε επόμενο turn. Το Κεφάλαιο 14 το είπε για την ακύρωση text stream. Στη φωνή κοστίζει τριάντα φορές περισσότερο.

Το βίντεο πωλείται ανά δευτερόλεπτο από κάποιους vendors και ανά clip από άλλους, με tiers για resolution και μερικές φορές για duration. Αυτά τα δύο σχήματα δεν διαφέρουν απλώς σε ευκολία· τέμνονται.

μοντέλο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

Ο vendor ανά clip είναι ακριβότερος από τον ανά δευτερόλεπτο κάτω από 1,2 δευτερόλεπτα και 16,7 φορές φθηνότερος στα είκοσι. Καμία κατάταξη αυτών των δύο μοντέλων δεν επιβιώνει μιας αλλαγής στο μήκος του clip, άρα το «ποιο video model είναι φθηνότερο» δεν είναι ερώτηση για μοντέλα.

Η τελευταία γραμμή είναι χειρότερη, και είναι η ειλικρινής καρδιά του κεφαλαίου. Το mochi χρεώνεται βάσει πραγματικών GPU seconds — του μετρημένου prediction time της εργασίας — στα $0.001400 ανά δευτερόλεπτο σε A100 και $0.001525 σε H100, που είναι οι τιμές του νοικιασμένου μηχανήματος και τίποτε άλλο.15 Αυτό είναι απόλυτα ακριβές τιμολόγιο και δεν είναι τιμή, επειδή η ποσότητα που πολλαπλασιάζει είναι άγνωστη μέχρι αφού δεσμευτείτε να την πληρώσετε. Η παραπάνω γραμμή υποθέτει δώδεκα GPU-seconds ανά δευτερόλεπτο output· τετραπλασιάστε αυτήν την υπόθεση και φεύγει από τη φθηνότερη ζώνη, και μόνο στις έξι φορές προσγειώνεται στη μέση του πίνακα. Είναι το μόνο τιμολόγιο σε αυτήν τη σελίδα που δεν μπορείτε να βάλετε σε προσφορά.

Άρα: tokens, image tokens, χαρακτήρες, λεπτά, video seconds, ολόκληρα clips, GPU seconds, flat units. Οκτώ ποσότητες, και ο μόνος τρόπος να τις βάλετε στον ίδιο άξονα είναι να δηλώσετε workload και να το τιμολογήσετε.

Αυτή είναι η επέκταση του computeCost του Κεφαλαίου 16 — ο ίδιος μηχανισμός tiers, τώρα με criteria που δεν είναι μήκος prompt:

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;
}

Οι δύο σημειωμένες γραμμές είναι εκεί όπου σπάει. Ένα τιμολόγιο ανά μονάδα πολλαπλασιάζει το u.images ?? 1· ένα τιμολόγιο ανά token πολλαπλασιάζει κάτι που προεπιλέγει μηδέν. Δώστε και στα δύο empty usage — το σχήμα που παίρνετε όταν απέτυχε μια μέτρηση — και δείτε:

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

Δεν συνέβη τίποτα, έξι φορές, και κόστισε τρία δολάρια μία φορά και τίποτα πέντε φορές. Δεν είναι διαφορά στρογγυλοποίησης· είναι απόφαση για το τι σημαίνει ένας απόν αριθμός, παρμένη ξεχωριστά για κάθε μονάδα και ποτέ γραμμένη. Ο σωστός κανόνας είναι ότι ένα πεδίο που δεν μέτρησε κανείς μένει απόν, επειδή το «δεν μετρήθηκε» και το «μετρήθηκε και βγήκε μηδέν» είναι διαφορετικά πράγματα. Αυτή η συνάρτηση διαφωνεί σιωπηλά.

Η δεύτερη αστοχία είναι η duration. Το clip-priced tariff επιλέγει tier με maxDurationSeconds απέναντι σε u.videoSeconds ?? 0, άρα ένα usage που ποτέ δεν κατέγραψε duration ταιριάζει στο συντομότερο tier:

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

Σαράντα τοις εκατό έκπτωση επειδή δεν ξέρετε πόσο μεγάλο ήταν το βίντεο. Και τα δύο bugs έχουν την ίδια ρίζα: ένα default που επιλέχθηκε για ευκολία μέσα σε μια συνάρτηση της οποίας όλη η δουλειά είναι να είναι ακριβής.

Με τα κόστη υπολογίσιμα, η σύγκριση χρειάζεται το άλλο μισό — ένα δηλωμένο αντιπροσωπευτικό 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 },
};

Κάθε μία από αυτές τις γραμμές είναι επιχείρημα. Το κείμενο αναμειγνύει ένα τέταρτο input και τρία τέταρτα output επειδή η πραγματική χρήση γέρνει προς το output· ένα fifty-fifty blend κατατάσσει τα μοντέλα διαφορετικά. Το image workload υποθέτει 1.500 output tokens, ανάμεσα στα 1.056 του OpenAI για medium square και στα 1.584 για medium portrait. Το βίντεο υποθέτει πέντε δευτερόλεπτα στα 1080p, και μόλις είδαμε δύο vendors να αλλάζουν θέση στα 1,2 δευτερόλεπτα. Το compute entry υποθέτει εξήντα GPU-seconds επειδή δεν υπάρχει τίποτα άλλο να υποθέσει.

Αυτή είναι η μέθοδος, και είναι η μόνη ειλικρινής διαθέσιμη: δεν μπορείτε να συγκρίνετε τιμές σε διαφορετικές μονάδες· μπορείτε μόνο να συγκρίνετε το κόστος ενός workload που έχετε γράψει. Κάθε πίνακας που κατατάσσει multimodal models χωρίς να τυπώνει το workload του κατατάσσει τις δικές του υποθέσεις.

Μπορείτε πλέον να τιμολογήσετε οτιδήποτε μπορεί να παράγει ένα μοντέλο, σε οποιαδήποτε μονάδα πωλείται, και να πείτε δυνατά ποιο workload υπέθεσε η σύγκρισή σας. Αυτό κλείνει το τιμολόγιο που άνοιξε το Κεφάλαιο 16, και κλείνει το Μέρος III: όλα από το Κεφάλαιο 14 μέχρι εδώ αφορούσαν μία κλήση — πώς να την κάνετε, τι να βάλετε μέσα, πώς να τη δειγματοληπτήσετε, τι επιστρέφει, τι κοστίζει.

Το Κεφάλαιο 22 αλλάζει τη μονάδα ανάλυσης, και η αλλαγή είναι ακριβή. Ένας agent δεν είναι μία κλήση· είναι ένα loop που αποφασίζει μόνο του πόσες κλήσεις θα κάνει, και η αριθμητική των τελευταίων δύο κεφαλαίων είναι αυτό που το μετατρέπει από αρχιτεκτονικό διάγραμμα σε budget. Ανοίγει κάνοντας την ίδια ερώτηση στο ίδιο μοντέλο δύο φορές, με ένα tool να προστίθεται στον κατάλογο τη δεύτερη φορά, και μετρώντας τι έκανε εκείνο το ένα tool: μία κλήση έγινε δύο, τριάντα εννέα input tokens έγιναν 420.

Το αν αυτό το κάνει agent εξαρτάται από το ποιον από δύο δημοσιευμένους ορισμούς ανοίγετε, και δεν συμφωνούν. Ο ένας δεν συμφωνεί ούτε με τον εαυτό του.


Κάθε τιμή, τύπος και συντελεστής μετατροπής σε αυτό το κεφάλαιο διαβάστηκε από τη σελίδα του ίδιου του provider στις 7 Σεπτεμβρίου 2026 και παρατίθεται με αυτήν την ημερομηνία, επειδή όλα θα μετακινηθούν. Τα token counts, κόστη και comparisons υπολογίστηκαν πάνω σε εκείνα τα δεδομένα από τον κώδικα που τυπώθηκε παραπάνω, σε ένα μηχάνημα, χωρίς καμία paid API call — που είναι και ο ειλικρινής λόγος που δεν υπάρχει ούτε ένας latency ισχυρισμός σε αυτό το κεφάλαιο.

Οι image-token functions, οι cost tables, το voice-call breakdown και τα empty-usage results παρήχθησαν από την TypeScript που τυπώθηκε σε αυτό το κεφάλαιο, τρεγμένη σε Node 22. Ο διάλογος που χρησιμοποιήθηκε για τη voice comparison είναι 149 λέξεις και έγινε tokenized με tiktoken υπό το encoding o200k_base στα 188 tokens· η διάρκειά του προκύπτει από δηλωμένο ρυθμό 150 words per minute, που είναι παράμετρος της σύγκρισης και όχι μέτρηση. Κάθε provider figure φέρει την υποσημείωση που ονομάζει τη σελίδα από την οποία προήλθε.

  1. Dosovitskiy, A. et al. An Image Is Worth 16x16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929 (2020). Patches, η linear projection στη διάσταση embedding, και τα position embeddings που κάνουν το grid αναγνώσιμο σε 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 εκατομμύρια ζεύγη, και ο shared space που υποθέτουν όλα τα downstream.

  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, trained bridging layers — η αρχιτεκτονική που μετέτρεψε το image understanding σε chat capability.

  4. Liu, H., Li, C., Wu, Q. and Lee, Y. J. Visual Instruction Tuning. arXiv:2304.08485 (2023). Μία single linear projection ως γέφυρα και generated instruction data ως training set· ο λόγος που τα ανοικτά vision-language models συνέκλιναν σε ένα σχήμα.

  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 tiers (standard: 1568-pixel long edge, 1568 visual tokens· high-resolution, σε Claude 4.7 και μετά: 2576 pixels και 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 διαιρεμένα με αυτό και πολλαπλασιασμένα μεταξύ τους — και το worked example των 960 × 540 που δίνει 3 × 2 = 6 tiles. Το Google το αποκαλεί «a rough formula»· η scale-invariance που παράγεται παραπάνω είναι ιδιότητα του τύπου όπως δημοσιεύτηκε. Audio input στην ίδια οικογένεια είναι 32 tokens ανά δευτερόλεπτο ήχου (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 του, το rejection limit των 30.000 patches)· του model sizing table, συμπεριλαμβανομένου ότι το low στο gpt-5.4 χρησιμοποιεί όριο 2048 pixels και budget 6.144 patches «so it can use more tokens than high», απέναντι στο budget 2.500 patches του high· του multiplier table (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 plus 512-pixel tiles, 85 + 170 στο gpt-4o)· και της λίστας περιορισμών που παρατίθεται στο vision box. 2

  8. Ho, J., Jain, A. and Abbeel, P. Denoising Diffusion Probabilistic Models. arXiv:2006.11239 (2020). Το forward noising schedule, το reparameterisation που μετατρέπει τον στόχο σε πρόβλεψη του 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 process σε compressed latent space, που έκανε το fixed 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 model χωρίς αλλαγή μαθηματικών. Radford, A. et al., Robust Speech Recognition via Large-Scale Weak Supervision (Whisper), arXiv:2212.04356 (2022), είναι το transcription model του οποίου η per-minute price εμφανίζεται παραπάνω.

  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· οι τιμές του προέρχονται από την παραπάνω pricing page. Η σελίδα του GPT Image 1 δημοσιεύει text input στα $5.00, image input στα $10.00 και image output στα $40.00 ανά εκατομμύριο tokens δίπλα στον per-image table που χρησιμοποιήθηκε στην παραγωγή παραπάνω. Επίσης: το output-token table για μοντέλα πριν από το gpt-image-2 (272 / 408 / 400 low, 1056 / 1584 / 1568 medium, 4160 / 6240 / 6208 high, για square, portrait και landscape)· οι per-image price tables για 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, με τις δημοσιευμένες ισοδυναμίες των 747, 1120, 1680 και 2520 tokens για εικόνες 0.5K, 1K, 2K και 4K και τις ανά εικόνα τιμές τους $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 ανά δευτερόλεπτο με ήχο: $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 ανά δευτερόλεπτο — η σαφέστερη δημοσιευμένη δήλωση οπουδήποτε ότι μια ανά δευτερόλεπτο media price είναι token price. 2

  13. Σελίδες μοντέλων OpenAI για 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 ανά εκατομμύριο characters· gpt-4o-mini-tts στα $0.60 ανά εκατομμύριο text input tokens και $12.00 ανά εκατομμύριο audio output tokens — ο ίδιος vendor, η ίδια operation, δύο μονάδες.

  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 accrue when a Response is created· το worked two-turn example του οποίου τη συσσώρευση αναπαράγει ο παραπάνω πίνακας· και το usage payload response.done με τα splits input_token_details και output_token_details. Rates από την pricing page, ίδια ημερομηνία: 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 ανά ώρα.

Έτοιμοι να αφήσετε τη LIA να επιλέγει;

Δημιουργήστε με κάθε μοντέλο AI σε ένα σημείο — ξεκινήστε δωρεάν σήμερα.