Το context window, τα tokens και ο λογαριασμός, μετρημένα
Μια συνομιλία 40 γύρων κοστίζει 22 φορές το μήκος της σε input tokens. Το caching το μειώνει 68%· λάθος timestamp προσθέτει 20%.
Σε αυτή τη σελίδα
Ακολουθεί μια συνομιλία υποστήριξης σαράντα γύρων, χρεωμένη γύρο προς γύρο. Δεν έχει τίποτα ασυνήθιστο: ένας developer ρωτά για ένα API, ένας assistant απαντά σε μία ή δύο παραγράφους. Ολόκληρη η ανταλλαγή είναι 5.090 tokens κειμένου — περίπου οκτώ σελίδες.
| γύρος | prompt tokens | νέο κείμενο | output | κόστος αυτού του γύρου | τρέχον σύνολο |
|---|---|---|---|---|---|
| 1 | 213 | 18 | 183 | $0.002622 | $0.002622 |
| 5 | 892 | 14 | 123 | $0.003260 | $0.014354 |
| 10 | 1,656 | 19 | 114 | $0.004680 | $0.035530 |
| 20 | 2,868 | 18 | 103 | $0.006972 | $0.094426 |
| 30 | 3,941 | 20 | 99 | $0.009070 | $0.174170 |
| 40 | 4,947 | 17 | 142 | $0.011598 | $0.274386 |
Διαβάστε μαζί τη δεύτερη και την τρίτη στήλη. Στον γύρο 40 ο χρήστης πληκτρολόγησε δεκαεπτά tokens και χρεώθηκε για 4.947. Η ερώτηση δεν ήταν πιο δύσκολη από την πρώτη· ήταν πιο σύντομη. Αυτό που άλλαξε είναι ότι το αίτημα μετέφερε μαζί του ολόκληρη τη συνομιλία, ξανά, για τεσσαρακοστή φορά.
Συνολικά input tokens που χρεώθηκαν σε αυτά τα σαράντα calls: 112.617. Η συνομιλία έχει μήκος 5.090 tokens. Την πληρώσατε είκοσι δύο φορές.
Αυτό το κεφάλαιο εξηγεί γιατί συμβαίνει αυτό, πώς ονομάζεται στο invoice κάθε provider και για ποια από τα πέντε πράγματα που χρεώνεστε μπορείτε να κάνετε κάτι.
Εμφάνιση λεπτομερειών
Τι χρειάζεται αυτό το κεφάλαιο από το Μέρος II.
- Κεφάλαιο 7 έχτισε τον tokenizer. Ένα token είναι η μονάδα και εδώ — η ίδια μονάδα, τώρα με τιμή.
- Κεφάλαιο 9 παρήγαγε το self-attention και το κόστος του , στο πλαίσιο της ασυμπτωτικής σημειογραφίας. Αυτό το κόστος είναι ο λόγος που υπάρχει όριο εξαρχής, και εδώ παραπέμπεται αντί να εξηγηθεί ξανά.
- Κεφάλαιο 13 μέτρησε το prefill έναντι του decode και υπολόγισε τι χώρο καταλαμβάνει ένα KV cache. Αυτές οι δύο φάσεις είναι αυτό που αγοράζουν στην πράξη οι στήλες input και output παραπάνω.
Όλα τα υπόλοιπα είναι TypeScript, επειδή πρόκειται για λογιστική ενός απομακρυσμένου call και όχι για μαθηματικά γύρω από ένα μοντέλο.
Το window δεν είναι μνήμη
Σύνδεσμος στην ενότητα: Το window δεν είναι μνήμηΗ πιο ακριβή παρανόηση σε αυτόν τον χώρο είναι ότι ένα μοντέλο θυμάται μια συνομιλία.
Δεν τη θυμάται, και ο μηχανισμός από το Κεφάλαιο 13 δείχνει ακριβώς γιατί. Η κατάσταση ενός transformer κατά τη δημιουργία είναι το KV cache: τα keys και values που υπολογίζονται για κάθε token στην ακολουθία. Αυτό το cache ζει για τη διάρκεια ενός αιτήματος. Όταν το αίτημα τελειώσει, η διεργασία που το κρατούσε είναι ελεύθερη να εξυπηρετήσει κάποιον άλλον, και το cache χάνεται. Δεν υπάρχει αποθήκη ανά χρήστη στην άλλη πλευρά, ούτε session.
Άρα το επόμενο αίτημα πρέπει να φτάσει μεταφέροντας όλα όσα υποτίθεται ότι πρέπει να ξέρει το μοντέλο, και το μοντέλο ξαναχτίζει αυτή την κατάσταση εκτελώντας ένα forward pass πάνω σε ολόκληρο το prompt πριν εκπέμψει έστω και ένα νέο token. Το Κεφάλαιο 15 αποκάλεσε το prompt «ολόκληρη την κατάσταση». Αυτός είναι ο φυσικός λόγος: το prompt είναι η πλήρης κατάσταση επειδή τίποτα άλλο δεν επιβιώνει από το call.
Το context window είναι το μέγιστο μήκος αυτού του prompt μαζί με την απάντησή του. Είναι ένα ανώτατο όριο στο πόση κατάσταση μπορείτε να ξαναχτίσετε, όχι ένα δοχείο που κρατά κάτι ανάμεσα σε αιτήματα. Το να το αποκαλείτε «μνήμη του μοντέλου» αντιστρέφει την αιτιότητα — δεν γεμίζετε μια μνήμη, πληρώνετε για να την επαναδημιουργήσετε.
Από εκεί προκύπτει το είκοσι δύο. Ο γύρος μεταφέρει όλους τους προηγούμενους γύρους, άρα το συνολικό input σε μια συνομιλία γύρων είναι το άθροισμα μιας αυξανόμενης σειράς, δηλαδή είναι τετραγωνικό:
όπου είναι το system prompt και το ιστορικό στον γύρο . Η προσαρμογή του μετρημένου αθροιστικού input στο στους σαράντα γύρους δίνει , που προβλέπει 113.645 tokens στον γύρο 40 έναντι 112.617 μετρημένων. Ο τετραγωνικός όρος κυριαρχεί και ο γραμμικός όρος είναι αυτό που πληκτρολόγησε πραγματικά ο χρήστης.
Το συμπέρασμα που πρέπει να κρατήσετε από αυτό το κεφάλαιο είναι: ο λογαριασμός σας μεγαλώνει με το τετράγωνο της συνομιλίας, όχι με την τελευταία ερώτηση. Οι ίδιες σαράντα ερωτήσεις, αν γίνονταν χωρίς καθόλου ιστορικό, θα κόστιζαν $0.066036. Η διατήρηση του ιστορικού κόστισε $0.274386. Το ιστορικό πολλαπλασίασε τον λογαριασμό επί 4,2, και θα συνεχίσει να τον πολλαπλασιάζει, επειδή ο πολλαπλασιαστής είναι το μήκος της συνομιλίας.
Γιατί υπάρχει όριο εξαρχής
Σύνδεσμος στην ενότητα: Γιατί υπάρχει όριο εξαρχήςΤο window είναι πεπερασμένο για δύο λόγους που τραβούν προς την ίδια κατεύθυνση. Ο πρώτος είναι του Κεφαλαίου 9: το attention συγκρίνει κάθε token με κάθε άλλο token, άρα η εργασία αυτού του layer μεγαλώνει με το τετράγωνο του μήκους της ακολουθίας. Ο δεύτερος είναι η μνήμη: το KV cache μεγαλώνει γραμμικά με το μήκος της ακολουθίας, και το Κεφάλαιο 13 έκανε αυτή την αριθμητική — σε μεγάλες ακολουθίες είναι μεγαλύτερο από τα weights.
Και τα δύο όρια έχουν δεχθεί επιθέσεις και κανένα δεν έχει εξαφανιστεί. Το FlashAttention1 αναδιοργανώνει τον υπολογισμό ώστε να διαβάζει και να γράφει πολύ λιγότερο σε μνήμη υψηλού bandwidth, κάτι που κάνει τις μεγάλες ακολουθίες πρακτικές χωρίς να αλλάζει το ασυμπτωτικό κόστος. Το Position Interpolation2 και το YaRN3 επεκτείνουν το χρησιμοποιήσιμο window ενός εκπαιδευμένου μοντέλου κλιμακώνοντας εκ νέου τα positional encodings από το Κεφάλαιο 9 αντί να το εκπαιδεύουν ξανά. Μαζί είναι ο λόγος που τα windows πήγαν από 2K σε 1M μέσα σε πέντε χρόνια.
Αυτό που δεν έκαναν είναι να καταστήσουν τα μεγάλα contexts δωρεάν. Ανέβασαν το ταβάνι και έκαναν την κλίση πιο ήπια. Η κλίση παραμένει εκεί, και αυτή μετρούν τα price tiers αργότερα σε αυτό το κεφάλαιο.
Πέντε buckets, όχι δύο
Σύνδεσμος στην ενότητα: Πέντε buckets, όχι δύοΣχεδόν κάθε cost calculator στο internet μοντελοποιεί ένα API call ως input tokens επί τιμή input συν output tokens επί τιμή output. Αυτό ίσχυε το 2023. Τώρα είναι λάθος με τρόπο που παράγει λογαριασμούς αποκλίνοντες κατά συντελεστή δύο ή περισσότερο και προς τις δύο κατευθύνσεις.
Υπάρχουν πέντε χρεώσιμες κατηγορίες token:
| bucket | τι είναι | τυπική τιμή, σε σχέση με το input |
|---|---|---|
| uncached input | prompt tokens που το μοντέλο έπρεπε να επεξεργαστεί από την αρχή | 1× |
| cache read | prompt tokens που εξυπηρετήθηκαν από αποθηκευμένο prefix | 0.1× |
| cache write | prompt tokens που αποθηκεύτηκαν στο cache σε αυτό το call | 1.25× έως 2× |
| output | tokens που παρήγαγε το μοντέλο και έστειλε σε εσάς | 5× έως 6× |
| reasoning | tokens που παρήγαγε το μοντέλο και δεν έστειλε σε εσάς | τιμή output |
Τρεις από αυτές τις πέντε δεν υπήρχαν ως ξεχωριστές γραμμές πριν από δύο χρόνια, και οι δύο γραμμές cache είναι αυτές στις οποίες κάνουν λάθος οι περισσότεροι, επειδή ένα cache write κοστίζει περισσότερο από το συνηθισμένο input, όχι λιγότερο. Πληρώνετε premium για να αποθηκεύσετε κάτι ώστε να πληρώσετε έκπτωση όταν το διαβάσετε ξανά, και το αν αυτή η ανταλλαγή συμφέρει εξαρτάται αποκλειστικά από το πόσες φορές το διαβάζετε.
Το bucket του reasoning είναι του Κεφαλαίου 12, τώρα με τιμή πάνω του, και έχει μια λεπτομέρεια που αξίζει να ειπωθεί καθαρά: η τεκμηρίωση της Google λέει ότι η τιμολόγηση «βασίζεται στα πλήρη thought tokens που χρειάζεται να παράγει το μοντέλο, παρότι μόνο η σύνοψη επιστρέφεται από το API».4 Χρεώνεστε για tokens που δεν μεταδίδονται ποτέ σε εσάς. Είναι το μόνο bucket του οποίου το περιεχόμενο δεν μπορείτε να μετρήσετε, να επιθεωρήσετε ή να επαληθεύσετε.
Το ίδιο call, τρεις διάλεκτοι
Σύνδεσμος στην ενότητα: Το ίδιο call, τρεις διάλεκτοιΤώρα το μέρος που το κάνει πρόβλημα κανονικοποίησης αντί για πρόβλημα πολλαπλασιασμού. Κάθε provider αναφέρει αυτά τα buckets με διαφορετικά ονόματα, και — αυτή είναι η παγίδα — δύο από αυτούς χρησιμοποιούν την ίδια λέξη για δύο διαφορετικές ποσότητες.
Πάρτε ένα call: 4.837 tokens διαβασμένα από cache, 110 φρέσκα, 142 ορατά output tokens, 300 reasoning tokens.
// OpenAI-compatible
{ "usage": { "prompt_tokens": 4947,
"prompt_tokens_details": { "cached_tokens": 4837 },
"completion_tokens": 442,
"completion_tokens_details": { "reasoning_tokens": 300 } } }
// Anthropic
{ "usage": { "input_tokens": 110,
"cache_read_input_tokens": 4837,
"cache_creation_input_tokens": 0,
"output_tokens": 442 } }
// Gemini
{ "usageMetadata": { "promptTokenCount": 4947,
"cachedContentTokenCount": 4837,
"candidatesTokenCount": 142,
"thoughtsTokenCount": 300 } }Κοιτάξτε τα prompt_tokens: 4947 και input_tokens: 110. Και τα δύο πεδία είναι το input token count για το ίδιο prompt. Της OpenAI περιλαμβάνει τα cached tokens· της Anthropic τα εξαιρεί — η τεκμηρίωσή της δηλώνει ρητά την ταυτότητα, total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens.5 Το input_tokens της Anthropic σημαίνει «τα tokens μετά το τελευταίο σας cache breakpoint».
Και κοιτάξτε το output. OpenAI και Anthropic αναφέρουν και οι δύο 442, που ήδη περιέχει τα 300 reasoning tokens. Το Gemini αναφέρει 142 και βάζει τα 300 σε δικό του πεδίο. Το Κεφάλαιο 12 το επισήμανε ως ασυμβατότητα ανάμεσα σε δύο τρόπους μέτρησης της ίδιας εργασίας· εδώ είναι το κόστος του.
Ένας normaliser είναι τριάντα γραμμές και δεν είναι προαιρετικός:
export interface Usage {
promptTokens?: number; // input, NOT cached
cachedInputTokens?: number; // read from cache
cacheWriteTokens?: number; // written to cache on this call
completionTokens?: number; // output
reasoningTokens?: number; // billed apart from output (Gemini only)
}
const num = (v: unknown) => (typeof v === "number" && isFinite(v) ? v : 0);
export const fromOpenAI = (raw: any): Usage => {
const u = raw.usage ?? {}, d = u.prompt_tokens_details ?? {};
const cached = num(d.cached_tokens), write = num(d.cache_write_tokens);
return {
promptTokens: Math.max(0, num(u.prompt_tokens) - cached - write),
cachedInputTokens: cached,
cacheWriteTokens: write,
completionTokens: num(u.completion_tokens), // reasoning already inside
reasoningTokens: 0,
};
};
export const fromAnthropic = (raw: any): Usage => {
const u = raw.usage ?? {};
return {
promptTokens: num(u.input_tokens), // already excludes cache
cachedInputTokens: num(u.cache_read_input_tokens),
cacheWriteTokens: num(u.cache_creation_input_tokens),
completionTokens: num(u.output_tokens),
reasoningTokens: 0,
};
};
export const fromGemini = (raw: any): Usage => {
const m = raw.usageMetadata ?? {}, cached = num(m.cachedContentTokenCount);
return {
promptTokens: Math.max(0, num(m.promptTokenCount) - cached),
cachedInputTokens: cached,
cacheWriteTokens: 0,
completionTokens: num(m.candidatesTokenCount), // EXCLUDES thinking
reasoningTokens: num(m.thoughtsTokenCount), // billed at output rate
};
};Περάστε τα τρία payloads παραπάνω μέσα από τους τρεις readers και όλα παράγουν το ίδιο Usage, και επομένως τον ίδιο αριθμό: $0.006491. Αυτή η συμφωνία είναι ολόκληρος ο λόγος ύπαρξης του layer.
Αν το κάνετε λάθος, αυτό κοστίζει, στο ίδιο call:
| λάθος | χρέωση | σφάλμα |
|---|---|---|
να αντιμετωπίσετε το cached_tokens ως πρόσθετο στο prompt_tokens | $0.016165 | 2.49× — χρεώνετε το prompt δύο φορές |
| να αντιμετωπίσετε τα cache reads ως δωρεάν αντί για 0.1× | $0.005524 | 0.85× — απορροφάτε 15 % |
να διαβάσετε το candidatesTokenCount και να αγνοήσετε το thoughtsTokenCount | $0.002891 | το 55 % του call εξαφανίζεται |
Το τρίτο είναι το επικίνδυνο, επειδή αποτυγχάνει σιωπηλά προς την κατεύθυνση των καλών νέων. Το dashboard σας δείχνει ένα reasoning model να κοστίζει λιγότερο από το μισό του πραγματικού κόστους, και πουθενά δεν εμφανίζεται error.
Υπολογισμός του κόστους
Σύνδεσμος στην ενότητα: Υπολογισμός του κόστουςΜε τα buckets κανονικοποιημένα, η συνάρτηση κόστους είναι σύντομη. Το μόνο μη προφανές μέρος είναι η αναζήτηση tier, που εξηγεί η επόμενη ενότητα:
export interface Tier { maxPromptTokens: number | null; price: number }
export interface Pricing {
input: Tier[]; output: Tier[];
cachedInput?: Tier[]; cacheWrite?: Tier[]; reasoning?: Tier[];
}
const tierPrice = (tiers: Tier[] | undefined, contextSize: number, fallback?: Tier[]) => {
const table = tiers ?? fallback;
if (!table?.length) return 0;
const sorted = [...table].sort(
(a, b) => (a.maxPromptTokens ?? Infinity) - (b.maxPromptTokens ?? Infinity));
for (const t of sorted)
if (t.maxPromptTokens === null || contextSize <= t.maxPromptTokens) return t.price;
return sorted[sorted.length - 1].price;
};
export function computeCost(pricing: Pricing, usage: Usage): number {
const fresh = usage.promptTokens ?? 0;
const read = usage.cachedInputTokens ?? 0;
const write = usage.cacheWriteTokens ?? 0;
const out = usage.completionTokens ?? 0;
const think = usage.reasoningTokens ?? 0;
const contextSize = fresh + read + write; // the tier depends on the WHOLE prompt
return fresh * tierPrice(pricing.input, contextSize)
+ read * tierPrice(pricing.cachedInput, contextSize, pricing.input)
+ write * tierPrice(pricing.cacheWrite, contextSize, pricing.input)
+ out * tierPrice(pricing.output, contextSize)
+ think * tierPrice(pricing.reasoning, contextSize, pricing.output);
}Δύο σχεδιαστικές αποφάσεις εκεί αξίζει να υπερασπιστεί κανείς. Τα fallbacks — οι τιμές cache να πέφτουν πίσω στο input, το reasoning στο output — κωδικοποιούν τι σημαίνει ένας πίνακας που λείπει: τα reasoning tokens στο Gemini χρεώνονται στην τιμή output, άρα μια απούσα τιμή reasoning δεν είναι μηδέν, είναι η τιμή output. Και το contextSize αθροίζει και τα τρία input buckets αντί για μόνο τα φρέσκα, επειδή το tier επιλέγεται από το πόσο μακρύ είναι το prompt, όχι από το πόσο μέρος του χρεώθηκε σε πλήρη τιμή.
Prompt caching, και τι κοστίζει η εγγραφή του
Σύνδεσμος στην ενότητα: Prompt caching, και τι κοστίζει η εγγραφή τουΈνα prompt cache αποθηκεύει την υπολογισμένη κατάσταση του μοντέλου για ένα prefix του prompt σας, ώστε ένα μεταγενέστερο αίτημα με το ίδιο prefix να παρακάμπτει τον επανυπολογισμό του. Τέσσερις ιδιότητες ακολουθούν από τη λέξη «prefix» και οι τέσσερις εκπλήσσουν τον κόσμο.
Είναι prefix, όχι σύνολο
Σύνδεσμος στην ενότητα: Είναι prefix, όχι σύνολοΤο cache ταιριάζει από την αρχή του rendered prompt προς τα εμπρός, και σταματά στο πρώτο byte που διαφέρει. Δεν υπάρχει μερική πίστωση για περιεχόμενο που εμφανίζεται αργότερα με διαφορετική σειρά. Η OpenAI το λέει ξεκάθαρα: «η επαναχρησιμοποίηση cache απαιτεί να ταιριάζει ολόκληρο το rendered prefix».6
Υπάρχει ελάχιστο μήκος
Σύνδεσμος στην ενότητα: Υπάρχει ελάχιστο μήκοςΚάτω από αυτό, τίποτα δεν μπαίνει σε cache και δεν επιστρέφεται error. Στην OpenAI το ελάχιστο είναι 1.024 tokens για GPT-5.6 και νεότερα και 2.048 για παλαιότερα μοντέλα. Στην Anthropic κυμαίνεται από 512 έως 4.096 ανάλογα με το μοντέλο — 1.024 για Claude Sonnet 4.5, 4.096 για Claude Haiku 4.5. Αν και τα δύο cache fields επιστρέφουν μηδέν, συνήθως αυτός είναι ο λόγος.
Η εγγραφή κοστίζει περισσότερο από την ανάγνωση, και περισσότερο από το να μην κάνετε caching
Σύνδεσμος στην ενότητα: Η εγγραφή κοστίζει περισσότερο από την ανάγνωση, και περισσότερο από το να μην κάνετε cachingΣτην OpenAI και την Anthropic ένα cache write είναι 1.25× της uncached input τιμής για το βραχύβιο cache, και το cache μίας ώρας της Anthropic είναι 2×. Ένα read είναι 0.1×. Η Google δεν χρεώνει τίποτα για εγγραφή αλλά νοικιάζει το storage: $4.50 ανά εκατομμύριο tokens ανά ώρα στο Gemini 2.5 Pro.
Λήγει, και ζει σε ένα μηχάνημα
Σύνδεσμος στην ενότητα: Λήγει, και ζει σε ένα μηχάνημαΗ προεπιλεγμένη εγγραφή της Anthropic ζει πέντε λεπτά, ανανεώνεται δωρεάν σε κάθε hit. Της OpenAI ζει τουλάχιστον τριάντα λεπτά μετά την τελευταία εγγραφή ή επαναχρησιμοποίηση. Και η OpenAI σημειώνει ότι οι cached states ζουν σε μεμονωμένα μηχανήματα, άρα ένα αίτημα κάνει hit μόνο αν δρομολογηθεί στο μηχάνημα που κρατά την εγγραφή — πράγμα που επηρεάζει το prompt_cache_key, χωρίς να το εγγυάται.
Το break-even είναι αρκετά μικρό ώστε να το κρατάτε στο μυαλό σας, και η τεκμηρίωση της OpenAI κάνει την αριθμητική: η εγγραφή ενός prefix μία φορά και η επαναχρησιμοποίησή του μία φορά κοστίζει 1.35× του συνηθισμένου input κόστους του, έναντι 2× για επεξεργασία του δύο φορές uncached· σε δέκα αιτήματα, μία εγγραφή και εννέα αναγνώσεις κοστίζουν 2.15× έναντι 10×. Μία επαναχρησιμοποίηση πληρώνει την εγγραφή. Η Anthropic καταλήγει στο ίδιο σημείο: ένα read για το cache των πέντε λεπτών, δύο για το cache της μίας ώρας.
Ξανά η συνομιλία των σαράντα γύρων, με caching ενεργό και το prefix σταθερό:
| uncached input | cache reads | cache writes | σύνολο | |
|---|---|---|---|---|
| χωρίς cache | 112,617 | — | — | $0.274386 |
| caching | 2,887 | 104,783 | 4,947 | $0.088250 |
Εξήντα οκτώ τοις εκατό φθηνότερα, και τρεις αριθμοί σε αυτόν τον πίνακα αξίζουν προσοχή.
Το cache δεν ενεργοποιείται μέχρι τον γύρο 6. Το prompt δεν φτάνει τα 1.024 tokens μέχρι τότε, άρα οι πρώτοι πέντε γύροι χρεώνονται ακριβώς όπως πριν — και ο έκτος χρεώνεται χειρότερα, με το premium εγγραφής 1.25×, επειδή είναι ο γύρος που γεμίζει το cache. Το πρώτο read φτάνει στον γύρο 7. Τα 2.887 uncached tokens στον πίνακα είναι η αριθμητική: η αξία πέντε γύρων, όχι έξι. Το caching είναι έκπτωση σε μεγάλα prompts, και μια σύντομη συνομιλία δεν κερδίζει τίποτα από αυτό.
Το write premium είναι $0.002474, δηλαδή 2,8 % του cached λογαριασμού. Κάθε γύρος γράφει τη νέα ουρά του, σαράντα φορές, και ολόκληρο το write premium είναι σφάλμα στρογγυλοποίησης μπροστά σε όσα εξοικονόμησαν τα reads. Αξίζει να κατανοήσετε ακριβώς τη χρέωση εγγραφής ώστε να σταματήσετε να ανησυχείτε γι’ αυτή.
Μόνο 2.887 tokens χρεώθηκαν σε πλήρη input τιμή από τα 112.617. Αυτό είναι το σχήμα ενός cache που λειτουργεί: σχεδόν τα πάντα είναι read.
Η σειρά του prompt αποφασίζει αν θα συμβεί κάτι από όλα αυτά
Σύνδεσμος στην ενότητα: Η σειρά του prompt αποφασίζει αν θα συμβεί κάτι από όλα αυτάΑκολουθεί η αποτυχία που κοστίζει πραγματικά χρήματα, και είναι bug μίας γραμμής.
Βάλτε κάτι που αλλάζει σε κάθε call κοντά στην αρχή του prompt — ένα timestamp, ένα request id, το όνομα του χρήστη, μια γραμμή «σήμερα είναι», ένα πρόσφατα retrieved έγγραφο — και το prefix διαφέρει από το πρώτο byte. Τίποτα δεν ταιριάζει. Κάθε call είναι miss. Και επειδή κάθε call παρουσιάζει ένα νέο prefix, κάθε call επίσης γράφει.
Ίδια συνομιλία, ίδιοι σαράντα γύροι, caching ενεργό, με timestamp ανά call στην κορυφή του system prompt:
| σύνολο | έναντι | |
|---|---|---|
| καθόλου caching | $0.274386 | — |
| caching, σταθερό prefix | $0.088250 | −67.8 % |
| caching, ασταθές prefix | $0.329251 | +20.0 % |
Η ενεργοποίηση του prompt caching έκανε τη συνομιλία είκοσι τοις εκατό ακριβότερη από το να μην το ενεργοποιήσετε. Πληρώσατε το write premium 1.25× σε 109.730 tokens και διαβάσατε πίσω μηδέν. Δεν υπάρχει error, δεν υπάρχει warning, και το feature είναι ενεργό.
Άρα ο κανόνας, και είναι ολόκληρο το prompt caching σε μία γραμμή: σταθερό περιεχόμενο μπροστά, μεταβλητό περιεχόμενο πίσω. System instructions, tool definitions και reference material πρώτα· timestamps, user identity και η τρέχουσα ερώτηση τελευταία. Η Anthropic κάνει την ιεραρχία ρητή — το cache ακολουθεί tools → system → messages, και μια αλλαγή σε οποιοδήποτε επίπεδο ακυρώνει εκείνο το επίπεδο και όλα όσα ακολουθούν, άρα η επεξεργασία μίας μόνο tool description ακυρώνει ολόκληρο το cache.5
Δύο συνέπειες στις οποίες σκοντάφτει ο κόσμος. Η αλλαγή του ποια tools είναι enabled αλλάζει τα tool definitions, άρα ένα feature flag που προσθέτει ένα tool για κάποιους χρήστες χωρίζει το cache σας στα δύο. Και στην Anthropic, η εναλλαγή web search ή citations τροποποιεί το system prompt, κάτι που ακυρώνει τα system και message caches χωρίς να αγγίξετε ούτε γραμμή δικού σας κειμένου.
Η περικοπή του ιστορικού δεν είναι η λύση
Σύνδεσμος στην ενότητα: Η περικοπή του ιστορικού δεν είναι η λύσηΗ προφανής αντίδραση σε έναν τετραγωνικό λογαριασμό είναι να σταματήσετε να στέλνετε ολόκληρο το ιστορικό: να κρατάτε τα τελευταία δώδεκα messages και να πετάτε τα υπόλοιπα. Μειώνει τον λογαριασμό, και συνήθως είναι λάθος κίνηση, και η μέτρηση δείχνει γιατί.
| στρατηγική | σύνολο | έναντι πλήρους ιστορικού + cache |
|---|---|---|
| πλήρες ιστορικό, χωρίς cache | $0.274386 | +211 % |
| πλήρες ιστορικό, caching | $0.088250 | — |
| τελευταία 12 messages, χωρίς cache | $0.118712 | +35 % |
| τελευταία 12 messages, caching ενεργό | $0.122546 | +39 % |
Η περικοπή σε window δώδεκα messages είναι 57 % φθηνότερη από το να στέλνετε τα πάντα uncached — η σύγκριση που κάνουν όλοι, και ο λόγος που η τεχνική είναι δημοφιλής. Αλλά είναι 39 % ακριβότερη από το να στέλνετε τα πάντα με cache που λειτουργεί, και η ενεργοποίηση caching μαζί με την περικοπή το κάνει ελαφρώς χειρότερο αντί για καλύτερο.
Ο μηχανισμός είναι ξανά το prefix. Ένα sliding window αφαιρεί το παλαιότερο message σε κάθε γύρο, άρα το prompt δεν ξεκινά πλέον από εκεί που ξεκινούσε την προηγούμενη φορά και κάθε γύρος παρουσιάζει νέο prefix. Η οδηγία της OpenAI το λέει ακριβώς: «η σύνοψη, η συμπύκνωση ή η περικοπή context μπορεί να αλλάξει το prefix και να επαναφέρει την επαναχρησιμοποίηση cache».6 Στον γύρο 40 το windowed prompt είναι 813 tokens, κάτω από το ελάχιστο των 1.024 tokens, άρα δεν μπορεί να γίνει καθόλου cached.
Και τα χρήματα είναι το φθηνό μισό του κόστους. Αυτό που πετάξατε είναι η οδηγία που έδωσε ο χρήστης στον γύρο 2 και που το μοντέλο χρειαζόταν στον γύρο 40. Η περικοπή ανταλλάσσει έναν λογαριασμό που μπορείτε να δείτε με μια αποτυχία που δεν μπορείτε, και το να το κάνετε σωστά — compaction, structured notes που κρατιούνται έξω από το window, ανάκτηση ιστορικού on demand — είναι το θέμα του Κεφαλαίου 24.
Η υπέρβαση tier ανατιμολογεί ολόκληρο το αίτημα
Σύνδεσμος στην ενότητα: Η υπέρβαση tier ανατιμολογεί ολόκληρο το αίτημαΤα μεγάλα contexts δεν είναι απλώς ακριβότερα επειδή είναι μεγαλύτερα. Πέρα από ένα όριο είναι ακριβότερα ανά token, και το όριο εφαρμόζεται αναδρομικά σε ολόκληρο το prompt.
Η σελίδα μοντέλου της OpenAI για το gpt-5.6-terra το λέει σε μία πρόταση: «Prompts with >272K input tokens are priced at 2x input and 1.5x output for the full request.»7 Όχι για το πλεόνασμα. Για ολόκληρο.
prompt 271,999 + 500 output -> $0.5500
prompt 272,000 + 500 output -> $0.5500
prompt 272,001 + 500 output -> $1.0970Ένα token, πενήντα πέντε σεντ. Αν η υπηρεσία σας χτίζει prompts από retrieved documents των οποίων το μέγεθος δεν ελέγχετε, έχετε γκρεμό στο μοντέλο κόστους σας σε ένα όριο που κανείς στην ομάδα σας δεν έχει γράψει.
Η τιμολόγηση της Google λειτουργεί με τον ίδιο τρόπο με όριο 200.000 tokens: το Gemini 2.5 Pro είναι $1.25 ανά εκατομμύριο input tokens για prompts έως 200K και $2.50 πάνω από αυτό, με το output να πηγαίνει από $10.00 σε $15.00.8 Η Anthropic πήγε προς την άλλη κατεύθυνση — στις 6 Σεπτεμβρίου 2026 η τεκμηρίωσή της δηλώνει ότι το Claude 4.6 και νεότερα περιλαμβάνουν ολόκληρο το window ενός εκατομμυρίου tokens στην τυπική τιμολόγηση, άρα «ένα αίτημα 900k-token χρεώνεται με την ίδια per-token τιμή με ένα αίτημα 9k-token».9 Παλαιότερα μοντέλα κρατούσαν την προσαύξηση.
Γι’ αυτό μια τιμή δεν είναι αριθμός. Μια τιμή είναι ένας πίνακας tiers με κλειδί το μήκος του prompt, και αυτός είναι ο λόγος ύπαρξης του Tier[] στη συνάρτηση κόστους, και ο λόγος που το computeCost επιλέγει το tier χρησιμοποιώντας ολόκληρο το prompt αντί για κάθε bucket ξεχωριστά.
Prefill, decode, και γιατί το output κοστίζει έξι φορές το input
Σύνδεσμος στην ενότητα: Prefill, decode, και γιατί το output κοστίζει έξι φορές το inputΤα πέντε buckets αντιστοιχούν στις δύο φάσεις του Κεφαλαίου 13, και μόλις δείτε την αντιστοίχιση οι λόγοι τιμών σταματούν να φαίνονται αυθαίρετοι.
Τα input tokens είναι prefill. Ολόκληρο το prompt περνά από το μοντέλο σε ένα pass, επεξεργασμένο παράλληλα — μεγάλοι πολλαπλασιασμοί πινάκων, compute-bound. Το κόστος ανά token είναι χαμηλό, και αυτή είναι η φάση που ορίζει το time to first token: ένα prompt 4.947 tokens έχει 4.947 tokens prefill να κάνει πριν εμφανιστεί η πρώτη λέξη.
Τα output tokens είναι decode. Παράγονται ένα-ένα, καθένα ένα πλήρες forward pass που διαβάζει ολόκληρο το KV cache, με το GPU να περιμένει κυρίως τη μνήμη αντί να υπολογίζει. Αυτή είναι η φάση που ορίζει τα tokens per second, δεν μπορεί να παραλληλιστεί μέσα σε μία απάντηση, και είναι ο λόγος που το output κοστίζει περίπου έξι φορές το input στο μοντέλο που τιμολογείται εδώ: $12.00 έναντι $2.00 ανά εκατομμύριο tokens.
Τρεις συνέπειες ακολουθούν άμεσα. Ένα cache read αντικαθιστά prefill work, άρα αγοράζει latency και χρήματα ταυτόχρονα — η ίδια έκπτωση εμφανίζεται ως χαμηλότερος λογαριασμός και μικρότερη αναμονή για το πρώτο token. Τα reasoning tokens είναι decode που δεν βλέπετε ποτέ, γι’ αυτό ένα reasoning model δεν κάνει stream τίποτα για αρκετά δευτερόλεπτα και μετά απαντά γρήγορα: το Κεφάλαιο 12 προειδοποίησε για τη συνέπεια στο interface, και αυτή είναι η συνέπεια στο invoice. Και η ακύρωση ενός stream δεν σταματά τη generation — το Κεφάλαιο 14 έχτισε cancellation και άφησε την τιμή για αυτό το κεφάλαιο, και η τιμή είναι το πλήρες output count, επειδή τα tokens παράγονται και χρεώνονται είτε ακούει κάποιος είτε όχι. Το ίδιο ισχύει για την απάντηση που κανείς δεν κρατά: η επαναδημιουργία μιας απάντησης του γύρου 40 πέντε φορές κοστίζει $0.057990 για τη μία που μένει στην οθόνη.
Μετρώντας tokens πριν τα στείλετε
Σύνδεσμος στην ενότητα: Μετρώντας tokens πριν τα στείλετεΟ tokenizer του Κεφαλαίου 7 ήταν Python και έμεινε εκεί. Το budgeting γίνεται στον server που χτίζει το αίτημα, άρα πρέπει να γίνεται εδώ, και υπάρχουν ακριβώς τρία επίπεδα ακρίβειας διαθέσιμα.
Επίπεδο ένα: μετρήστε τοπικά. Το js-tiktoken διανέμει τους ίδιους BPE merge tables με το Python tiktoken, άρα ένα byte-for-byte ίδιο count για OpenAI encodings, χωρίς network call:
import { getEncoding } from "js-tiktoken";
const enc = getEncoding("o200k_base");
const PER_MESSAGE = 4; // role and delimiters added by the chat template
const PER_REPLY = 3; // priming for the assistant turn
export function promptTokens(messages: { role: string; content: string }[]) {
return messages.reduce(
(sum, m) => sum + enc.encode(m.content).length + PER_MESSAGE, PER_REPLY);
}Οι δύο σταθερές έχουν σημασία και είναι εκεί όπου τα local counts αποκλίνουν. Το κείμενό σας δεν είναι αυτό που γίνεται tokenized — το chat template του Κεφαλαίου 11 τυλίγει πρώτα κάθε message με role markers, και αυτά είναι tokens που πληρώνετε. Τέσσερα ανά message και τρία για το reply priming είναι η συμβατική προσέγγιση για OpenAI chat models· στα ογδόντα ένα messages της συνομιλίας παραπάνω αθροίζονται σε 324 tokens, 6,4 % του μήκους της. Τα counts εδώ διασταυρώθηκαν με το Python tiktoken από το Κεφάλαιο 7 και στις ογδόντα μία strings και είναι ταυτόσημα.
Επίπεδο δύο: ρωτήστε τον provider. Η Anthropic εκθέτει το /v1/messages/count_tokens και η Google εκθέτει το count_tokens, και τα δύο δέχονται το ίδιο σχήμα αιτήματος με ένα πραγματικό call και επιστρέφουν input token count δωρεάν. Χρησιμοποιήστε τα όταν δεν μπορείτε να μετρήσετε τοπικά — και δεν μπορείτε να μετρήσετε τοπικά για την Anthropic, της οποίας ο tokenizer δεν είναι δημοσιευμένος. Η τεκμηρίωση της Anthropic είναι προσεκτική για το τι σας δίνει: το count «είναι εκτίμηση», και «μπορεί να περιλαμβάνει tokens που προστίθενται αυτόματα από την Anthropic για system optimizations», για τα οποία «δεν χρεώνεστε».10
Επίπεδο τρία: διαβάστε το usage στην απάντηση. Αυτή είναι η αλήθεια, και φτάνει αφού έχουν ξοδευτεί τα χρήματα. Ακριβώς γι’ αυτό υπάρχουν τα πρώτα δύο επίπεδα — για να αποφασίσετε αν θα στείλετε το αίτημα, όχι για να το χρεώσετε.
Τα πράγματα που πληρώνετε και κανείς δεν σας δείχνει
Σύνδεσμος στην ενότητα: Τα πράγματα που πληρώνετε και κανείς δεν σας δείχνειΤέσσερα line items που δεν εμφανίζονται ως line items.
Το system prompt, πληρωμένο σε κάθε call. Το παραπάνω είναι 192 tokens με το template overhead του. Σε σαράντα calls αυτό είναι 7.680 tokens — 5,6 % ολόκληρου του λογαριασμού αυτής της συνομιλίας, για οκτώ γραμμές γραμμένες μία φορά. Είναι επίσης ο καλύτερος δυνατός υποψήφιος για cache, επειδή είναι και σταθερό και πρώτο.
Tool definitions. Το όνομα, η περιγραφή και το JSON schema κάθε tool βγαίνουν σε κάθε αίτημα, και οι providers προσθέτουν scaffolding από πάνω. Η Anthropic δημοσιεύει τον αριθμό: η απλή ενεργοποίηση tools προσθέτει ένα κρυφό system prompt 496 tokens στο Claude Sonnet 4.5 με το tool_choice ορισμένο σε auto, ή 588 με any ή named tool.9 Αυτό πριν από τα δικά σας schemas. Το Κεφάλαιο 18 χτίζει τον κατάλογο· το Κεφάλαιο 24 μετρά τι καταναλώνει.
Κάθε generation, συμπεριλαμβανομένων όσων απορρίπτετε. Πέντε regenerations κοστίζουν πέντε φορές. Το chat δείχνει μία.
Σκέψεις που δεν σας δείχνονται. Η χρέωση βασίζεται στα πλήρη thought tokens παρότι επιστρέφεται μόνο μια σύνοψη, και κανένα δικό σας accounting δεν μπορεί να ελέγξει αυτόν τον αριθμό.
Το να έχετε 200K tokens δεν σημαίνει ότι τα χρησιμοποιείτε
Σύνδεσμος στην ενότητα: Το να έχετε 200K tokens δεν σημαίνει ότι τα χρησιμοποιείτεΜία προειδοποίηση για το τέλος, επειδή είναι η φυσική επόμενη σκέψη και η απάντηση δεν είναι η προφανής.
Ένα window ενός εκατομμυρίου tokens δεν σημαίνει ένα εκατομμύριο χρησιμοποιήσιμα tokens. Η ακρίβεια retrieval υποβαθμίζεται με τη θέση: οι Liu et al. βρήκαν ότι τα μοντέλα εντοπίζουν πληροφορίες αξιόπιστα στην αρχή και στο τέλος ενός μεγάλου input και πολύ λιγότερο αξιόπιστα στη μέση.11 Ένα μεγαλύτερο window αγοράζει την ικανότητα να στείλετε περισσότερα, όχι τη βεβαιότητα ότι θα διαβαστούν.
Αυτό το φαινόμενο μετριέται μία φορά σε αυτό το course — το retrieval rate σε εννέα θέσεις στο ίδιο prompt 853 tokens — και ανήκει στο Κεφάλαιο 24, όπου αλλάζει τι κάνει ένα agent. Αναφέρεται εδώ επειδή αλλάζει τι πρέπει να αγοράζετε: το φθηνότερο token είναι αυτό που δεν στείλατε.
Πού πηγαίνει αυτό στη συνέχεια
Σύνδεσμος στην ενότητα: Πού πηγαίνει αυτό στη συνέχειαΜπορείτε πλέον να προβλέψετε τι θα κοστίσει ένα call πριν το κάνετε, να διαβάσετε τι κόστισε μετά, και να ξεχωρίσετε τη διαφορά ανάμεσα στα δύο. Αυτό καλύπτει τα πάντα για το αίτημα εκτός από το κομμάτι που δεν έχετε αγγίξει: τα knobs.
Το Κεφάλαιο 17 είναι sampling — temperature, top-p, top-k, οι penalties, και ο determinism που δεν έχετε. Ξεκινά αποδομώντας το πιο διαδεδομένο λάθος στο πεδίο, ότι το temperature είναι dial δημιουργικότητας. Δεν είναι: το temperature διαιρεί τα logits από το Κεφάλαιο 4 πριν από το softmax, και η αύξησή του δεν κάνει το μοντέλο ευφάνταστο, αυξάνει την πιθανότητα tokens που το ίδιο το μοντέλο βαθμολόγησε ως χειρότερα. Από εκεί, γιατί το greedy decoding παράγει μετρήσιμα χειρότερο κείμενο από το sampling, γιατί τα top-k και top-p αποτυγχάνουν σε αντίθετα σχήματα κατανομής, και το πείραμα που κλείνει το κεφάλαιο: είκοσι πανομοιότυπα forward passes σε temperature 0 επιστρέφουν bit-for-bit πανομοιότυπα όταν το μοντέλο τρέχει μόνο του, και το να βάλετε το ίδιο prompt σε batch δίπλα στα αιτήματα κάποιου άλλου μετακινεί το 97 % των logits του.
Δεν ταιριάζουν όλα. Ο λόγος ξεκινά με το πλαίσιο floating-point από το Κεφάλαιο 2.
Πηγές και μέθοδος
Σύνδεσμος στην ενότητα: Πηγές και μέθοδοςΌλες οι τιμές, τα thresholds και οι multipliers σε αυτό το κεφάλαιο διαβάστηκαν από τις ίδιες τις σελίδες των providers στις 6 Σεπτεμβρίου 2026 και δηλώνονται με αυτή την ημερομηνία επειδή θα αλλάξουν. Η μέθοδος έχει μεγαλύτερη σημασία από τους αριθμούς: τα buckets, ο κανόνας prefix και η αριθμητική των tiers έχουν μείνει σταθερά για δύο χρόνια ενώ κάθε τιμή μέσα τους έχει μετακινηθεί.
Η διάλεξη 2 του Stanford CS336, Resource accounting, είναι η πιο κοντινή ακαδημαϊκή πραγμάτευση αυτού του υλικού και το σωστό επόμενο ανάγνωσμα: κάνει την ίδια αριθμητική στην πλευρά του training που αυτό το κεφάλαιο κάνει στην πλευρά του inference. Τα token counts εδώ παρήχθησαν με js-tiktoken 1.0.21 χρησιμοποιώντας τα encodings o200k_base και cl100k_base, πάνω σε μια συνομιλία σαράντα γύρων 5.090 tokens· το per-message template overhead είναι η συμβατική προσέγγιση four-plus-three και δηλώνεται όπου περιλαμβάνεται. Τα στοιχεία cache, tier και truncation είναι οι τεκμηριωμένοι κανόνες τιμολόγησης εφαρμοσμένοι σε εκείνα τα μετρημένα token counts, όχι παρατηρήσεις από live API responses — δεν έγινε paid call για την παραγωγή αυτού του κεφαλαίου, που είναι επίσης ο ειλικρινής λόγος για τον οποίο οι ισχυρισμοί latency είναι ποιοτικοί και οι ισχυρισμοί κόστους δεν είναι.
Παραπομπές
Σύνδεσμος στην ενότητα: Παραπομπές-
Dao, T., Fu, D. Y., Ermon, S., Rudra, A. and Ré, C. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. arXiv:2205.14135 (2022). Γιατί το ταβάνι μετακινήθηκε χωρίς να αλλάξει το ασυμπτωτικό κόστος. ↩
-
Chen, S., Wong, S., Chen, L. and Tian, Y. Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595 (2023). ↩
-
Peng, B., Quesnelle, J., Fan, H. and Shippole, E. YaRN: Efficient Context Window Extension of Large Language Models. arXiv:2309.00071 (2023). ↩
-
Google, Thinking,
ai.google.dev/gemini-api/docs/thinking, και Token counting,ai.google.dev/gemini-api/docs/tokens, πρόσβαση και στα δύο 2026-09-06. «Pricing is based on the full thought tokens the model needs to generate, despite only the summary being output from the API.» Το usage object αναφέρειtotal_input_tokens,total_output_tokens,total_thought_tokens,total_cached_tokens,total_tool_use_tokensκαιtotal_tokens— έξι buckets, με thoughts και tool use έξω από το output count. Το παλαιότερο field name για την ίδια ποσότητα, που εξακολουθεί να επιστρέφεται από το generateContent surface, είναιthoughtsTokenCount, τεκμηριωμένο σε τρίτη σελίδα,ai.google.dev/gemini-api/docs/generate-content/thinking. ↩ -
Anthropic, Prompt caching,
docs.anthropic.com/en/docs/build-with-claude/prompt-caching, πρόσβαση 2026-09-06. Πηγή της ιεραρχίας ακύρωσηςtools→system→messagesκαι του πίνακά της· των ανά-μοντέλο ελάχιστων cacheable lengths· της ταυτότηταςtotal_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens· και της προεπιλεγμένης διάρκειας ζωής πέντε λεπτών που ανανεώνεται χωρίς χρέωση σε κάθε hit. ↩ ↩2 -
OpenAI, Prompt caching,
platform.openai.com/docs/guides/prompt-caching, πρόσβαση 2026-09-06. Πηγή για: τον κανόνα ολόκληρου rendered prefix· το ελάχιστο cacheable prefix (1.024 visible input tokens σε GPT-5.6 και νεότερα, 2.048 παλαιότερα)· τους multipliers 1.25× για write και 0.1× για read, και την απουσία οποιασδήποτε χρέωσης write σε GPT-5.5 και παλαιότερα· τη διάρκεια ζωής 30 λεπτών· τα όρια four-writes-per-request και fifty-breakpoint· τη σημείωση machine-affinity και τοprompt_cache_key· τα worked examples break-even 1.35×, 2.15× και 10×· και τη δήλωση ότι summarisation, compaction ή truncation επαναφέρουν την επαναχρησιμοποίηση cache. ↩ ↩2 -
OpenAI, Pricing (
platform.openai.com/docs/pricing) και η σελίδα μοντέλου για τοgpt-5.6-terra, πρόσβαση και στα δύο 2026-09-06.gpt-5.6-terra, standard service tier, ανά εκατομμύριο tokens: input $2.00, cached input $0.20, cache writes $2.50, output $12.00· long context input $4.00, cached $0.40, writes $5.00, output $18.00· «prompts with >272K input tokens are priced at 2x input and 1.5x output for the full request»· context window 1.050.000 tokens με μέγιστο 922.000 input tokens. Ο ίδιος πίνακας αναφέρει τοgpt-6-astraστα $10.00/$1.00/$12.50/$50.00 και τοgpt-5.6-lunaστα $0.20/$0.02/$0.25/$1.20. Κάθε worked cost σε αυτό το κεφάλαιο χρησιμοποιεί τις standard short-context rates τουgpt-5.6-terra. ↩ -
Google, Gemini Developer API pricing,
ai.google.dev/gemini-api/docs/pricing, πρόσβαση 2026-09-06. Gemini 2.5 Pro, ανά εκατομμύριο tokens: input $1.25 για prompts έως 200K και $2.50 πάνω από αυτό· output $10.00 και $15.00, και στις δύο περιπτώσεις με ετικέτα «including thinking tokens»· context caching $0.125 και $0.25, συν χρέωση storage $4.50 ανά εκατομμύριο tokens ανά ώρα. Το Gemini 3.1 Pro Preview χρησιμοποιεί το ίδιο threshold 200K στα $2.00/$4.00 input και $12.00/$18.00 output. ↩ -
Anthropic, Pricing,
docs.anthropic.com/en/docs/about-claude/pricing, πρόσβαση 2026-09-06. Ανά εκατομμύριο tokens, base input / 5-minute cache write / 1-hour cache write / cache read / output: Claude Sonnet 4.5 $3 / $3.75 / $6 / $0.30 / $15· Claude Haiku 4.5 $1 / $1.25 / $2 / $0.10 / $5· Claude Opus 5 $5 / $6.25 / $10 / $0.50 / $25. Multipliers: 1.25× για το five-minute write, 2× για το one-hour write, 0.1× για read. Επίσης πηγή της δήλωσης long-context («Claude 4.6 and later models... include the full 1M token context window at standard pricing»), των tool-use system prompt token counts (496 tokens στο Claude Sonnet 4.5 μεtool_choiceτουautoήnone, 588 μεanyή named tool), και της σημείωσης ότι το Claude 4.7 και νεότερα χρησιμοποιούν νεότερο tokenizer που παράγει «approximately 30 % more tokens for the same text». ↩ ↩2 ↩3 -
Anthropic, Token counting,
docs.anthropic.com/en/docs/build-with-claude/token-counting, πρόσβαση 2026-09-06. Το endpoint/v1/messages/count_tokensπαίρνει τα ίδια inputs με ένα message και επιστρέφει input token count· η τεκμηρίωση δηλώνει ότι το count είναι εκτίμηση, ότι μπορεί να περιλαμβάνει tokens που προσθέτει η Anthropic για system optimisations, και ότι αυτά δεν χρεώνονται. ↩ -
Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F. and Liang, P. Lost in the Middle: How Language Models Use Long Contexts. arXiv:2307.03172 (2023). Αναφέρεται εδώ, μετριέται στο Κεφάλαιο 24. ↩