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) 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 आवश्यक छ। लागू गर्ने स्तम्भले फिल्डले जवाफ बदल्ने मोडलहरूको नाम दिन्छ। होस्ट गरिएका ओपन-वेट मोडलहरू मोडल सूचीका बाह्र 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 | आवश्यक। कुराकानी, सबैभन्दा पुरानो सन्देश पहिले। तल Messages हेर्नुहोस्। | सबै मोडल | |
stream | boolean | false | true ले जवाफ लेखिँदै गर्दा सर्भर-सेन्ट इभेन्टका रूपमा पठाउँछ। | सबै मोडल |
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 | स्याम्पलरको सिड, कुनै पनि पूर्णाङ्क। यो नभए सिड मोडल र कुराकानीबाट निकालिन्छ, त्यसैले दुई पटक पठाइएको उही अनुरोधले उही सिड प्रयोग गर्छ। | होस्ट गरिएका ओपन-वेट मोडलहरू | |
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"}, वा तपाईंको स्कीमा पछ्याउने उत्तरका लागि {"type": "json_schema", "json_schema": {…}}। | सबै Shannon तहहरू; होस्ट गरिएका ओपन-वेट मोडलहरू हरेक id अनुसार सूचीबद्ध | |
web_search | boolean | false | true ले मोडललाई उत्तर दिनु अघि वेबमा खोज्न दिन्छ। | shannon-1.6-*, shannon-2-*, Shannon 3 परिवार |
n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store र prompt_cache_key जस्ता अन्य OpenAI फिल्डहरू स्वीकार गरिन्छन् ताकि अवस्थित क्लाइन्ट कोड परिवर्तन बिना चलोस्। तिनले जवाफ बदल्दैनन्: सधैं एउटै choice हुन्छ, र स्ट्रिम सधैं usage सहित सकिन्छ।
गलत JSON प्रकार भएको फिल्ड, उदाहरणका लागि "max_tokens": "100", ले 422 फर्काउँछ। messages नभएको अनुरोधले पनि यही फर्काउँछ।
टुल, स्ट्रक्चर्ड आउटपुट, रिजनिङ र वेब खोज प्रत्येकको आफ्नै पेज छ: फङ्क्शन कलिङ, संरचित आउटपुट, रिजनिङ एफर्ट, निर्मित वेब खोज.
विकल्पहरूसहितको अनुरोध
यो अनुरोधले सिस्टम सन्देश, स्याम्पलिङ फिल्डहरू र रिजनिङ एफर्ट सेट गर्छ। यसले होस्ट गरिएको ओपन-वेट मोडल प्रयोग गर्छ, जसले ती सबै लागू गर्छ।
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"
}' जवाफको आकार माथिकै जस्तो हुन्छ। होस्ट गरिएका ओपन-वेट मोडलहरूमा यसको 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 सँग सकिन्छ। |
| होस्ट गरिएका ओपन-वेट मोडलहरू | उत्तरको टेक्स्ट max_tokens मा रोकिन्छ। रिजनिङ यसमा गणना गरिँदैन। 256 भन्दा कमका मानले 256 को रूपमा काम गर्छन्। |
max_tokens वा max_completion_tokens बिना मान 4,096 हुन्छ। shannon-coder-1 मा यो 65,536 हो।
Messages
हरेक सन्देश 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, र 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 | अनुरोधका टोकनहरू। Usage हेर्नुहोस्। |
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
| फिल्ड | प्रकार | विवरण | उपलब्ध |
|---|---|---|---|
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 तपाईंका सन्देश र टुल परिभाषाहरू मोडलकै टोकनाइजरले गनिएको र कुनै छविका टोकनहरू थपिएको संख्या हो। टोकन गणना इन्डपोइन्टहरूले पठाउनु अघि उही संख्या फर्काउँछन्। टोकन गणना
Shannon तहहरूमा, prompt_tokens ले जवाफ लेख्न मोडलले पढेका सबै कुरा गन्छ, त्यसैले यो तपाईंका सन्देशहरूको टेक्स्ट मात्रभन्दा ठूलो हुन्छ।
स्ट्रिमिङ
stream लाई true सेट गर्दा जवाफ chat.completion.chunk इभेन्टका रूपमा आइपुग्छ र data: [DONE] सँग सकिन्छ। त्यसअघिको अन्तिम चंकले finish_reason र usage बोक्छ; कुनै stream_options चाहिँदैन। चंकको आकार, कीप-अलाइभ लाइन र स्ट्रिमभित्रका त्रुटिहरूको आफ्नै पेज छ। स्ट्रिमिङ
त्रुटिहरू
त्रुटि 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 | छवि इनपुट नभएको होस्ट गरिएको ओपन-वेट मोडलमा छवि भाग पठाइयो। |
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. | फ्लड प्रोटेक्सन: तपाईंको खातामा एक मिनेटमा 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 परिवार र होस्ट गरिएका ओपन-वेट मोडलहरूमा। |