इमेज आणि फाइल्स
संदेशासोबत इमेज पाठवा: कोणती मॉडेल्स त्या घेतात, स्वीकारले जाणारे प्रकार आणि त्यांच्या मर्यादा.
POST https://api.shannon-ai.com/v1/chat/completions
इमेज युजर संदेशात, त्याच्या content चा एक भाग म्हणून जाते. नमुना स्थानिक फाइल वाचतो आणि डेटा 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 कुटुंब आधीच्या युजर संदेशांतील काही इमेज आणि दस्तऐवज इनलाइन पाठवले असल्यास ते देखील नजरेसमोर ठेवते, आणि प्रत्येक रिक्वेस्टमध्ये पहिल्यापासून मोजून ठरावीक कमाल इमेज वाचते.
- होस्ट केलेली open-weight मॉडेल्स संभाषणातील प्रत्येक संदेशाच्या इमेज वाचतात.
स्वीकारले जाणारे प्रकार
फाइल दोन प्रकारे पाठवली जाते: रिक्वेस्टमध्ये base64 म्हणून, किंवा API आणणाऱ्या पत्त्याच्या स्वरूपात. प्रत्येक फाइल रिक्वेस्टसोबतच प्रवास करते; API ला अपलोड एंडपॉइंट नाही.
| एंडपॉइंट | रिक्वेस्टमध्ये (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…"
}
}
]
} - डेटा URL चे स्वरूप
data:<media type>;base64,<data>असे आहे.;base64भाग आवश्यक आहे. /v1/chat/completionsआणि/v1/responsesवरimage_urlहा स्वतः स्ट्रिंग किंवा{"url": "…"}ऑब्जेक्ट असू शकतो.- फाइलचा प्रकार डेटा URL वरून किंवा
media_typeवरून येतो. तो नसल्यास इमेजimage/pngम्हणून वाचली जाते. - इनलाइन फाइल्स रिक्वेस्ट बॉडीच्या आकारात मोजल्या जातात, जी 32 MiB पर्यंत असू शकते.
- सुसंगततेसाठी स्वीकारले जाते:
image_url.detail.
रिमोट फाइल्ससाठी मर्यादा
तुम्ही पत्ता पाठवता तेव्हा API मॉडेल चालण्यापूर्वी या मर्यादांमध्ये फाइल आणते:
| मर्यादा | नियम |
|---|---|
| आकार | प्रत्येक फाइलसाठी 8 MiB पर्यंत. |
| वेळ | उत्तर देण्यासाठी 20 सेकंद. |
| रीडायरेक्ट्स | जास्तीत जास्त 5. |
| पत्ता | http:// किंवा https://, पत्त्यात युजर नाव किंवा पासवर्ड नसलेला, सार्वजनिक पत्ता असलेल्या होस्टवर. |
| होस्टचे उत्तर | 200 श्रेणीतील स्टेटस आणि रिकामी नसलेली बॉडी. फाइलचा प्रकार Content-Type वरून वाचला जातो. |
| या नावाने मागितले | User-Agent: ShannonBot/1.0 (+https://shannon-ai.com) |
इमेज टोकन्समध्ये कशा मोजल्या जातात
होस्ट केलेल्या open-weight मॉडेल्सवर इमेज प्रत्येक 28 × 28 पिक्सेल पॅचसाठी एक टोकन मोजली जाते: रुंदी भागिले 28 (वर पूर्णांकित) गुणिले उंची भागिले 28 (वर पूर्णांकित). निकाल usage.prompt_tokens चा भाग असतो आणि इनपुट म्हणून बिल केला जातो.
- 1024 × 1024
- 1,369 टोकन्स
- 1920 × 1080
- 2,691 टोकन्स
- 512 × 512
- 361 टोकन्स
- रिमोट इमेज आधी आणली जाते, म्हणून तिचा खरा आकार मोजला जातो.
- ज्या इमेजचा आकार वाचता येत नाही ती 1,024 टोकन्स म्हणून मोजली जाते.
- मोजणी एंडपॉइंट्स डेटा URL साठी हाच नियम वापरतात. ते रिमोट पत्ता आणत नाहीत आणि तो 1,024 टोकन्स म्हणून मोजतात. टोकन मोजणी
- 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 |
दस्तऐवज इमेजप्रमाणेच युजर संदेशाचा एक भाग असतो:
| एंडपॉइंट | रिक्वेस्टमध्ये (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 | फक्त मजकूर घेणाऱ्या होस्ट केलेल्या open-weight मॉडेलला इमेज पाठवली. तुमच्या बॅलन्समधून काहीही वजा होत नाही. |
400 | invalid_request_error | audio and video input are not supported by any hosted model | होस्ट केलेल्या open-weight मॉडेलला ऑडिओ किंवा व्हिडिओ भाग पाठवला. |
413 | invalid_request_error | Failed to buffer the request body: … | इनलाइन फाइल्ससह रिक्वेस्ट बॉडी 32 MiB पेक्षा मोठी आहे. त्रुटीमध्ये code: "request_too_large" असते. |
रिक्वेस्टमध्ये कोणत्याही फाइल्स असल्या तरी Shannon मॉडेल स्टेटस 200 देते: जो भाग ते वाचत नाही तो वगळला जातो. त्रुटी हाताळणी