Chat Completions
POST /v1/chat/completions සංවාදයක් ගෙන model එකේ ඊළඟ පණිවිඩය OpenAI Chat Completions format එකෙන් ආපසු දෙයි. එය ඕනෑම OpenAI SDK එකකින් හෝ සරල HTTP හරහා භාවිතා කරන්න; මෙම පිටුව field-by-field යොමුවයි.
POST https://api.shannon-ai.com/v1/chat/completions
කුඩාම ඉල්ලීම යනු model 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 object එකකි:
{
"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
}
} Headers
ඉල්ලීම් headers
| Header | අගය | විස්තරය |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | ඔබේ API key එක. සෑම endpoint එකකම එය වෙනුවට x-api-key: YOUR_API_KEY පිළිගනී. |
Content-Type | application/json | අවශ්යයි. වෙනත් ඕනෑම අගයකට 415 ලැබේ. |
x-request-id | විකල්ප. ඉල්ලීම සඳහා ඔබේම id එක. එය පිළිතුරේ වෙනස් නොවී ආපසු එයි. |
පිළිතුරු headers
| Header | විස්තරය |
|---|---|
x-request-id | දෝෂ සහ streams ඇතුළුව සෑම පිළිතුරකම: ඔබ යැවූ අගය, නැතහොත් ඔබ කිසිවක් නොයැවූ විට hexadecimal අක්ෂර 12ක්. ගැටලුවක් වාර්තා කරන විට එය සඳහන් කරන්න. |
content-type | application/json, නැතහොත් stream true වන විට text/event-stream. |
ඉල්ලීම් fields
අවශ්ය වන්නේ messages පමණි. Applied by තීරුවේ field එකක් පිළිතුර වෙනස් කරන models නම් කර ඇත. අපගේ සේවාදායකවල ධාවනය වන open-weight models යනු model ලැයිස්තුවේ ඇති id දොළහයි; Shannon 3 පවුල යනු shannon-3, shannon-3-pro, shannon-3.1 සහ shannon-3.1-pro ය. Models සහ මිල ගණන්
| Field | වර්ගය | පෙරනිමිය | විස්තරය | ක්රියාත්මක කරන්නේ |
|---|---|---|---|---|
model | string | shannon-1.6-lite | පිළිතුරු දෙන model එක: model ලැයිස්තුවේ id එකක්. එය සෑම ඉල්ලීමක්ම සමඟ යවන්න. ගැලපීම case-sensitive නොවේ. ප්රකාශිත නොවන id එකකට 400 unknown model ලැබේ. | සියලු models |
messages | array | අවශ්යයි. සංවාදය, පැරණිම පණිවිඩය පළමුව. පහත Messages බලන්න. | සියලු models | |
stream | boolean | false | true මගින් පිළිතුර ලියැවෙන අතරතුර server-sent events ලෙස යවයි. | සියලු models |
max_tokens | integer | 4096 | පිළිතුරේ ඉහළ සීමාව, tokens වලින්. 1 සිට 65,536 දක්වා පරාසයෙන් පිටත අගයක් එම පරාසයට ගෙන එනු ලැබේ. ඉල්ලීම ධාවනය වන අතරතුර ඔබේ ශේෂයෙන් වෙන් කර තබන ප්රමාණය ද එයයි. පහත Output length බලන්න. | අපගේ සේවාදායකවල ධාවනය වන open-weight models, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens හා සමානයි. දෙකම යවන විට max_tokens භාවිතා වේ. | අපගේ සේවාදායකවල ධාවනය වන open-weight models, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Sampling temperature. අපගේ සේවාදායකවල ධාවනය වන open-weight models මත පෙරනිමිය 1 වන අතර අගයන් 0 සහ 2 අතර තබා ගනී. | අපගේ සේවාදායකවල ධාවනය වන open-weight models, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. අගයන් 0 සහ 1 අතර තබා ගනී. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
seed | integer | Sampler එකේ seed එක, ඕනෑම පූර්ණ සංඛ්යාවක්. එය නොමැති විට, seed එක model එකෙන් සහ සංවාදයෙන් ව්යුත්පන්න කෙරේ, එබැවින් එකම ඉල්ලීම දෙවරක් යැවූ විට එකම seed එක භාවිතා වේ. | අපගේ සේවාදායකවල ධාවනය වන open-weight models | |
stop | string | array | String එකක් හෝ strings array එකක්. 4ක් දක්වා භාවිතා වේ. පිළිතුර අවසන් වන්නේ මතු වන පළමු එකට පෙරය; stop පෙළ ආපසු නොදෙයි. | අපගේ සේවාදායකවල ධාවනය වන open-weight models | |
reasoning_effort | string | high | පිළිතුරු දීමට පෙර model එක කොතරම් තර්ක කරයිද: off, low, medium හෝ high. none සහ minimal යනු off ය, default යනු medium ය, max යනු high ය. වෙනත් ඕනෑම අගයකට 400 ලැබේ. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
reasoning | object | එම සැකසුමම object ආකාරයෙන්: {"effort": "low"}. දෙකම යවන විට reasoning_effort භාවිතා වේ. | අපගේ සේවාදායකවල ධාවනය වන open-weight models | |
tools | array | Model එකට call කළ හැකි functions, ඒ සෑම එකක්ම {"type": "function", "function": {"name", "description", "parameters"}} ලෙස. Model එකේ calls tool_calls හි ආපසු එයි; ඒවා ක්රියාත්මක කරන්නේ ඔබේ code එකයි. | සියලු models | |
tool_choice | string | object | auto | "auto" model එකට තීරණය කිරීමට ඉඩ දෙයි. "required" tool එකක් call කිරීමට සලස්වයි. {"type": "function", "function": {"name": "…"}} එම tool එක call කිරීමට සලස්වයි. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
response_format | object | JSON පිළිතුරක් සඳහා {"type": "json_object"}, නැතහොත් ඔබේ schema එක අනුගමනය කරන පිළිතුරක් සඳහා {"type": "json_schema", "json_schema": {…}}. | සියලු Shannon tiers; අපගේ සේවාදායකවල ධාවනය වන open-weight models id එකකට ලැයිස්තුගත කළ පරිදි | |
web_search | boolean | false | true මගින් model එකට පිළිතුරු දීමට පෙර වෙබ් එක සෙවීමට ඉඩ දෙයි. | 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 fields, දැනට ඇති client code වෙනසක් නොමැතිව ක්රියා කිරීම සඳහා පිළිගනී. ඒවා පිළිතුර වෙනස් නොකරයි: සෑම විටම එක choice එකක් පමණක් ඇති අතර, stream එකක් සෑම විටම usage සමඟ අවසන් වේ.
වැරදි JSON type එකක් ඇති field එකකට, උදාහරණයක් ලෙස "max_tokens": "100", 422 ලැබේ. messages නැති ඉල්ලීමකට ද එසේමය.
Tools, ව්යුහගත output, තර්කනය සහ web search වලට එකිනෙකට තමන්ගේම පිටුවක් ඇත: කාර්ය කැඳවීම, ව්යුහගත ප්රතිදාන, Reasoning effort, වෙබ් සෙවීම.
විකල්ප සහිත ඉල්ලීමක්
මෙම ඉල්ලීම system පණිවිඩයක්, sampling fields සහ reasoning effort එක සකසයි. එය ඒ සියල්ල ක්රියාත්මක කරන, අපගේ සේවාදායකවල ධාවනය වන open-weight model එකක් භාවිතා කරයි.
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 models මත එහි usage විස්තර දෙකක් එකතු කරයි: cache එකෙන් කියවූ prompt tokens සහ තර්කනයට වැය වූ tokens.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Output දිග
max_tokens දේවල් දෙකක් කරයි. පළමුව, ඉල්ලීම ආරම්භ වන විට ඔබේ ශේෂයෙන් වෙන් කර තබන tokens ගණන එයයි. පිළිතුර සම්පූර්ණ වූ විට, එම ප්රමාණය ඉල්ලීම භාවිතා කළ tokens මගින් ප්රතිස්ථාපනය වේ. max_tokens ඔබේ ශේෂයේ ඉතිරි ප්රමාණයට වඩා විශාල නම්, පිළිතුරම ඊට ඇතුළත් වුවත් ඉල්ලීමට 429 Quota exceeded ලැබේ. අඩුවෙන් වෙන් කිරීමට අඩු max_tokens යවන්න.
මෙම endpoint හි shannon-coder-1 වෙනස් ලෙස ගණන් කෙරේ: සෑම ඉල්ලීමක්ම ඔබේ සැලසුමේ Shannon Coder calls වලින් එකක් වන අතර ඒ සඳහා tokens වෙන් කර නොතබයි. සීමා සහ ශේෂය
දෙවනුව, එය මෙම models මත පිළිතුරේ දිග සීමා කරයි:
| Models | max_tokens කරන්නේ කුමක්ද |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | සීමාවට ළඟා වූ විට පිළිතුර නතර වේ. ඉන්පසු stream එක finish_reason length සමඟ අවසන් වේ. |
| අපගේ සේවාදායකවල ධාවනය වන open-weight models | පිළිතුරේ පෙළ max_tokens හිදී නතර වේ. තර්කනය ඊට ගණන් ගන්නේ නැත. 256ට අඩු අගයන් 256 ලෙස ක්රියා කරයි. |
max_tokens හෝ max_completion_tokens නොමැතිව අගය 4,096 වේ. shannon-coder-1 මත එය 65,536 වේ.
පණිවිඩ
සෑම පණිවිඩයක්ම role එකක් සහ content එකක් ඇති object එකකි. content යනු string එකක්, නැතහොත් පණිවිඩය පෙළට වඩා යමක් රැගෙන යන විට කොටස් array එකකි.
| Role | විස්තරය | ක්රියාත්මක කරන්නේ |
|---|---|---|
system | Model එක සඳහා උපදෙස්. එය මුලින්ම තබන්න. Shannon tiers මත භාවිතා වන්නේ පළමු system පණිවිඩයයි. | අපගේ සේවාදායකවල ධාවනය වන open-weight models, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system ලෙස කියවයි. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
user | ඔබ අසන දේ. Shannon tiers මත අවසාන user පණිවිඩය prompt එක වන අතර එයට පෙර පණිවිඩ ඉතිහාසයයි. | සියලු models |
assistant | Model එකේ පෙර පිළිතුරු. ඉන් පසුව tool ප්රතිඵලයක් යවන විට එහි tool_calls තබා ගන්න. | සියලු models |
tool | Tool call එකක ප්රතිඵලය: tool_call_id හි call එකේ id එක ද content හි ප්රතිඵලය string එකක් ලෙස ද ඇත. | සියලු models |
Shannon 3 පවුලේ id එකක් සමඟ, අනිවාර්යයෙන් පිළිපැදිය යුතු උපදෙස් user පණිවිඩයට ඇතුළත් කරන්න.
Shannon tiers මත user පෙළක් සහ tools නැති ඉල්ලීමකට 400 No user message provided ලැබේ.
අන්තර්ගත කොටස්
| කොටස | විස්තරය | ලබා ගත හැක්කේ |
|---|---|---|
{"type": "text", "text": "…"} | සරල පෙළ. | සියලු models |
{"type": "image_url", "image_url": {"url": "…"}} | රූපයක්, base64 අන්තර්ගතය සහිත data: URL එකක් ලෙස හෝ http(s) URL එකක් ලෙස. | Shannon 3 පවුල, shannon-1.6-lite, shannon-1.6-pro, සහ රූප ආදානය ලැයිස්තුගත කරන, අපගේ සේවාදායකවල ධාවනය වන open-weight models |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | ලේඛනයක් (PDF, Word, PowerPoint හෝ Excel), base64 ලෙස හෝ URL එකකින්. | Shannon 3 පවුල |
ප්රමාණ, සීමා සහ ආකාර සියල්ලේ සම්පූර්ණ ලැයිස්තුවට තමන්ගේම පිටුවක් ඇත. රූප සහ ගොනු
පිළිතුරු object එක
| Field | වර්ගය | විස්තරය |
|---|---|---|
id | string | chatcmpl- ට පසුව hexadecimal අක්ෂර 32ක්. |
object | string | සෑම විටම chat.completion. |
created | integer | පිළිතුරේ වේලාව, Unix තත්පරවලින්. |
model | string | පිළිතුරු දුන් model එකේ canonical id එක. එහි අකුරු වින්යාසය ඔබ යැවූ id එකෙන් වෙනස් විය හැක. |
choices | array | සෑම විටම හරියටම එක choice එකක්, index 0 සහිතව. |
choices[0].message.role | string | සෑම විටම assistant. |
choices[0].message.content | string | null | පිළිතුරේ පෙළ. tool_calls සමඟ Shannon tiers මත එය null වේ; අපගේ සේවාදායකවල ධාවනය වන open-weight models වලට calls අසල පෙළ යැවිය හැක. |
choices[0].message.reasoning_content | string | null | Model එක පිළිතුරට පෙර ලියූ තර්කනය, නැතහොත් එකක් නැති විට null. |
choices[0].message.tool_calls | array | Model එක tools call කරන විට පමණක් ඇත. සෑම entry එකකටම id, type function, සහ name සහ JSON string එකක් ලෙස 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 | ඉල්ලීමේ tokens. භාවිතය (Usage) බලන්න. |
sources | array | web_search: true සහිත, සෙවීමෙන් යමක් සොයාගත් ඉල්ලීමක දී පමණි: model එකට දුන් ප්රතිඵල, සෑම එකකටම index, title සහ url සමඟ. පිළිතුරේ [1] යනු index 1 ඇති ඇතුළත් කිරීමයි. |
අවසන් වීමේ හේතු
| finish_reason | විස්තරය |
|---|---|
stop | Model එක තම පිළිතුර අවසන් කළා, නැතහොත් stop string එකක් මතු විය. |
tool_calls | Model එක tools එකක් හෝ කිහිපයක් call කරයි. ඒවා ක්රියාත්මක කර ප්රතිඵල tool පණිවිඩවල යවන්න. |
length | පිළිතුර output සීමාවේදී කපා හරින ලදී. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 සහ Shannon 3 පවුලේ streams වල වාර්තා කෙරේ. |
Stream නොකළ පිළිතුරක් stop හෝ tool_calls වාර්තා කරයි.
භාවිතය (Usage)
| Field | වර්ගය | විස්තරය | ලබා ගත හැක්කේ |
|---|---|---|---|
usage.prompt_tokens | integer | Input tokens. | සියලු models |
usage.completion_tokens | integer | Output tokens: තර්කනය, පිළිතුර සහ tool calls එකට. | සියලු models |
usage.total_tokens | integer | prompt_tokens එකතු completion_tokens. | සියලු models |
usage.prompt_tokens_details.cached_tokens | integer | Prompt cache එකෙන් කියවූ prompt_tokens කොටස. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
usage.completion_tokens_details.reasoning_tokens | integer | තර්කනයට වැය වූ completion_tokens කොටස. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
අපගේ සේවාදායකවල ධාවනය වන open-weight models මත, prompt_tokens යනු ඔබේ පණිවිඩ සහ tool අර්ථ දැක්වීම් model එකේම tokenizer එකෙන් ගණනය කළ ප්රමාණයට රූපවල tokens එකතු කිරීමයි. Token ගණන් කිරීමේ endpoints ඔබ යැවීමට පෙර එම අගයම ආපසු දෙයි. Token ගණන් කිරීම
Shannon tiers මත, prompt_tokens පිළිතුර ලිවීමට model එක කියවූ සියල්ල ගණන් ගනී, එබැවින් එය ඔබේ පණිවිඩවල පෙළට පමණක් වඩා විශාල වේ.
Streaming
stream true ලෙස සකසා ඇති විට පිළිතුර chat.completion.chunk events ලෙස පැමිණ data: [DONE] සමඟ අවසන් වේ. ඊට පෙර අවසාන chunk එක finish_reason සහ usage රැගෙන යයි; stream_options අවශ්ය නැත. Chunk හැඩතල, keep-alive පේළි සහ stream එකක් තුළ දෝෂ සඳහා තමන්ගේම පිටුවක් ඇත. ස්ට්රීමිං
දෝෂ
දෝෂයක් යනු error member එකක් සහිත JSON object එකකි. පරීක්ෂා ක්රියාත්මක වන්නේ මෙම පිළිවෙලටයි: API key, ඉල්ලීමේ body, model id, ඉන්පසු ශේෂය. වගුවේ මෙම endpoint එක බොහෝ විට ආපසු දෙන දේ ලැයිස්තුගත කර ඇත. නැවත උත්සාහ කළ යුතු දේ සහිත සම්පූර්ණ ලැයිස්තුවට තමන්ගේම පිටුවක් ඇත. දෝෂ
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Status | Type | පණිවිඩය | කවදාද |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API key එකක් යවා නැත, නැතහොත් key එක නොදන්නා හෝ අවලංගු කළ එකකි. |
400 | invalid_request_error | unknown model: <id> | model ප්රකාශිත id එකක් නොවේ. |
400 | invalid_request_error | No user message provided | Shannon tiers: ඉල්ලීමේ user පෙළක් නැත සහ tools නැත. |
400 | invalid_request_error | <id> does not accept image input | රූප ආදානය නැති, අපගේ සේවාදායකවල ධාවනය වන open-weight model එකකට රූප කොටසක් යවා ඇත. |
400 | invalid_request_error | <id> does not accept response_format | ව්යුහගත output නැති, අපගේ සේවාදායකවල ධාවනය වන open-weight model එකකට 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 නැත, නැතහොත් field එකක JSON type එක වැරදිය. |
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. | Model එක පිළිතුරක් නිපදවූයේ නැත. ඉල්ලීම නැවත යවන්න. |
502 | api_error | The model backend failed to answer. Please retry. | Shannon 3 පවුලේ සහ අපගේ සේවාදායකවල ධාවනය වන open-weight models වලද එයම. |