इमेज और फ़ाइलें
संदेश के साथ इमेज भेजें: कौन से मॉडल उन्हें लेते हैं, स्वीकार किए जाने वाले रूप और उनकी सीमाएँ।
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 परिवार, इनलाइन भेजे गए पिछले यूज़र संदेशों की कुछ इमेज और दस्तावेज़ भी नज़र में रखता है, और प्रति अनुरोध इमेज की एक तय अधिकतम संख्या पढ़ता है, जो पहली इमेज से गिनी जाती है।
- होस्टेड ओपन-वेट मॉडल बातचीत के हर संदेश की इमेज पढ़ते हैं।
स्वीकार किए जाने वाले रूप
फ़ाइल दो तरीकों में से एक से भेजी जाती है: अनुरोध के भीतर 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स्ट्रिंग खुद हो सकता है या ऑब्जेक्ट{"url": "…"}।- फ़ाइल का प्रकार data 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) |
इमेज टोकन में कैसे गिनी जाती हैं
होस्टेड ओपन-वेट मॉडल पर इमेज का हर 28 × 28 पिक्सेल पैच एक टोकन गिना जाता है: चौड़ाई को 28 से भाग देकर ऊपर की ओर पूर्णांक करें, फिर ऊँचाई को 28 से भाग देकर ऊपर की ओर पूर्णांक करें, और दोनों को गुणा करें। यह परिणाम usage.prompt_tokens का हिस्सा है और इनपुट के रूप में बिल होता है।
- 1024 × 1024
- 1,369 टोकन
- 1920 × 1080
- 2,691 टोकन
- 512 × 512
- 361 टोकन
- रिमोट इमेज पहले लाई जाती है, इसलिए उसका असली आकार गिना जाता है।
- जिस इमेज का आकार पढ़ा नहीं जा सकता, वह 1,024 टोकन गिनी जाती है।
- गिनती वाले endpoints data 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 |
दस्तावेज़ यूज़र संदेश का एक भाग है, इमेज की तरह:
| 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: … | इनलाइन फ़ाइलों सहित अनुरोध बॉडी 32 MiB से बड़ी है। त्रुटि में code: "request_too_large" होता है। |
Shannon मॉडल अनुरोध में कोई भी फ़ाइल हो, स्टेटस 200 से उत्तर देता है: जो भाग वह नहीं पढ़ता उसे छोड़ दिया जाता है। त्रुटि प्रबंधन