Biller a Fichieren
Schéckt Biller mat enger Message: wéi eng Modeller se huelen, d'akzeptéiert Forme a seng Limiten.
POST https://api.shannon-ai.com/v1/chat/completions
E Bild reest an enger Benotzer-Message mat, als een Deel vun hirem content. D'Beispill liest eng lokal Datei a schéckt se als 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
}
} Wéi eng Modeller Biller huelen
| Modeller | Liest |
|---|---|
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Biller, an Dokumenter: PDF-, Word-, PowerPoint-, Excel- a Plain-Text-Fichieren. |
shannon-1.6-lite, shannon-1.6-pro | Biller. |
shannon-2-lite, shannon-2-pro | Biller, an Ufroen, déi och tools oder response_format schécken. |
Kimi-K3-3BIT-REAP, MiniMax-M3-3BIT-REAP, Kimi-K2.6-W4A16-AUTOROUND-REAP, inkling-W4A16-AUTOROUND-REAP, MiMo-V2.5-W8A16 | Biller. |
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 | Text. Eng Ufro mat engem Bild gëtt mam Status 400 beäntwert. |
shannon-coder-1 | Text. |
GET /v1/models mellt Bild-Input pro ID als capabilities.vision. Modeller a Präisser
- D'Shannon-Modeller liesen d'Fichiere vun der leschter Benotzer-Message. Setzt d'Bild an d'Message, déi doriwwer freet.
- D'Shannon-3-Famill hält och e puer Biller an Dokumenter vu fréiere Benotzer-Messagen am Bléck, wa se inline geschéckt goufen, a liest eng fest Maximalzuel u Biller pro Ufro, vum éischte Bild un gezielt.
- D'Hosted Open-Weight-Modeller liesen d'Biller vun all Message vun der Konversatioun.
Akzeptéiert Formen
Eng Datei gëtt op eng vun zwee Weeër geschéckt: an der Ufro als base64, oder als Adress, déi d'API ofrifft. All Datei reest mat der Ufro mat; d'API huet keen Upload-Endpoint.
| Endpoint | An der Ufro (base64) | Iwwer Adress |
|---|---|---|
/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://…"}} |
Déiselwecht Benotzer-Message an all Format:
{
"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…"
}
}
]
} - Eng Data-URL huet d'Form
data:<media type>;base64,<data>. Den Deel;base64ass erfuerderlech. - Op
/v1/chat/completionsan/v1/responseskaimage_urlde String selwer oder en Objet{"url": "…"}sinn. - Den Dateityp kënnt vun der Data-URL oder vu
media_type. Ouni en gëtt e Bild alsimage/pnggelies. - Inline-Fichieren zielen zur Gréisst vum Body vun der Ufro, deen bis zu 32 MiB grouss däerf sinn.
- Fir d'Kompatibilitéit akzeptéiert:
image_url.detail.
Limite fir Fernfichieren
Wann Dir eng Adress schéckt, rifft d'API d'Datei of, ier de Modell leeft, bannent dëse Limiten:
| Limit | Regel |
|---|---|
| Gréisst | Bis zu 8 MiB pro Datei. |
| Zäit | 20 Sekonne fir ze äntwerten. |
| Weiderleedungen | Héchstens 5. |
| Adress | http:// oder https://, ouni Benotzernumm a Passwuert an der Adress, op engem Host mat enger ëffentlecher Adress. |
| Äntwert vum Host | E Status am 200er-Beräich an e Body, dee net eidel ass. Den Dateityp gëtt aus Content-Type gelies. |
| Ugefrot als | User-Agent: ShannonBot/1.0 (+https://shannon-ai.com) |
Wéi Biller an Tokens zielen
Bei den Hosted Open-Weight-Modeller zielt e Bild een Token fir all 28 × 28 Pixel grousse Patch: d'Breet gedeelt duerch 28, opgerënnt, mol d'Héicht gedeelt duerch 28, opgerënnt. D'Resultat ass en Deel vun usage.prompt_tokens a gëtt als Input berechent.
- 1024 × 1024
- 1,369 Tokens
- 1920 × 1080
- 2,691 Tokens
- 512 × 512
- 361 Tokens
- E Bild vun enger Adress gëtt fir d'éischt ofgeruff, dofir gëtt seng richteg Gréisst gezielt.
- E Bild, dat seng Gréisst net gelies ka ginn, zielt 1,024 Tokens.
- D'Zielendpoints benotzen déiselwecht Regel fir Data-URLen. Si rufen keng Fernadress of a zielen se als 1,024 Tokens. Tokenzielung
- Bei engem Shannon-Modell liest aus
usagean der Äntwert of, wat eng Ufro mat Biller kascht huet.
Dokumenter an aner Fichieren
D'Shannon-3-Famill (shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro) liest och Dokumenter. Den Text vum Dokument gëtt erausgeholl an zesumme mat Ärer Message dem Modell ginn.
| Dokument | Medietyp |
|---|---|
application/pdf | |
| Word | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| PowerPoint | application/vnd.openxmlformats-officedocument.presentationml.presentation |
| Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
E Dokument ass en Deel vun der Benotzer-Message, wéi e Bild:
| Endpoint | An der Ufro (base64) | Iwwer Adress |
|---|---|---|
/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."}
]
}
]
} - Gitt de richtegen Medietyp vun der Datei un. Ouni en gëtt e Dokument als
application/pdfgelies. - Eng Plain-Text-Datei, wéi CSV, gëtt als Text gelies a op déiselwecht Manéier ugehaangen.
- Wann e Dokument net gelies ka ginn, oder d'Datei vun engem anere Typ ass, gëtt dat dem Modell gesot, an en ka et a senger Äntwert soen. De Status ass trotzdem
200. - Bei all anere Modell gëtt en Dokument-Deel aus deem erausgelooss, wat de Modell liest, an d'Ufro gëtt aus dem Rescht beäntwert.
- E Dokument, dat iwwer eng Adress geschéckt gëtt, gëtt ënner de Limite fir Fernfichieren hei uewen ofgeruff.
Feeler
| Status | Typ | Message | Wéini |
|---|---|---|---|
400 | invalid_request_error | <id> does not accept image input | E Bild gouf un en Hosted Open-Weight-Modell geschéckt, dee just Text hëlt. Et gëtt näischt aus Ärem Solde ofgezunn. |
400 | invalid_request_error | audio and video input are not supported by any hosted model | En Audio- oder Video-Deel gouf un en Hosted Open-Weight-Modell geschéckt. |
413 | invalid_request_error | Failed to buffer the request body: … | De Body vun der Ufro ass mat senge Inline-Fichieren méi grouss wéi 32 MiB. De Feeler enthält code: "request_too_large". |
E Shannon-Modell äntwert mam Status 200, egal wéi eng Fichieren d'Ufro enthält: en Deel, deen en net liest, gëtt erausgelooss. Feelerbehandlung