Μετάβαση στο περιεχόμενο
Caching ερωτημάτων

Caching ερωτημάτων

ΑΥΤΟΜΑΤΟ

Τα hosted open-weight μοντέλα αποθηκεύουν αυτόματα επαναλαμβανόμενα προθέματα prompt. Όταν ένα αίτημα ξεκινά με το ίδιο system prompt, εργαλεία και προηγούμενα μηνύματα όπως ένα πρόσφατο αίτημα στο ίδιο μοντέλο, αυτό το κοινό πρόθεμα διαβάζεται από την cache και χρεώνεται στο 25% της τιμής εισόδου του μοντέλου. Δεν απαιτείται ενεργοποίηση και η εγγραφή στην cache είναι δωρεάν.

Πώς λειτουργεί

  • Πρόθεμα, κατά σειρά — Το prompt διαβάζεται με τη σειρά: system prompt, ορισμοί εργαλείων και στη συνέχεια τα μηνύματα. Η cache αντιστοιχεί από την αρχή αυτής της ακολουθίας έως το πρώτο token που διαφέρει.
  • Τι θεωρείται hit — Ένα αίτημα του οποίου το prompt ξεκινά με το ίδιο περιεχόμενο με ένα πρόσφατο αίτημα — συνήθως ο προηγούμενος γύρος της ίδιας συνομιλίας με προσθήκη νέων μηνυμάτων. Το αντιστοιχόμενο πρόθεμα είναι cached input· οτιδήποτε μετά από αυτό είναι κανονική είσοδος.
  • Κοκκοφάνεια — Το cache κρατά ένα prompt σε blocks των 1,568 tokens, οπότε ένα prompt μικρότερο από περίπου 1,500 tokens δεν μπαίνει στο cache. Ο αριθμός cached σε μια απάντηση είναι ο αριθμός εισόδου σας πολλαπλασιασμένος με το cached μερίδιο του prompt, στρογγυλοποιημένος προς τα κάτω. Δεν είναι απαραίτητα πολλαπλάσιο του μεγέθους του block.
  • Χωρίς hit — Ένα αίτημα του οποίου η αρχή δεν βρίσκεται στο cache χρεώνεται με την κανονική τιμή εισόδου. Δεν δημοσιεύεται διάρκεια ζωής για cached prompts και το hit δεν είναι εγγυημένο: διαβάστε το usage για να δείτε τι πήρε ένα αίτημα από το cache.
  • Χωρίς διακόπτη — Ένα αίτημα δεν χρειάζεται να επιλέξει συμμετοχή και κανένα πεδίο δεν απενεργοποιεί το caching.
  • Ποια μοντέλα — Κάθε hosted open-weight id. Το GET /v1/models αναφέρει capabilities.prompt_caching: true και pricing.cached_input_per_million_usd για αυτά. Τα μοντέλα Shannon χρεώνουν μια ενιαία τιμή.

Δείτε ένα cache hit σε μια απάντηση

Στείλτε δύο αιτήματα που ξεκινούν με το ίδιο μακρύ system prompt και εκτυπώστε τη χρήση του καθενός. Ο πρώτος αριθμός είναι η είσοδος του αιτήματος, ο δεύτερος το μέρος της που διαβάστηκε από το cache.

from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")

handbook = open("handbook.txt").read()  # a long text that stays the same


def ask(question):
    response = client.chat.completions.create(
        model="Kimi-K3-3BIT-REAP",
        messages=[
            {"role": "system", "content": handbook},
            {"role": "user", "content": question},
        ],
    )
    usage = response.usage
    print(usage.prompt_tokens, usage.prompt_tokens_details.cached_tokens)


ask("What is the refund policy?")
ask("Who approves travel?")  # same start: read the second number

Τιμολόγηση

Τα cached input tokens χρεώνονται στο 25% της τιμής εισόδου του μοντέλου, στρογγυλοποιημένα σε $0.001 ανά 1M. Η εγγραφή στην cache δεν κοστίζει τίποτα επιπλέον και η έξοδος χρεώνεται κανονικά. Η τιμή cached για κάθε id βρίσκεται στον πίνακα Models & pricing. Μοντέλα & τιμές

Η είσοδος μιας κλήσης χρεώνεται ως (είσοδος − cached) × τιμή εισόδου + cached × τιμή cached. Ο αριθμός cached δεν είναι ποτέ μεγαλύτερος από τον αριθμό εισόδου.

Μοντέλο Είσοδος / 1M Cached είσοδος / 1M
DeepSeek-V4-Pro-0813-3BIT-REAP $1.95 $0.488
GLM-5.2-3BIT-REAP $0.73 $0.183
Kimi-K3-3BIT-REAP $3.83 $0.958
Nemotron3Ultra-3BIT-REAP $0.75 $0.188
MiniMax-M3-3BIT-REAP $0.50 $0.125
DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP $0.50 $0.125
Kimi-K2.6-W4A16-AUTOROUND-REAP $0.78 $0.195
Laguna-S-2.1-W4A16-AUTOROUND-REAP $0.50 $0.125
inkling-W4A16-AUTOROUND-REAP $1.42 $0.355
MiMo-V2.5-Pro-W8A16 $0.50 $0.125
MiMo-V2.5-W8A16 $0.50 $0.125
Hy3-W8A16 $0.50 $0.125

Το ιστορικό χρήσης απαριθμεί την cached είσοδο κάθε κλήσης. Τα χρεωμένα tokens και το κόστος του περιλαμβάνουν ήδη την τιμή cached. Κλειδιά & χρήση

Πεδία χρήσης

Endpoint Προπληρωμένο input Συλλογισμός
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — μέρος των prompt_tokens usage.completion_tokens_details.reasoning_tokens — μέρος των completion_tokens
/v1/responses usage.input_tokens_details.cached_tokens — μέρος των input_tokens usage.output_tokens_details.reasoning_tokens — μέρος των output_tokens
/v1/messages usage.cache_read_input_tokens — αναφέρεται ξεχωριστά: τα input_tokens είναι το μη-cached μέρος· τα cache_creation_input_tokens είναι πάντα 0 το thinking προσμετράται στα output_tokens
{
  "usage": {
    "prompt_tokens": 20000,
    "completion_tokens": 812,
    "total_tokens": 20812,
    "prompt_tokens_details": {
      "cached_tokens": 18000
    },
    "completion_tokens_details": {
      "reasoning_tokens": 604
    }
  }
}

Μια απάντηση με streaming φέρει τα ίδια πεδία στην τελική της χρήση. Δεν χρειάζεται να το ζητήσετε:

Endpoint Πού φτάνει η χρήση
/v1/chat/completions Το usage στο τελευταίο chunk πριν από το data: [DONE]. Στέλνεται σε κάθε stream.
/v1/responses Το response.usage του συμβάντος response.completed.
/v1/messages Το usage του συμβάντος message_delta. Το usage του message_start περιέχει μηδενικά.

Πώς να πετύχετε περισσότερα cache hits

  • Διατηρήστε το system prompt και τους ορισμούς εργαλείων ακριβώς σταθερούς μεταξύ των κλήσεων. Τοποθετήστε τιμές που αλλάζουν ανά κλήση, όπως timestamps ή request ids, στο τέλος του τελευταίου μηνύματος, όχι στο system prompt.
  • Προσθέστε μόνο στο ιστορικό. Η επεξεργασία, η διαγραφή ή η σύνοψη προηγούμενων γύρων αλλάζει το πρόθεμα, και οτιδήποτε μετά την πρώτη αλλαγή χρεώνεται ως κανονική είσοδος.
  • Μην αλλάζετε τη σειρά των εργαλείων, των μηνυμάτων ή των blocks περιεχομένου μεταξύ των κλήσεων, και σειριοποιήστε το JSON (σχήματα εργαλείων, ορίσματα και αποτελέσματα) με τον ίδιο τρόπο κάθε φορά.
  • Μείνετε σε ένα id μοντέλου για μια συνομιλία και στείλτε την επόμενη κλήση λίγο μετά την προηγούμενη.

Το API κρατά σταθερή την αρχή μιας συνομιλίας σε αυτές τις περιπτώσεις:

  • Ένα μήνυμα system ή developer που στέλνεται αργότερα στη συνομιλία μένει στη θέση του. Δεν αλλάζει την αρχή του prompt, οπότε οι γύροι πριν από αυτό μένουν στο cache.
  • Τα ορίσματα των κλήσεων εργαλείων σε προηγούμενους γύρους του assistant συγκρίνονται κατά τιμή. Η σειρά των κλειδιών και τα κενά σε αυτό το JSON δεν έχουν σημασία.
  • Τα τρία endpoints διαβάζουν μια συνομιλία με τον ίδιο τρόπο. Μια συνομιλία που συνεχίζεται σε άλλο endpoint κρατά το κοινό της πρόθεμα όταν το περιεχόμενο είναι το ίδιο.

Πεδία αιτήματος

Δέχονται τα prompt_cache_key (Chat Completions και Responses) και το cache_control στα content blocks των Messages, ώστε ο υπάρχων κώδικας του client να εκτελείται αδιάλλακτος. Κανένα από τα δύο δεν είναι υποχρεωτικό: η προσωρινή αποθήκευση (caching) είναι αυτόματη και λειτουργεί το ίδιο χωρίς αυτά.

Πεδίο Αποστέλλεται σε Τι είναι
prompt_cache_key /v1/chat/completions, /v1/responses Ένα κλειδί δρομολόγησης cache του OpenAI API.
cache_control /v1/messages Ένα σημείο διακοπής cache σε block περιεχομένου, σε block system ή σε μήνυμα του Anthropic API.
stream_options /v1/chat/completions Το include_usage ζητά από το OpenAI API τη χρήση σε ένα stream. Εδώ κάθε stream τελειώνει με χρήση.

Καταμέτρηση tokens

Δύο δωρεάν endpoints, τα POST /v1/tokenize και POST /v1/messages/count_tokens, μετρούν τα tokens ενός κειμένου ή ενός ολόκληρου αιτήματος για τα φιλοξενούμενα μοντέλα ανοιχτών βαρών πριν το στείλετε. Έχουν τη δική τους σελίδα: Καταμέτρηση tokens