Chat Completions
POST /v1/chat/completions संभाषण घेतो आणि OpenAI Chat Completions फॉरमॅटमध्ये मॉडेलचा पुढचा संदेश परत करतो. कोणत्याही OpenAI SDK मधून किंवा साध्या HTTP वरून वापरा; हे पान फील्डनुसार संदर्भ आहे.
POST https://api.shannon-ai.com/v1/chat/completions
सर्वात लहान रिक्वेस्ट म्हणजे मॉडेल id आणि एक user संदेश.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
response = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(response.choices[0].message.content) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
console.log(response.choices[0].message.content); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' उत्तर हा एक JSON ऑब्जेक्ट आहे:
{
"id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
"object": "chat.completion",
"created": 1791625200,
"model": "shannon-3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello, it is good to meet you.",
"reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1184,
"completion_tokens": 46,
"total_tokens": 1230
}
} हेडर
रिक्वेस्ट हेडर
| हेडर | व्हॅल्यू | वर्णन |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | तुमची API की. प्रत्येक एंडपॉइंटवर त्याऐवजी x-api-key: YOUR_API_KEY स्वीकारले जाते. |
Content-Type | application/json | आवश्यक. इतर कोणतीही व्हॅल्यू 415 परत करते. |
x-request-id | ऐच्छिक. रिक्वेस्टसाठी तुमचा स्वतःचा id. तो उत्तरात तसाच परत येतो. |
उत्तर हेडर
| हेडर | वर्णन |
|---|---|
x-request-id | प्रत्येक उत्तरावर, एरर आणि स्ट्रीमसह: तुम्ही पाठवलेली व्हॅल्यू, किंवा काहीही न पाठवल्यास 12 हेक्साडेसिमल अक्षरे. समस्या कळवताना ती नमूद करा. |
content-type | application/json, किंवा stream true असताना text/event-stream. |
रिक्वेस्ट फील्ड्स
फक्त messages आवश्यक आहे. लागू करणारे स्तंभ ज्या मॉडेल्सवर फील्ड उत्तर बदलते त्यांची नावे देतो. होस्ट केलेली open-weight मॉडेल्स म्हणजे मॉडेल यादीतील बारा id; Shannon 3 कुटुंब म्हणजे shannon-3, shannon-3-pro, shannon-3.1 आणि shannon-3.1-pro. मॉडेल्स आणि किंमत
| फील्ड | प्रकार | डिफॉल्ट | वर्णन | लागू करणारे |
|---|---|---|---|---|
model | string | shannon-1.6-lite | उत्तर देणारे मॉडेल: मॉडेल यादीतील एक id. प्रत्येक रिक्वेस्टसोबत पाठवा. जुळवताना अक्षरांचा केस (मोठे/लहान) विचारात घेतला जात नाही. जाहीर नसलेला id 400 unknown model परत करतो. | सर्व मॉडेल्स |
messages | array | आवश्यक. संभाषण, सर्वात जुना संदेश आधी. खाली संदेश पहा. | सर्व मॉडेल्स | |
stream | boolean | false | true उत्तर लिहिले जात असताना सर्व्हर-सेंट इव्हेंट्स म्हणून पाठवते. | सर्व मॉडेल्स |
max_tokens | integer | 4096 | उत्तराची कमाल मर्यादा, टोकन्समध्ये. 1 ते 65,536 बाहेरील व्हॅल्यू त्या श्रेणीत आणली जाते. रिक्वेस्ट चालू असताना तुमच्या बॅलन्समधून बाजूला ठेवली जाणारी ही रक्कम देखील आहे. खाली आउटपुटची लांबी पहा. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens सारखेच. दोन्ही पाठवल्यास max_tokens वापरले जाते. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | सॅम्पलिंग टेंपरेचर. होस्ट केलेल्या open-weight मॉडेल्सवर डिफॉल्ट 1 आहे आणि व्हॅल्यू 0 ते 2 च्या दरम्यान ठेवल्या जातात. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | न्यूक्लियस सॅम्पलिंग. व्हॅल्यू 0 ते 1 च्या दरम्यान ठेवल्या जातात. | होस्ट केलेली open-weight मॉडेल्स |
seed | integer | सॅम्प्लरचा सीड, कोणताही पूर्णांक. तो नसल्यास सीड मॉडेल आणि संभाषणावरून ठरतो, त्यामुळे तीच रिक्वेस्ट दोनदा पाठवल्यास तोच सीड वापरला जातो. | होस्ट केलेली open-weight मॉडेल्स | |
stop | string | array | एक स्ट्रिंग किंवा स्ट्रिंग्जची अॅरे. जास्तीत जास्त 4 वापरल्या जातात. दिसणाऱ्या पहिल्या स्ट्रिंगच्या आधी उत्तर संपते; स्टॉप मजकूर स्वतः परत केला जात नाही. | होस्ट केलेली open-weight मॉडेल्स | |
reasoning_effort | string | high | उत्तर देण्यापूर्वी मॉडेल किती रीझनिंग करते: off, low, medium किंवा high. none आणि minimal म्हणजे off, default म्हणजे medium, max म्हणजे high. इतर कोणतीही व्हॅल्यू 400 परत करते. | होस्ट केलेली open-weight मॉडेल्स |
reasoning | object | तीच सेटिंग ऑब्जेक्ट रूपात: {"effort": "low"}. दोन्ही पाठवल्यास reasoning_effort वापरले जाते. | होस्ट केलेली open-weight मॉडेल्स | |
tools | array | मॉडेल कॉल करू शकणारी फंक्शन्स, प्रत्येक {"type": "function", "function": {"name", "description", "parameters"}} म्हणून. मॉडेलचे कॉल्स tool_calls मध्ये परत येतात; तुमचा कोड ते चालवतो. | सर्व मॉडेल्स | |
tool_choice | string | object | auto | "auto" मॉडेलला ठरवू देते. "required" त्याला टूल कॉल करायला लावते. {"type": "function", "function": {"name": "…"}} त्याला तेच टूल कॉल करायला लावते. | होस्ट केलेली open-weight मॉडेल्स |
response_format | object | JSON उत्तरासाठी {"type": "json_object"}, किंवा तुमच्या स्कीमाचे पालन करणाऱ्या उत्तरासाठी {"type": "json_schema", "json_schema": {…}}. | सर्व Shannon टियर्स; होस्ट केलेली open-weight मॉडेल्स प्रत्येक id नुसार यादीत दिल्याप्रमाणे | |
web_search | boolean | false | true मॉडेलला उत्तर देण्यापूर्वी वेबवर शोधू देते. | shannon-1.6-*, shannon-2-*, Shannon 3 कुटुंब |
इतर OpenAI फील्ड्स, जसे की n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store आणि prompt_cache_key, विद्यमान क्लायंट कोड न बदलता चालावा म्हणून स्वीकारली जातात. ती उत्तर बदलत नाहीत: नेहमी एकच choice असते, आणि स्ट्रीम नेहमी usage सह संपतो.
चुकीचा JSON प्रकार असलेले फील्ड, उदाहरणार्थ "max_tokens": "100", 422 परत करते. messages नसलेली रिक्वेस्टही.
टूल्स, स्ट्रक्चर्ड आउटपुट, रीझनिंग आणि वेब सर्च यांची प्रत्येकी स्वतंत्र पाने आहेत: फंक्शन कॉलिंग, संरचित आउटपुट्स, रीझनिंग effort, Built‑in Web Search.
पर्यायांसह रिक्वेस्ट
ही रिक्वेस्ट system संदेश, सॅम्पलिंग फील्ड्स आणि रीझनिंग effort सेट करते. ती होस्ट केलेले open-weight मॉडेल वापरते, जे सर्व लागू करते.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
response = client.chat.completions.create(
model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages=[
{"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
{"role": "user", "content": "Why is the sky blue?"},
],
max_tokens=512,
temperature=0.3,
top_p=0.9,
seed=7,
stop=["\n\n"],
reasoning_effort="low",
)
message = response.choices[0].message
print(message.reasoning_content) # the reasoning
print(message.content) # the answer
print(response.usage) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.chat.completions.create({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages: [
{ role: "system", content: "You are a physics teacher. Answer in two sentences." },
{ role: "user", content: "Why is the sky blue?" },
],
max_tokens: 512,
temperature: 0.3,
top_p: 0.9,
seed: 7,
stop: ["\n\n"],
reasoning_effort: "low",
});
const message = response.choices[0].message;
console.log(message.reasoning_content); // the reasoning
console.log(message.content); // the answer
console.log(response.usage); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"messages": [
{"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
{"role": "user", "content": "Why is the sky blue?"}
],
"max_tokens": 512,
"temperature": 0.3,
"top_p": 0.9,
"seed": 7,
"stop": ["\n\n"],
"reasoning_effort": "low"
}' उत्तराची रचना वरीलप्रमाणेच आहे. होस्ट केलेल्या open-weight मॉडेल्सवर त्याच्या usage मध्ये दोन तपशील जोडले जातात: कॅशमधून वाचलेले प्रॉम्प्ट टोकन्स आणि रीझनिंगवर खर्च झालेले टोकन्स.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} आउटपुटची लांबी
max_tokens दोन गोष्टी करते. पहिली, रिक्वेस्ट सुरू होताना तुमच्या बॅलन्समधून बाजूला ठेवल्या जाणाऱ्या टोकन्सची ही संख्या आहे. उत्तर पूर्ण झाल्यावर ती रक्कम रिक्वेस्टने वापरलेल्या टोकन्सने बदलली जाते. max_tokens तुमच्या बॅलन्समध्ये उरलेल्या रकमेपेक्षा मोठे असल्यास, उत्तर स्वतः बसले असते तरीही रिक्वेस्ट 429 Quota exceeded परत करते. कमी बाजूला ठेवण्यासाठी कमी max_tokens पाठवा.
shannon-coder-1 या एंडपॉइंटवर वेगळ्या पद्धतीने मोजले जाते: प्रत्येक रिक्वेस्ट तुमच्या प्लॅनचा एक Shannon Coder कॉल असते, आणि त्यासाठी कोणतेही टोकन्स बाजूला ठेवले जात नाहीत. मर्यादा आणि बॅलन्स
दुसरी, ती या मॉडेल्सवर उत्तराची लांबी मर्यादित करते:
| मॉडेल्स | max_tokens काय करते |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | मर्यादा गाठल्यावर उत्तर थांबते. स्ट्रीम तेव्हा finish_reason length सह संपतो. |
| होस्ट केलेली open-weight मॉडेल्स | उत्तराचा मजकूर max_tokens वर थांबतो. रीझनिंग त्यात मोजले जात नाही. 256 पेक्षा कमी व्हॅल्यू 256 सारख्या वागतात. |
max_tokens किंवा max_completion_tokens नसल्यास व्हॅल्यू 4,096 असते. shannon-coder-1 वर ती 65,536 आहे.
संदेश
प्रत्येक संदेश म्हणजे role आणि content असलेला ऑब्जेक्ट. content ही स्ट्रिंग असते, किंवा संदेशात मजकुराहून अधिक असल्यास भागांची अॅरे.
| भूमिका | वर्णन | लागू करणारे |
|---|---|---|
system | मॉडेलसाठी सूचना. तो पहिला ठेवा. Shannon टियर्सवर पहिला system संदेश वापरला जातो. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system म्हणून वाचला जातो. | होस्ट केलेली open-weight मॉडेल्स |
user | तुम्ही काय विचारता. Shannon टियर्सवर शेवटचा user संदेश प्रॉम्प्ट असतो आणि त्याच्या आधीचे संदेश हिस्ट्री असतात. | सर्व मॉडेल्स |
assistant | मॉडेलची आधीची उत्तरे. त्यानंतर टूलचा निकाल पाठवताना त्याचे tool_calls ठेवा. | सर्व मॉडेल्स |
tool | टूल कॉलचा निकाल: tool_call_id मध्ये कॉलचा id असतो आणि content मध्ये निकाल स्ट्रिंग म्हणून. | सर्व मॉडेल्स |
Shannon 3 कुटुंबातील id सह, जे नियम पाळले पाहिजेत ते user संदेशात ठेवा.
Shannon टियर्सवर वापरकर्त्याचा मजकूर आणि tools नसलेली रिक्वेस्ट 400 No user message provided परत करते.
कंटेंट भाग
| भाग | वर्णन | उपलब्ध |
|---|---|---|
{"type": "text", "text": "…"} | साधा मजकूर. | सर्व मॉडेल्स |
{"type": "image_url", "image_url": {"url": "…"}} | इमेज, base64 कंटेंट असलेला data: URL म्हणून किंवा http(s) URL म्हणून. | Shannon 3 कुटुंब, shannon-1.6-lite, shannon-1.6-pro, आणि इमेज इनपुट असल्याचे नमूद असलेली होस्ट केलेली open-weight मॉडेल्स |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | डॉक्युमेंट (PDF, Word, PowerPoint किंवा Excel), base64 म्हणून किंवा URL द्वारे. | Shannon 3 कुटुंब |
आकार, मर्यादा आणि सर्व रूपांच्या संपूर्ण यादीचे स्वतःचे पान आहे. इमेज आणि फाइल्स
उत्तर ऑब्जेक्ट
| फील्ड | प्रकार | वर्णन |
|---|---|---|
id | string | chatcmpl- नंतर 32 हेक्साडेसिमल अक्षरे. |
object | string | नेहमी chat.completion. |
created | integer | उत्तराची वेळ, Unix सेकंदांत. |
model | string | उत्तर देणाऱ्या मॉडेलचा कॅनॉनिकल id. तुम्ही पाठवलेल्या id पेक्षा त्याचे स्पेलिंग वेगळे असू शकते. |
choices | array | नेहमी नेमकी एक choice, index 0 सह. |
choices[0].message.role | string | नेहमी assistant. |
choices[0].message.content | string | null | उत्तराचा मजकूर. tool_calls असताना Shannon टियर्सवर तो null असतो; होस्ट केलेली open-weight मॉडेल्स कॉल्सच्या बाजूला मजकूर पाठवू शकतात. |
choices[0].message.reasoning_content | string | null | मॉडेलने उत्तराच्या आधी लिहिलेले रीझनिंग, किंवा नसल्यास null. |
choices[0].message.tool_calls | array | फक्त मॉडेल टूल्स कॉल करते तेव्हा असते. प्रत्येक नोंदीत id, type function, आणि name व JSON स्ट्रिंग म्हणून arguments असलेले function असते. |
choices[0].message.annotations | array | फक्त web_search: true असलेल्या आणि ज्याच्या शोधात काही सापडले अशा रिक्वेस्टवर. content मधील खूण ज्या स्रोताचे नाव देते त्या प्रत्येकासाठी एक url_citation, ज्यात url, title, start_index आणि end_index असतात (खुणेचे स्थान, अक्षरांमध्ये मोजलेले, शेवट समाविष्ट नाही). |
choices[0].finish_reason | string | उत्तर का संपले. समाप्तीची कारणे पहा. |
usage | object | रिक्वेस्टचे टोकन्स. वापर पहा. |
sources | array | फक्त web_search: true असलेल्या आणि ज्याच्या शोधात काही सापडले अशा रिक्वेस्टवर: मॉडेलला दिलेले निकाल, प्रत्येकात index, title आणि url. उत्तरातील [1] म्हणजे index 1 असलेली नोंद. |
समाप्तीची कारणे
| finish_reason | वर्णन |
|---|---|
stop | मॉडेलने उत्तर पूर्ण केले, किंवा एखादी stop स्ट्रिंग आढळली. |
tool_calls | मॉडेल एक किंवा अधिक टूल्स कॉल करते. ती चालवा आणि निकाल tool संदेशांमध्ये पाठवा. |
length | उत्तर आउटपुट मर्यादेवर तोडले गेले. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 आणि Shannon 3 कुटुंबाच्या स्ट्रीममध्ये सांगितले जाते. |
स्ट्रीम नसलेले उत्तर stop किंवा tool_calls सांगते.
वापर
| फील्ड | प्रकार | वर्णन | उपलब्ध |
|---|---|---|---|
usage.prompt_tokens | integer | इनपुट टोकन्स. | सर्व मॉडेल्स |
usage.completion_tokens | integer | आउटपुट टोकन्स: रीझनिंग, उत्तर आणि टूल कॉल्स मिळून. | सर्व मॉडेल्स |
usage.total_tokens | integer | prompt_tokens अधिक completion_tokens. | सर्व मॉडेल्स |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens चा प्रॉम्प्ट कॅशमधून वाचलेला भाग. | होस्ट केलेली open-weight मॉडेल्स |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens चा रीझनिंगवर खर्च झालेला भाग. | होस्ट केलेली open-weight मॉडेल्स |
होस्ट केलेल्या open-weight मॉडेल्सवर prompt_tokens म्हणजे तुमचे संदेश आणि टूल व्याख्या मॉडेलच्या स्वतःच्या टोकनायझरने मोजलेल्या, तसेच कोणत्याही इमेजचे टोकन्स. टोकन मोजणी एंडपॉइंट तुम्ही पाठवण्यापूर्वी तीच संख्या परत करतात. टोकन मोजणी
Shannon टियर्सवर prompt_tokens मॉडेलने उत्तर लिहिण्यासाठी वाचलेले सर्व काही मोजतो, त्यामुळे तो फक्त तुमच्या संदेशांच्या मजकुरापेक्षा मोठा असतो.
स्ट्रीमिंग
stream true वर सेट केल्यावर उत्तर chat.completion.chunk इव्हेंट्स म्हणून येते आणि data: [DONE] ने संपते. त्याच्या आधीचा शेवटचा चंक finish_reason आणि usage देतो; stream_options ची गरज नसते. चंकची रचना, keep-alive ओळी आणि स्ट्रीममधील एरर यांचे स्वतःचे पान आहे. स्ट्रीमिंग
एरर
एरर म्हणजे error सदस्य असलेला JSON ऑब्जेक्ट. तपासण्या या क्रमाने चालतात: API की, रिक्वेस्ट बॉडी, मॉडेल id, मग बॅलन्स. टेबल हा एंडपॉइंट सर्वाधिक वेळा काय परत करतो ते दाखवते. संपूर्ण यादी, काय पुन्हा प्रयत्न करायचे यासह, स्वतंत्र पानावर आहे. त्रुटी हाताळणी
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | स्टेटस | प्रकार | संदेश | केव्हा |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API की पाठवली नाही, किंवा की अज्ञात आहे किंवा रद्द केली आहे. |
400 | invalid_request_error | unknown model: <id> | model हा जाहीर केलेला id नाही. |
400 | invalid_request_error | No user message provided | Shannon टियर्स: रिक्वेस्टमध्ये वापरकर्त्याचा मजकूर नाही आणि tools नाहीत. |
400 | invalid_request_error | <id> does not accept image input | इमेज इनपुट नसलेल्या होस्ट केलेल्या open-weight मॉडेलला इमेज भाग पाठवला गेला. |
400 | invalid_request_error | <id> does not accept response_format | स्ट्रक्चर्ड आउटपुट नसलेल्या होस्ट केलेल्या open-weight मॉडेलला response_format पाठवले गेले. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort मध्ये यादीबाहेरची व्हॅल्यू आहे. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages नाही, किंवा एखाद्या फील्डचा JSON प्रकार चुकीचा आहे. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens तुमच्या बॅलन्समध्ये उरलेल्या रकमेपेक्षा मोठे आहे. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | फ्लड प्रोटेक्शन: तुमच्या अकाउंटवर एका मिनिटात 120 पेक्षा जास्त रिक्वेस्ट्स. |
500 | server_error | The model backend failed to answer. Please retry. | मॉडेलने उत्तर दिले नाही. रिक्वेस्ट पुन्हा पाठवा. |
502 | api_error | The model backend failed to answer. Please retry. | तेच, Shannon 3 कुटुंबावर आणि होस्ट केलेल्या open-weight मॉडेल्सवर. |