कंटेंट पर जाएँ
Chat Completions

Chat Completions

POST /v1/chat/completions एक बातचीत लेता है और OpenAI Chat Completions फ़ॉर्मेट में मॉडल का अगला संदेश लौटाता है। इसे किसी भी OpenAI SDK से या सादे HTTP पर उपयोग करें; यह पेज फ़ील्ड-दर-फ़ील्ड संदर्भ है।

POST https://api.shannon-ai.com/v1/chat/completions

सबसे छोटा अनुरोध एक मॉडल id और एक यूज़र संदेश है।

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 key। हर endpoint पर इसकी जगह 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 आवश्यक है। लागू करने वाले कॉलम में उन मॉडल के नाम हैं जिन पर कोई फ़ील्ड उत्तर को बदलता है। होस्टेड ओपन-वेट मॉडल मॉडल सूची के बारह 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 उत्तर को लिखे जाने के साथ-साथ server-sent events के रूप में भेजता है। सभी मॉडल
max_tokens integer 4096 उत्तर की ऊपरी सीमा, टोकन में। 1 से 65,536 के बाहर का मान उसी सीमा में ला दिया जाता है। अनुरोध चलने के दौरान आपके बैलेंस में से इतनी मात्रा अलग रख ली जाती है। नीचे आउटपुट की लंबाई देखें। होस्टेड ओपन-वेट मॉडल, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer max_tokens जैसा ही। दोनों भेजे जाएँ तो max_tokens उपयोग होता है। होस्टेड ओपन-वेट मॉडल, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number सैंपलिंग तापमान। होस्टेड ओपन-वेट मॉडल पर डिफ़ॉल्ट 1 है और मान 0 और 2 के बीच रखे जाते हैं। होस्टेड ओपन-वेट मॉडल, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 न्यूक्लियस सैंपलिंग। मान 0 और 1 के बीच रखे जाते हैं। होस्टेड ओपन-वेट मॉडल
seed integer सैंपलर का seed, कोई भी पूर्णांक। इसके बिना seed मॉडल और बातचीत से निकाला जाता है, इसलिए दो बार भेजा गया वही अनुरोध वही seed उपयोग करता है। होस्टेड ओपन-वेट मॉडल
stop string | array एक स्ट्रिंग या स्ट्रिंग की ऐरे। अधिकतम 4 उपयोग होती हैं। उत्तर उनमें से पहली के आने से पहले समाप्त हो जाता है; स्टॉप टेक्स्ट खुद नहीं लौटाया जाता। होस्टेड ओपन-वेट मॉडल
reasoning_effort string high उत्तर देने से पहले मॉडल कितना रीज़न करता है: off, low, medium या high। none और minimal का अर्थ off है, default का अर्थ medium है, max का अर्थ high है। कोई भी और मान 400 लौटाता है। होस्टेड ओपन-वेट मॉडल
reasoning object वही सेटिंग ऑब्जेक्ट रूप में: {"effort": "low"}। दोनों भेजे जाएँ तो reasoning_effort उपयोग होता है। होस्टेड ओपन-वेट मॉडल
tools array वे फ़ंक्शन जिन्हें मॉडल कॉल कर सकता है, हर एक {"type": "function", "function": {"name", "description", "parameters"}} के रूप में। मॉडल की कॉल tool_calls में लौटती हैं; आपका कोड उन्हें चलाता है। सभी मॉडल
tool_choice string | object auto "auto" मॉडल को तय करने देता है। "required" उसे कोई टूल कॉल करने पर मजबूर करता है। {"type": "function", "function": {"name": "…"}} उसे वही टूल कॉल करने पर मजबूर करता है। होस्टेड ओपन-वेट मॉडल
response_format object JSON उत्तर के लिए {"type": "json_object"}, या आपके schema का पालन करने वाले उत्तर के लिए {"type": "json_schema", "json_schema": {…}}। सभी Shannon टियर; होस्टेड ओपन-वेट मॉडल हर 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 होती है, और स्ट्रीम हमेशा उपयोग की जानकारी के साथ समाप्त होती है।

गलत JSON प्रकार वाला फ़ील्ड, उदाहरण के लिए "max_tokens": "100", 422 लौटाता है। messages के बिना अनुरोध भी यही लौटाता है।

टूल्स, संरचित आउटपुट, रीज़निंग और वेब सर्च, हर एक का अपना पेज है: फ़ंक्शन कॉलिंग, संरचित आउटपुट, रीज़निंग effort, इनबिल्ट Web Search.

विकल्पों के साथ अनुरोध

यह अनुरोध एक सिस्टम संदेश, सैंपलिंग फ़ील्ड और रीज़निंग effort सेट करता है। यह एक होस्टेड ओपन-वेट मॉडल का उपयोग करता है, जो इन सभी को लागू करता है।

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)

उत्तर का रूप ऊपर जैसा ही है। होस्टेड ओपन-वेट मॉडल पर इसका 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 भेजें।

इस endpoint पर shannon-coder-1 अलग तरह से गिना जाता है: हर अनुरोध आपके प्लान की एक Shannon Coder कॉल है, और उसके लिए कोई टोकन अलग नहीं रखे जाते। सीमाएँ और बैलेंस

दूसरा, यह इन मॉडल पर उत्तर की लंबाई सीमित करता है:

मॉडल max_tokens क्या करता है
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 सीमा तक पहुँचने पर उत्तर रुक जाता है। तब स्ट्रीम finish_reason length के साथ समाप्त होती है।
होस्टेड ओपन-वेट मॉडल उत्तर का टेक्स्ट max_tokens पर रुकता है। रीज़निंग इसमें नहीं गिनी जाती। 256 से कम मान 256 की तरह काम करते हैं।

max_tokens या max_completion_tokens के बिना मान 4,096 होता है। shannon-coder-1 पर यह 65,536 है।

संदेश

हर संदेश एक ऑब्जेक्ट है जिसमें role और content होता है। content एक स्ट्रिंग है, या भागों की ऐरे जब संदेश में टेक्स्ट से ज़्यादा कुछ हो।

भूमिका विवरण लागू करने वाले
system मॉडल के लिए निर्देश। इसे पहले रखें। Shannon टियर पर पहला system संदेश ही उपयोग होता है। होस्टेड ओपन-वेट मॉडल, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer system की तरह पढ़ा जाता है। होस्टेड ओपन-वेट मॉडल
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 और वे होस्टेड ओपन-वेट मॉडल जो इमेज इनपुट सूचीबद्ध करते हैं
{"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 होता है; होस्टेड ओपन-वेट मॉडल कॉल के साथ टेक्स्ट भी भेज सकते हैं।
choices[0].message.reasoning_content string | null उत्तर से पहले मॉडल ने जो रीज़निंग लिखी, या कुछ न हो तो null।
choices[0].message.tool_calls array केवल तब मौजूद जब मॉडल टूल कॉल करता है। हर प्रविष्टि में एक id, type function, और function होता है जिसमें name और JSON स्ट्रिंग के रूप में arguments होते हैं।
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 का वह हिस्सा जो प्रॉम्प्ट कैश से पढ़ा गया। होस्टेड ओपन-वेट मॉडल
usage.completion_tokens_details.reasoning_tokens integer completion_tokens का वह हिस्सा जो रीज़निंग पर खर्च हुआ। होस्टेड ओपन-वेट मॉडल

होस्टेड ओपन-वेट मॉडल पर prompt_tokens आपके संदेशों और टूल परिभाषाओं को मॉडल के अपने टोकनाइज़र से गिनकर, साथ में किसी भी इमेज के टोकन जोड़कर बनता है। टोकन गिनने वाले endpoints भेजने से पहले यही संख्या लौटाते हैं। टोकन गिनती

Shannon टियर पर prompt_tokens वह सब गिनता है जो मॉडल ने उत्तर लिखने के लिए पढ़ा, इसलिए यह अकेले आपके संदेशों के टेक्स्ट से बड़ा होता है।

स्ट्रीमिंग

stream को true पर सेट करने पर उत्तर chat.completion.chunk इवेंट के रूप में आता है और data: [DONE] पर समाप्त होता है। उससे पहले का आखिरी चंक finish_reason और usage ले जाता है; किसी stream_options की ज़रूरत नहीं। चंक के रूप, keep-alive लाइनों और स्ट्रीम के भीतर की त्रुटियों का अपना पेज है। स्ट्रीमिंग

त्रुटियाँ

त्रुटि एक JSON ऑब्जेक्ट है जिसमें error सदस्य होता है। जाँचें इस क्रम में चलती हैं: API key, अनुरोध बॉडी, मॉडल id, फिर बैलेंस। तालिका वह दिखाती है जो यह endpoint सबसे ज़्यादा लौटाता है। पूरी सूची, और किसे दोबारा आज़माना है, इसका अपना पेज है। त्रुटि प्रबंधन

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
स्टेटस प्रकार संदेश कब
401 authentication_error Missing authentication
Invalid API key
कोई API key नहीं भेजी गई, या key अज्ञात है या रद्द की जा चुकी है।
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 इमेज इनपुट के बिना होस्टेड ओपन-वेट मॉडल को इमेज भाग भेजा गया।
400 invalid_request_error <id> does not accept response_format संरचित आउटपुट के बिना होस्टेड ओपन-वेट मॉडल को 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. Flood protection: आपके अकाउंट पर एक मिनट में 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 परिवार और होस्टेड ओपन-वेट मॉडल पर।