Μορφή Anthropic
Το POST /v1/messages δέχεται αίτημα σε μορφή Anthropic Messages και απαντά στην ίδια μορφή, με streaming ή χωρίς. Χρησιμοποιήστε το με το Anthropic SDK και με εργαλεία χτισμένα πάνω του, όπως το Claude Code: ορίστε το base URL, χρησιμοποιήστε το κλειδί Shannon API σας και δώστε ένα id μοντέλου Shannon.
POST https://api.shannon-ai.com/v1/messages
Στρέψτε το Anthropic SDK στο base URL του Shannon. Το SDK προσθέτει το /v1/messages και στέλνει το κλειδί σας στην κεφαλίδα x-api-key.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
message = client.messages.create(
model="shannon-3",
max_tokens=1024,
messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
for block in message.content:
if block.type == "text":
print(block.text) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await client.messages.create({
model: "shannon-3",
max_tokens: 1024,
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
for (const block of message.content) {
if (block.type === "text") console.log(block.text);
} curl https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' Η απάντηση είναι ένα μήνυμα με content που είναι λίστα από blocks. Βρείτε τα blocks από το type τους: όταν το μοντέλο συλλογίστηκε, το πρώτο block είναι thinking και το κείμενο έρχεται μετά.
{
"id": "msg_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
"type": "message",
"role": "assistant",
"model": "shannon-3",
"content": [
{
"type": "thinking",
"thinking": "The user wants a greeting in one sentence. Keep it short and friendly."
},
{
"type": "text",
"text": "Hello, it is good to meet you."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 1184,
"output_tokens": 46
}
} Κεφαλίδες
| Κεφαλίδα | Τιμή | Περιγραφή |
|---|---|---|
x-api-key | YOUR_API_KEY | Το κλειδί API σας. Αντί γι' αυτό γίνεται δεκτό το Authorization: Bearer YOUR_API_KEY. |
content-type | application/json | Υποχρεωτικό. |
anthropic-version | 2023-06-01 | Γίνεται δεκτό, δεν είναι υποχρεωτικό. Το Anthropic SDK στέλνει 2023-06-01· η απάντηση έχει την ίδια μορφή όποια κι αν είναι η τιμή. |
anthropic-beta | Γίνεται δεκτό, δεν είναι υποχρεωτικό. | |
x-request-id | Προαιρετικό. Το δικό σας id για το αίτημα. Επιστρέφεται αμετάβλητο στην απάντηση· χωρίς αυτό, η απάντηση φέρει ένα id 12 δεκαεξαδικών χαρακτήρων. |
Πεδία αιτήματος
Μόνο το messages είναι υποχρεωτικό. Η στήλη Εφαρμόζεται από ονομάζει τα μοντέλα στα οποία ένα πεδίο αλλάζει την απάντηση. Τα φιλοξενούμενα μοντέλα ανοιχτών βαρών είναι τα δώδεκα ids της λίστας μοντέλων· η οικογένεια Shannon 3 είναι τα shannon-3, shannon-3-pro, shannon-3.1 και shannon-3.1-pro. Μοντέλα & τιμές
| Πεδίο | Τύπος | Προεπιλογή | Περιγραφή | Εφαρμόζεται από |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Ένα id μοντέλου Shannon από τη λίστα μοντέλων. Στείλτε το με κάθε αίτημα. Η αντιστοίχιση δεν κάνει διάκριση πεζών-κεφαλαίων. Οποιοδήποτε άλλο όνομα επιστρέφει 400 unknown model, οπότε ένα εργαλείο που στέλνει δικά του ονόματα μοντέλων πρέπει να ρυθμιστεί σε id Shannon. | Όλα τα μοντέλα |
messages | array | Υποχρεωτικό. Η συνομιλία, με το παλαιότερο μήνυμα πρώτο, με τους ρόλους user και assistant. Δείτε παρακάτω Μηνύματα και blocks περιεχομένου. | Όλα τα μοντέλα | |
system | string | array | Οδηγίες για το μοντέλο: ένα string ή ένας πίνακας από blocks κειμένου. Δείτε παρακάτω System prompt. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Ανώτατο όριο της απάντησης, σε tokens. Προαιρετικό σε αυτό το endpoint· το Anthropic SDK το στέλνει πάντα. Μια τιμή εκτός του εύρους 1 έως 65,536 μετακινείται μέσα σε αυτό το εύρος. Είναι επίσης το ποσό που δεσμεύεται από το υπόλοιπό σας όσο εκτελείται το αίτημα. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | Το true στέλνει την απάντηση ως server-sent events. Δείτε παρακάτω Streaming. | Όλα τα μοντέλα |
temperature | number | Θερμοκρασία δειγματοληψίας. Στα φιλοξενούμενα μοντέλα ανοιχτών βαρών οι τιμές διατηρούνται μεταξύ 0 και 2. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Δειγματοληψία nucleus. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών | |
stop_sequences | array | Έως 4 strings. Η απάντηση τελειώνει πριν από το πρώτο που εμφανίζεται. Το stop_reason παραμένει end_turn. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών | |
tools | array | Τα εργαλεία που μπορεί να καλέσει το μοντέλο, το καθένα ως {"name", "description", "input_schema"}. Δείτε παρακάτω Εργαλεία. | Όλα τα μοντέλα | |
tool_choice | object | Το {"type": "auto"} αφήνει το μοντέλο να αποφασίσει, το {"type": "any"} το αναγκάζει να καλέσει ένα εργαλείο, το {"type": "tool", "name": "…"} το αναγκάζει να καλέσει εκείνο το εργαλείο. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών | |
thinking | object | Πόσο συλλογίζεται το μοντέλο πριν απαντήσει. Δείτε παρακάτω Thinking. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών | |
web_search | boolean | false | Προσθήκη του Shannon στη μορφή: το true αφήνει το μοντέλο να αναζητήσει στον ιστό πριν απαντήσει. | shannon-1.6-*, shannon-2-*, οικογένεια Shannon 3 |
Χωρίς max_tokens η τιμή είναι 4,096, και 65,536 στο shannon-coder-1.
Τα metadata, top_k, service_tier και οι δείκτες cache_control σε blocks γίνονται δεκτά ώστε ο υπάρχων κώδικας client να τρέχει αμετάβλητος. Δεν αλλάζουν την απάντηση· το prompt caching στα φιλοξενούμενα μοντέλα ανοιχτών βαρών είναι αυτόματο.
Μια απάντηση JSON σύμφωνη με schema ζητείται με response_format στα Chat Completions και με text.format στα Responses. Δομημένες έξοδοι
Ένα αίτημα με system prompt και thinking
Αυτό το αίτημα στέλνει ένα system prompt, έναν προϋπολογισμό thinking, μια θερμοκρασία και μια ακολουθία διακοπής. Χρησιμοποιεί φιλοξενούμενο μοντέλο ανοιχτών βαρών, το οποίο τα εφαρμόζει όλα.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
message = client.messages.create(
model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
max_tokens=4096,
system="You are a physics teacher. Answer in two sentences.",
thinking={"type": "enabled", "budget_tokens": 2048},
temperature=0.3,
stop_sequences=["\n\n"],
messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
for block in message.content:
if block.type == "thinking":
print("reasoning:", block.thinking)
elif block.type == "text":
print("answer:", block.text)
print(message.usage) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await client.messages.create({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
max_tokens: 4096,
system: "You are a physics teacher. Answer in two sentences.",
thinking: { type: "enabled", budget_tokens: 2048 },
temperature: 0.3,
stop_sequences: ["\n\n"],
messages: [{ role: "user", content: "Why is the sky blue?" }],
});
for (const block of message.content) {
if (block.type === "thinking") console.log("reasoning:", block.thinking);
if (block.type === "text") console.log("answer:", block.text);
}
console.log(message.usage); curl https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"max_tokens": 4096,
"system": "You are a physics teacher. Answer in two sentences.",
"thinking": {"type": "enabled", "budget_tokens": 2048},
"temperature": 0.3,
"stop_sequences": ["\n\n"],
"messages": [{"role": "user", "content": "Why is the sky blue?"}]
}' Στα φιλοξενούμενα μοντέλα ανοιχτών βαρών, το usage αναφέρει ξεχωριστά τα tokens που διαβάστηκαν από το prompt cache και τα υπόλοιπα tokens εισόδου.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} System prompt
Το system είναι string ή πίνακας από blocks κειμένου με τη μορφή [{"type": "text", "text": "…"}]. Τα κείμενα των blocks ενώνονται με αλλαγή γραμμής.
Εφαρμόζεται από τα φιλοξενούμενα μοντέλα ανοιχτών βαρών, τα shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro και shannon-coder-1. Με id της οικογένειας Shannon 3, βάλτε τις οδηγίες που πρέπει να ισχύουν στο μήνυμα χρήστη.
Μηνύματα και blocks περιεχομένου
Ένα μήνυμα έχει ένα role, user ή assistant, και ένα content. Το content είναι string ή πίνακας από blocks.
| Block | Περιγραφή | Διαθέσιμο σε |
|---|---|---|
{"type": "text", "text": "…"} | Κείμενο. | Όλα τα μοντέλα |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | Μια εικόνα σε μήνυμα user, ως base64 ή με URL. | Οικογένεια Shannon 3, shannon-1.6-lite, shannon-1.6-pro και τα φιλοξενούμενα μοντέλα ανοιχτών βαρών που δηλώνουν είσοδο εικόνας |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Ένα έγγραφο (PDF, Word, PowerPoint ή Excel) σε μήνυμα user, ως base64 ή με URL. | Οικογένεια Shannon 3 |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Σε μήνυμα assistant: μια κλήση εργαλείου που έκανε το μοντέλο σε προηγούμενη απάντηση. | Όλα τα μοντέλα |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | Σε μήνυμα user: το αποτέλεσμα αυτής της κλήσης. Το content είναι string ή λίστα από blocks κειμένου. | Όλα τα μοντέλα |
Μπορείτε να στείλετε πίσω το content μιας προηγούμενης απάντησης όπως είναι: τα blocks text και tool_use διαβάζονται, τα blocks thinking παραλείπονται.
Στα επίπεδα Shannon οι εικόνες και τα έγγραφα διαβάζονται από το τελευταίο μήνυμα user. Τα μεγέθη και τα όρια έχουν τη δική τους σελίδα. Εικόνες και αρχεία
Thinking
Τα φιλοξενούμενα μοντέλα ανοιχτών βαρών αντιστοιχίζουν το thinking σε προσπάθεια συλλογισμού. Χωρίς το πεδίο η προσπάθεια είναι υψηλή.
| Μορφή | budget_tokens | Αποτέλεσμα |
|---|---|---|
{"type": "disabled"} | Χωρίς συλλογισμό. Η απάντηση δεν έχει block thinking. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Χαμηλή προσπάθεια. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Μεσαία προσπάθεια. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Υψηλή προσπάθεια. |
Ένα μοντέλο που συλλογίζεται επιστρέφει τον συλλογισμό του ως block {"type": "thinking", "thinking": "…"} πριν από το κείμενο. Τα επίπεδα Shannon που συλλογίζονται τον στέλνουν επίσης.
Οι προσπάθειες περιγράφονται στη δική τους σελίδα. Προσπάθεια συλλογισμού
Εργαλεία
Ένα εργαλείο είναι μια συνάρτηση που εκτελεί ο κώδικάς σας. Περιγράψτε το καθένα με ένα name, ένα description και ένα input_schema. Όταν το μοντέλο θέλει ένα εργαλείο, η απάντηση περιέχει ένα block tool_use και το stop_reason είναι tool_use.
Ένας ορισμός εργαλείου στο tools:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Το content μιας απάντησης που το καλεί:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Εκτελέστε το εργαλείο και στείλτε ξανά το αίτημα με την κλήση και ένα block tool_result προστιθέμενα στο messages:
[
{
"role": "user",
"content": "What is the weather in Paris?"
},
{
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
]
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"content": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
}
]
}
] tool_choice
| Μορφή | Αποτέλεσμα | Εφαρμόζεται από |
|---|---|---|
{"type": "auto"} | Το μοντέλο αποφασίζει αν θα καλέσει εργαλείο. Αυτή είναι η προεπιλογή. | Όλα τα μοντέλα |
{"type": "any"} | Το μοντέλο πρέπει να καλέσει ένα από τα εργαλεία. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
{"type": "tool", "name": "…"} | Το μοντέλο πρέπει να καλέσει το εργαλείο που ονομάζεται. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
Διαβάζονται μόνο εργαλεία με input_schema. Η αναζήτηση στον ιστό δεν είναι εργαλείο σε αυτό το endpoint: ορίστε το πεδίο web_search.
Ο βρόχος εργαλείων περιγράφεται πλήρως στη δική του σελίδα. Κλήση συναρτήσεων
Η απάντηση
| Πεδίο | Τύπος | Περιγραφή | Αποστέλλεται από |
|---|---|---|---|
id | string | msg_ ακολουθούμενο από 32 δεκαεξαδικούς χαρακτήρες. | Όλα τα μοντέλα |
type | string | Πάντα message. | Όλα τα μοντέλα |
role | string | Πάντα assistant. | Όλα τα μοντέλα |
model | string | Το κανονικό id του μοντέλου που απάντησε. | Όλα τα μοντέλα |
content | array | Τα blocks της απάντησης, με αυτή τη σειρά: thinking όταν το μοντέλο συλλογίστηκε, text, και μετά ένα tool_use για κάθε κλήση εργαλείου. | Όλα τα μοντέλα |
stop_reason | string | Γιατί τελείωσε η απάντηση. Δείτε τις τιμές παρακάτω. | Όλα τα μοντέλα |
usage | object | input_tokens και output_tokens. | Όλα τα μοντέλα |
sources | array | Μόνο σε αίτημα με web_search: true του οποίου η αναζήτηση βρήκε κάτι: τα αποτελέσματα που δόθηκαν στο μοντέλο, καθένα με index, title και url. Το [1] στην απάντηση είναι η εγγραφή με index 1. Σε ένα stream έρχεται με το γεγονός message_delta. | shannon-1.6-*, shannon-2-*, οικογένεια Shannon 3 |
usage.cache_read_input_tokens | integer | Το cache_read_input_tokens είναι το μέρος του prompt που διαβάστηκε από το cache· το input_tokens είναι το υπόλοιπο. Το cache_creation_input_tokens είναι πάντα 0. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
Blocks της απάντησης
| Block | Περιγραφή |
|---|---|
{"type": "thinking", "thinking": "…"} | Ο συλλογισμός του μοντέλου. Δεν υπάρχει μέλος signature. |
{"type": "text", "text": "…"} | Το κείμενο της απάντησης. Μπορεί να είναι κενό όταν η απάντηση είναι κλήση εργαλείου. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Μια κλήση εργαλείου. Το input είναι αντικείμενο JSON. Στείλτε πίσω το αποτέλεσμα με το ίδιο id. |
stop_reason
| stop_reason | Περιγραφή | Αποστέλλεται από |
|---|---|---|
end_turn | Το μοντέλο ολοκλήρωσε την απάντησή του ή εμφανίστηκε κάποιο από τα stop_sequences σας. | Όλα τα μοντέλα |
tool_use | Η απάντηση περιέχει μία ή περισσότερες κλήσεις εργαλείου. | Όλα τα μοντέλα |
max_tokens | Η απάντηση κόπηκε στο όριο εξόδου. | Οικογένεια Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, σε streams |
Streaming
Ορίστε το stream σε true για server-sent events. Κάθε frame έχει μια γραμμή event: με το όνομα του συμβάντος και μια γραμμή data: με ένα αντικείμενο JSON που επαναλαμβάνει το όνομα στο type. Οι βοηθοί stream του Anthropic SDK διαβάζουν αυτά τα συμβάντα για εσάς:
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
with client.messages.stream(
model="shannon-3",
max_tokens=1024,
messages=[{"role": "user", "content": "Explain server-sent events in three sentences."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
message = stream.get_final_message()
print()
print(message.stop_reason, message.usage) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const stream = client.messages.stream({
model: "shannon-3",
max_tokens: 1024,
messages: [{ role: "user", content: "Explain server-sent events in three sentences." }],
});
stream.on("text", (text) => process.stdout.write(text));
const message = await stream.finalMessage();
console.log("\n", message.stop_reason, message.usage); curl -N https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"stream": true,
"messages": [{"role": "user", "content": "Explain server-sent events in three sentences."}]
}' Τα συμβάντα, με τη σειρά που φτάνουν:
| Συμβάν | Δεδομένα | Πότε |
|---|---|---|
message_start | message | Πάντα πρώτο. Το message περιέχει το id, τον ρόλο, το μοντέλο, ένα κενό content και ένα usage που ξεκινά από το μηδέν. |
content_block_start | index, content_block | Ανοίγει ένα block. Το content_block είναι ένα κενό block text ή thinking, ή ένα block tool_use με το id και το name του. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | Ένα κομμάτι του συλλογισμού, για ένα block thinking. |
content_block_delta | index, delta {"type": "text_delta", "text"} | Ένα κομμάτι της απάντησης, για ένα block text. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | Τα ορίσματα μιας κλήσης εργαλείου, ολόκληρα σε ένα delta, για ένα block tool_use. |
content_block_stop | index | Το block με αυτό το index ολοκληρώθηκε. |
message_delta | delta {stop_reason, stop_sequence}, usage | Το τέλος της απάντησης: το delta.stop_reason και το usage του αιτήματος. |
message_stop | Πάντα τελευταίο. |
Τα blocks αριθμούνται με το index με τη σειρά που ανοίγουν και ένα block ολοκληρώνεται πριν ανοίξει το επόμενο. Διαβάστε κάθε block από τον τύπο του και όχι από τον αριθμό του: ένα stream μπορεί να ανοίξει πρώτα ένα κενό block text, μετά το block thinking, και να παραδώσει την απάντηση σε ένα μεταγενέστερο block text.
event: message_start
data: {"type":"message_start","message":{"id":"msg_5f0c…","type":"message","role":"assistant","model":"shannon-3","content":[],"usage":{"input_tokens":0,"output_tokens":0}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"Three sentences: what it is, how it is framed, why it is used."}}
event: ping
data: {"type": "ping"}
event: content_block_stop
data: {"type":"content_block_stop","index":1}
event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"Server-sent events let a server push text over one HTTP reply."}}
event: content_block_stop
data: {"type":"content_block_stop","index":2}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":1190,"output_tokens":84}}
event: message_stop
data: {"type":"message_stop"} Keep-alive
| Αποστέλλεται από | Περιγραφή |
|---|---|
Οικογένεια Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Ένα συμβάν ping με δεδομένα {"type": "ping"}, κάθε 15 δευτερόλεπτα. |
| Φιλοξενούμενα μοντέλα ανοιχτών βαρών | Μια γραμμή σχολίου : keepalive, κάθε 15 δευτερόλεπτα όσο εργάζεται το μοντέλο. |
Ένα stream που αποτυγχάνει
Μια αποτυχία μετά την έναρξη του stream είναι ένα συμβάν error με το ίδιο σώμα με μια απάντηση σφάλματος: {"type": "error", "error": {"type", "message"}}. Τα συμβάντα κλεισίματος, message_delta και message_stop, ακολουθούν παρ' όλα αυτά. Θεωρήστε την απάντηση αποτυχημένη και στείλτε ξανά το αίτημα.
Σφάλματα
Τα σφάλματα χρησιμοποιούν το σώμα σφάλματος της Anthropic: το type είναι error και το αντικείμενο error περιέχει ένα type και ένα message. Ο πίνακας απαριθμεί όσα επιστρέφει πιο συχνά αυτό το endpoint. Ο πλήρης κατάλογος, με το τι να δοκιμάσετε ξανά, έχει τη δική του σελίδα. Χειρισμός σφαλμάτων
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Κατάσταση | Τύπος | Μήνυμα | Πότε |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Δεν στάλθηκε κλειδί API ή το κλειδί είναι άγνωστο ή ανακλήθηκε. |
400 | invalid_request_error | unknown model: <id> | Το model δεν είναι id μοντέλου Shannon. |
400 | invalid_request_error | No user message provided | Επίπεδα Shannon: το αίτημα δεν έχει κείμενο χρήστη ούτε tools. |
400 | invalid_request_error | <id> does not accept image input | Στάλθηκε εικόνα σε φιλοξενούμενο μοντέλο ανοιχτών βαρών χωρίς είσοδο εικόνας. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | Λείπει το messages ή ένα πεδίο έχει λάθος τύπο JSON. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | Το max_tokens είναι μεγαλύτερο από όσο απομένει στο υπόλοιπό σας. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Προστασία από υπερφόρτωση: περισσότερα από 120 αιτήματα σε ένα λεπτό στον λογαριασμό σας. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: οι κλήσεις Shannon Coder του πλάνου σας για το τρέχον παράθυρο των 4 ωρών έχουν εξαντληθεί. |
500 | server_error | The model backend failed to answer. Please retry. | Το μοντέλο δεν παρήγαγε απάντηση. Στείλτε ξανά το αίτημα. |
502 | api_error | The model backend failed to answer. Please retry. | Το μοντέλο δεν παρήγαγε απάντηση. Στείλτε ξανά το αίτημα. |
Μέτρηση tokens
Το POST /v1/messages/count_tokens δέχεται το ίδιο σώμα με ένα αίτημα μηνύματος (model, system, messages, tools) και επιστρέφει {"input_tokens": n}: τον αριθμό των tokens εισόδου που θα χρεωνόταν το αίτημα. Μετρά για τα φιλοξενούμενα μοντέλα ανοιχτών βαρών, είναι δωρεάν και δεν προσμετράται στην προστασία από υπερφόρτωση.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
count = client.messages.count_tokens(
model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
system="You are a physics teacher. Answer in two sentences.",
messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
print(count.input_tokens) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const count = await client.messages.countTokens({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
system: "You are a physics teacher. Answer in two sentences.",
messages: [{ role: "user", content: "Why is the sky blue?" }],
});
console.log(count.input_tokens); curl https://api.shannon-ai.com/v1/messages/count_tokens \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"system": "You are a physics teacher. Answer in two sentences.",
"messages": [{"role": "user", "content": "Why is the sky blue?"}]
}'
# {"input_tokens": 31} Η μέτρηση έχει τη δική της σελίδα, με το endpoint απλού κειμένου και τα όρια. Καταμέτρηση tokens