Beelde en lêers
Stuur beelde saam met 'n boodskap: watter modelle dit aanvaar, die aanvaarde vorme en hul perke.
POST https://api.shannon-ai.com/v1/chat/completions
'n Beeld reis binne 'n gebruikersboodskap, as een deel van sy content. Die voorbeeld lees 'n plaaslike lêer en stuur dit as 'n 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
}
} Watter modelle beelde aanvaar
| Modelle | Lees |
|---|---|
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Beelde, en dokumente: PDF-, Word-, PowerPoint-, Excel- en gewone-teks-lêers. |
shannon-1.6-lite, shannon-1.6-pro | Beelde. |
shannon-2-lite, shannon-2-pro | Beelde, in versoeke wat ook tools of response_format stuur. |
Kimi-K3-3BIT-REAP, MiniMax-M3-3BIT-REAP, Kimi-K2.6-W4A16-AUTOROUND-REAP, inkling-W4A16-AUTOROUND-REAP, MiMo-V2.5-W8A16 | Beelde. |
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 | Teks. 'n Versoek met 'n beeld word met status 400 beantwoord. |
shannon-coder-1 | Teks. |
GET /v1/models meld beeldinset per id as capabilities.vision. Modelle en pryse
- Die Shannon-modelle lees die lêers van die laaste gebruikersboodskap. Sit die beeld in die boodskap wat daaroor vra.
- Die Shannon 3-familie hou ook 'n paar beelde en dokumente van vroeëre gebruikersboodskappe in sig wanneer hulle inlyn gestuur is, en lees 'n vasgestelde maksimum getal beelde per versoek, getel vanaf die eerste.
- Die gehuisveste oopgewig-modelle lees die beelde van elke boodskap in die gesprek.
Aanvaarde vorme
'n Lêer word op een van twee maniere gestuur: binne die versoek as base64, of as 'n adres wat die API haal. Elke lêer reis saam met die versoek; die API het geen oplaai-eindpunt nie.
| Eindpunt | In die versoek (base64) | Per adres |
|---|---|---|
/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://…"}} |
Dieselfde gebruikersboodskap in elke formaat:
{
"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…"
}
}
]
} - 'n Data-URL het die vorm
data:<media type>;base64,<data>. Die;base64-deel is vereis. - Op
/v1/chat/completionsen/v1/responseskanimage_urldie string self wees of 'n objek{"url": "…"}. - Die lêertipe kom uit die data-URL of uit
media_type. Sonder een word 'n beeld asimage/pnggelees. - Inlyn-lêers tel by die grootte van die versoekliggaam, wat tot 32 MiB kan wees.
- Aanvaar vir versoenbaarheid:
image_url.detail.
Perke vir afgeleë lêers
Wanneer jy 'n adres stuur, haal die API die lêer voordat die model loop, binne hierdie perke:
| Perk | Reël |
|---|---|
| Grootte | Tot 8 MiB per lêer. |
| Tyd | 20 sekondes om te antwoord. |
| Aanstuurings | Hoogstens 5. |
| Adres | http:// of https://, sonder 'n gebruikersnaam of wagwoord in die adres, op 'n gasheer met 'n openbare adres. |
| Antwoord van die gasheer | 'n Status in die 200-reeks en 'n liggaam wat nie leeg is nie. Die lêertipe word uit Content-Type gelees. |
| Aangevra as | User-Agent: ShannonBot/1.0 (+https://shannon-ai.com) |
Hoe beelde in tokens tel
Op die gehuisveste oopgewig-modelle tel 'n beeld een token vir elke 28 × 28 piksel-blok: die wydte gedeel deur 28, opwaarts afgerond, maal die hoogte gedeel deur 28, opwaarts afgerond. Die resultaat is deel van usage.prompt_tokens en word as inset gefaktureer.
- 1024 × 1024
- 1,369 tokens
- 1920 × 1080
- 2,691 tokens
- 512 × 512
- 361 tokens
- 'n Afgeleë beeld word eers gehaal, so sy werklike grootte word getel.
- 'n Beeld waarvan die grootte nie gelees kan word nie, tel 1,024 tokens.
- Die telling-eindpunte gebruik dieselfde reël vir data-URL's. Hulle haal nie 'n afgeleë adres nie en tel dit as 1,024 tokens. Tokens tel
- Vir 'n Shannon-model, lees wat 'n versoek met beelde gekos het uit
usagein die antwoord.
Dokumente en ander lêers
Die Shannon 3-familie (shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro) lees ook dokumente. Die teks van die dokument word uitgehaal en saam met jou boodskap aan die model gegee.
| Dokument | Mediatipe |
|---|---|
application/pdf | |
| Word | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| PowerPoint | application/vnd.openxmlformats-officedocument.presentationml.presentation |
| Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
'n Dokument is 'n deel van die gebruikersboodskap, soos 'n beeld:
| Eindpunt | In die versoek (base64) | Per adres |
|---|---|---|
/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."}
]
}
]
} - Gee die werklike mediatipe van die lêer. Sonder een word 'n dokument as
application/pdfgelees. - 'n Gewone-teks-lêer, soos CSV, word as teks gelees en op dieselfde manier aangeheg.
- Wanneer 'n dokument nie gelees kan word nie, of die lêer van 'n ander tipe is, word die model dit meegedeel en kan dit in sy antwoord sê. Die status is steeds
200. - Op elke ander model word 'n dokumentdeel uit wat die model lees gelaat, en die versoek word uit die res beantwoord.
- 'n Dokument wat per adres gestuur word, word gehaal onder die perke vir afgeleë lêers hierbo.
Foute
| Status | Tipe | Boodskap | Wanneer |
|---|---|---|---|
400 | invalid_request_error | <id> does not accept image input | 'n Beeld is gestuur na 'n gehuisveste oopgewig-model wat net teks aanvaar. Niks word van jou balans afgetrek nie. |
400 | invalid_request_error | audio and video input are not supported by any hosted model | 'n Oudio- of video-deel is na 'n gehuisveste oopgewig-model gestuur. |
413 | invalid_request_error | Failed to buffer the request body: … | Die versoekliggaam, met sy inlyn-lêers, is groter as 32 MiB. Die fout dra code: "request_too_large". |
'n Shannon-model antwoord met status 200 watter lêers die versoek ook al dra: 'n deel wat dit nie lees nie, word uitgelaat. Fouthantering