मजकुराकडे जा
Chat Completions

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)

उत्तर हा एक JSON ऑब्जेक्ट आहे:

200 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)

उत्तराची रचना वरीलप्रमाणेच आहे. होस्ट केलेल्या open-weight मॉडेल्सवर त्याच्या usage मध्ये दोन तपशील जोडले जातात: कॅशमधून वाचलेले प्रॉम्प्ट टोकन्स आणि रीझनिंगवर खर्च झालेले टोकन्स.

200 JSON
{
  "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, मग बॅलन्स. टेबल हा एंडपॉइंट सर्वाधिक वेळा काय परत करतो ते दाखवते. संपूर्ण यादी, काय पुन्हा प्रयत्न करायचे यासह, स्वतंत्र पानावर आहे. त्रुटी हाताळणी

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
स्टेटस प्रकार संदेश केव्हा
401 authentication_error Missing authentication
Invalid 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 मॉडेल्सवर.