Εικόνες και αρχεία
Στείλτε εικόνες μαζί με ένα μήνυμα: ποια μοντέλα τις δέχονται, οι αποδεκτές μορφές και τα όριά τους.
POST https://api.shannon-ai.com/v1/chat/completions
Μια εικόνα ταξιδεύει μέσα σε ένα μήνυμα χρήστη, ως ένα μέρος του content του. Το παράδειγμα διαβάζει ένα τοπικό αρχείο και το στέλνει ως data URL.
import base64
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")
with open("photo.jpg", "rb") as f:
image = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="shannon-3",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What is in this picture?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64," + image}},
],
}],
)
print(response.choices[0].message.content) import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1" });
const image = fs.readFileSync("photo.jpg").toString("base64");
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{
role: "user",
content: [
{ type: "text", text: "What is in this picture?" },
{ type: "image_url", image_url: { url: "data:image/jpeg;base64," + image } },
],
}],
});
console.log(response.choices[0].message.content); # Linux: base64 -w0 photo.jpg macOS: base64 -i photo.jpg
IMAGE=$(base64 -w0 photo.jpg)
curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<EOF
{
"model": "shannon-3",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "What is in this picture?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,${IMAGE}"}}
]
}]
}
EOF {
"id": "chatcmpl-8d1f3a5c7e9b4d2f6a8c0e2b4d6f8a1c",
"object": "chat.completion",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A grey cat asleep on a windowsill, with a potted fern beside it.",
"reasoning_content": null
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 286,
"completion_tokens": 19,
"total_tokens": 305
}
} Ποια μοντέλα δέχονται εικόνες
| Μοντέλα | Διαβάζει |
|---|---|
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Εικόνες και έγγραφα: PDF, Word, PowerPoint, Excel και αρχεία απλού κειμένου. |
shannon-1.6-lite, shannon-1.6-pro | Εικόνες. |
shannon-2-lite, shannon-2-pro | Εικόνες, σε αιτήματα που στέλνουν επίσης tools ή response_format. |
Kimi-K3-3BIT-REAP, MiniMax-M3-3BIT-REAP, Kimi-K2.6-W4A16-AUTOROUND-REAP, inkling-W4A16-AUTOROUND-REAP, MiMo-V2.5-W8A16 | Εικόνες. |
DeepSeek-V4-Pro-0813-3BIT-REAP, GLM-5.2-3BIT-REAP, Nemotron3Ultra-3BIT-REAP, DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP, Laguna-S-2.1-W4A16-AUTOROUND-REAP, MiMo-V2.5-Pro-W8A16, Hy3-W8A16 | Κείμενο. Ένα αίτημα με εικόνα απαντάται με κατάσταση 400. |
shannon-coder-1 | Κείμενο. |
Το GET /v1/models αναφέρει την είσοδο εικόνας ανά id ως capabilities.vision. Μοντέλα & τιμές
- Τα μοντέλα Shannon διαβάζουν τα αρχεία του τελευταίου μηνύματος χρήστη. Βάλτε την εικόνα στο μήνυμα που ρωτά γι' αυτήν.
- Η οικογένεια Shannon 3 κρατά επίσης σε ορατότητα λίγες εικόνες και έγγραφα από προηγούμενα μηνύματα χρήστη όταν στάλθηκαν inline, και διαβάζει έναν καθορισμένο μέγιστο αριθμό εικόνων ανά αίτημα, μετρώντας από την πρώτη.
- Τα φιλοξενούμενα μοντέλα ανοιχτών βαρών διαβάζουν τις εικόνες κάθε μηνύματος της συνομιλίας.
Αποδεκτές μορφές
Ένα αρχείο στέλνεται με έναν από δύο τρόπους: μέσα στο αίτημα ως base64, ή ως διεύθυνση που ανακτά το API. Κάθε αρχείο ταξιδεύει με το αίτημα· το API δεν έχει endpoint μεταφόρτωσης.
| Endpoint | Μέσα στο αίτημα (base64) | Με διεύθυνση |
|---|---|---|
/v1/chat/completions | {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,…"}} | {"type": "image_url", "image_url": {"url": "https://…"}} |
/v1/responses | {"type": "input_image", "image_url": "data:image/jpeg;base64,…"} | {"type": "input_image", "image_url": "https://…"} |
/v1/messages | {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": "…"}} | {"type": "image", "source": {"type": "url", "url": "https://…"}} |
Το ίδιο μήνυμα χρήστη σε κάθε μορφή:
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this picture?"},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD…"
}
}
]
} {
"role": "user",
"content": [
{"type": "input_text", "text": "What is in this picture?"},
{
"type": "input_image",
"image_url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD…"
}
]
} {
"role": "user",
"content": [
{"type": "text", "text": "What is in this picture?"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "/9j/4AAQSkZJRgABAQAAAQABAAD…"
}
}
]
} - Ένα data URL έχει τη μορφή
data:<media type>;base64,<data>. Το τμήμα;base64είναι υποχρεωτικό. - Στα
/v1/chat/completionsκαι/v1/responses, τοimage_urlμπορεί να είναι το ίδιο το string ή αντικείμενο{"url": "…"}. - Ο τύπος του αρχείου προκύπτει από το data URL ή από το
media_type. Χωρίς αυτόν, μια εικόνα διαβάζεται ωςimage/png. - Τα inline αρχεία προσμετρούνται στο μέγεθος του σώματος του αιτήματος, που μπορεί να φτάσει τα 32 MiB.
- Γίνεται δεκτό για συμβατότητα:
image_url.detail.
Όρια για απομακρυσμένα αρχεία
Όταν στέλνετε διεύθυνση, το API ανακτά το αρχείο πριν τρέξει το μοντέλο, μέσα σε αυτά τα όρια:
| Όριο | Κανόνας |
|---|---|
| Μέγεθος | Έως 8 MiB ανά αρχείο. |
| Χρόνος | 20 δευτερόλεπτα για να απαντήσει. |
| Ανακατευθύνσεις | Το πολύ 5. |
| Διεύθυνση | http:// ή https://, χωρίς όνομα χρήστη ή κωδικό στη διεύθυνση, σε host με δημόσια διεύθυνση. |
| Απάντηση του host | Κατάσταση στο εύρος 200 και σώμα που δεν είναι κενό. Ο τύπος του αρχείου διαβάζεται από το Content-Type. |
| Ζητείται ως | User-Agent: ShannonBot/1.0 (+https://shannon-ai.com) |
Πώς μετρούν οι εικόνες σε tokens
Στα φιλοξενούμενα μοντέλα ανοιχτών βαρών, μια εικόνα μετρά ένα token για κάθε τμήμα 28 × 28 pixel: το πλάτος διά 28, στρογγυλεμένο προς τα πάνω, επί το ύψος διά 28, στρογγυλεμένο προς τα πάνω. Το αποτέλεσμα είναι μέρος του usage.prompt_tokens και χρεώνεται ως είσοδος.
- 1024 × 1024
- 1,369 tokens
- 1920 × 1080
- 2,691 tokens
- 512 × 512
- 361 tokens
- Μια απομακρυσμένη εικόνα ανακτάται πρώτα, οπότε μετράται το πραγματικό της μέγεθος.
- Μια εικόνα της οποίας το μέγεθος δεν μπορεί να διαβαστεί μετρά 1,024 tokens.
- Τα endpoints μέτρησης εφαρμόζουν τον ίδιο κανόνα για τα data URLs. Δεν ανακτούν απομακρυσμένη διεύθυνση και την μετρούν ως 1,024 tokens. Καταμέτρηση tokens
- Για ένα μοντέλο Shannon, διαβάστε το κόστος ενός αιτήματος με εικόνες από το
usageτης απάντησης.
Έγγραφα και άλλα αρχεία
Η οικογένεια Shannon 3 (shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro) διαβάζει και έγγραφα. Το κείμενο του εγγράφου εξάγεται και δίνεται στο μοντέλο μαζί με το μήνυμά σας.
| Έγγραφο | Τύπος μέσου |
|---|---|
application/pdf | |
| Word | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| PowerPoint | application/vnd.openxmlformats-officedocument.presentationml.presentation |
| Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
Ένα έγγραφο είναι μέρος του μηνύματος χρήστη, όπως μια εικόνα:
| Endpoint | Μέσα στο αίτημα (base64) | Με διεύθυνση |
|---|---|---|
/v1/chat/completions, /v1/messages | {"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | {"type": "document", "source": {"type": "url", "url": "https://…"}} |
/v1/responses | {"type": "input_file", "file_data": "data:application/pdf;base64,…"} | {"type": "input_file", "file_url": "https://…"} |
{
"model": "shannon-3",
"messages": [
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": "JVBERi0xLjcKJeLjz9MK…"
}
},
{"type": "text", "text": "Summarise this report in five points."}
]
}
]
} {
"model": "shannon-3",
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"file_data": "data:application/pdf;base64,JVBERi0xLjcKJeLjz9MK…"
},
{
"type": "input_text",
"text": "Summarise this report in five points."
}
]
}
]
} {
"model": "shannon-3",
"messages": [
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": "JVBERi0xLjcKJeLjz9MK…"
}
},
{"type": "text", "text": "Summarise this report in five points."}
]
}
]
} - Δώστε τον πραγματικό τύπο μέσου του αρχείου. Χωρίς αυτόν, ένα έγγραφο διαβάζεται ως
application/pdf. - Ένα αρχείο απλού κειμένου, όπως το CSV, διαβάζεται ως κείμενο και επισυνάπτεται με τον ίδιο τρόπο.
- Όταν ένα έγγραφο δεν μπορεί να διαβαστεί ή το αρχείο είναι άλλου τύπου, το μοντέλο ενημερώνεται και μπορεί να το πει στην απάντησή του. Η κατάσταση παραμένει
200. - Σε κάθε άλλο μοντέλο, ένα μέρος εγγράφου παραλείπεται από όσα διαβάζει το μοντέλο, και το αίτημα απαντάται από τα υπόλοιπα.
- Ένα έγγραφο που στέλνεται με διεύθυνση ανακτάται με τα όρια για απομακρυσμένα αρχεία παραπάνω.
Σφάλματα
| Κατάσταση | Τύπος | Μήνυμα | Πότε |
|---|---|---|---|
400 | invalid_request_error | <id> does not accept image input | Στάλθηκε εικόνα σε φιλοξενούμενο μοντέλο ανοιχτών βαρών που δέχεται μόνο κείμενο. Τίποτα δεν αφαιρείται από το υπόλοιπό σας. |
400 | invalid_request_error | audio and video input are not supported by any hosted model | Στάλθηκε μέρος ήχου ή βίντεο σε φιλοξενούμενο μοντέλο ανοιχτών βαρών. |
413 | invalid_request_error | Failed to buffer the request body: … | Το σώμα του αιτήματος, μαζί με τα inline αρχεία του, είναι μεγαλύτερο από 32 MiB. Το σφάλμα φέρει code: "request_too_large". |
Ένα μοντέλο Shannon απαντά με κατάσταση 200 όποια αρχεία κι αν φέρει το αίτημα: ένα μέρος που δεν διαβάζει παραλείπεται. Χειρισμός σφαλμάτων