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
}
} Headers
Հարցման header-ներ
| Header | Արժեք | Նկարագրություն |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Ձեր API բանալին։ Դրա փոխարեն յուրաքանչյուր endpoint-ում ընդունվում է x-api-key: YOUR_API_KEY։ |
Content-Type | application/json | Պարտադիր է։ Ցանկացած այլ արժեք վերադարձնում է 415։ |
x-request-id | Ըստ ցանկության։ Ձեր սեփական id-ն հարցման համար։ Այն պատասխանում վերադառնում է անփոփոխ։ |
Պատասխանի header-ներ
| Header | Նկարագրություն |
|---|---|
x-request-id | Յուրաքանչյուր պատասխանում, ներառյալ սխալները և հոսքերը. ձեր ուղարկած արժեքը, կամ 12 տասնվեցական նիշ, եթե ոչինչ չեք ուղարկել։ Նշեք այն, երբ հայտնում եք խնդրի մասին։ |
content-type | application/json, կամ text/event-stream, երբ stream-ը true է։ |
Հարցման դաշտեր
Պարտադիր է միայն messages-ը։ Կիրառվում է սյունը նշում է այն մոդելները, որոնց վրա դաշտը փոխում է պատասխանը։ Hosted 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-ը ուղարկում է պատասխանը որպես server-sent events՝ գրվելու ընթացքում։ | Բոլոր մոդելները |
max_tokens | integer | 4096 | Պատասխանի վերին սահմանը՝ թոքեններով։ 1-ից 65,536 միջակայքից դուրս արժեքը տեղափոխվում է այդ միջակայք։ Սա նաև այն քանակն է, որը հարցման ընթացքում առանձնացվում է ձեր մնացորդից։ Տես ստորև «Ելքի երկարություն»։ | Hosted open-weight մոդելներ, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | Նույնն է, ինչ max_tokens-ը։ Երբ ուղարկված են երկուսն էլ, օգտագործվում է max_tokens-ը։ | Hosted open-weight մոդելներ, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Sampling temperature։ Hosted open-weight մոդելների վրա լռելյայնը 1 է, և արժեքները պահվում են 0-ից 2 միջակայքում։ | Hosted open-weight մոդելներ, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling։ Արժեքները պահվում են 0-ից 1 միջակայքում։ | Hosted open-weight մոդելներ |
seed | integer | Sampler-ի seed-ը՝ ցանկացած ամբողջ թիվ։ Առանց դրա seed-ը ստացվում է մոդելից և զրույցից, ուստի երկու անգամ ուղարկված նույն հարցումն օգտագործում է նույն seed-ը։ | Hosted open-weight մոդելներ | |
stop | string | array | Տող կամ տողերի զանգված։ Օգտագործվում են մինչև 4-ը։ Պատասխանն ավարտվում է դրանցից առաջինի հայտնվելուց առաջ. stop տեքստն ինքը չի վերադարձվում։ | Hosted open-weight մոդելներ | |
reasoning_effort | string | high | Որքան է մոդելը տրամաբանում պատասխանելուց առաջ՝ off, low, medium կամ high։ none և minimal նշանակում են off, default-ը նշանակում է medium, max-ը՝ high։ Ցանկացած այլ արժեք վերադարձնում է 400։ | Hosted open-weight մոդելներ |
reasoning | object | Նույն կարգավորումը օբյեկտի ձևով՝ {"effort": "low"}։ Երբ ուղարկված են երկուսն էլ, օգտագործվում է reasoning_effort-ը։ | Hosted open-weight մոդելներ | |
tools | array | Ֆունկցիաները, որոնք մոդելը կարող է կանչել, յուրաքանչյուրը՝ որպես {"type": "function", "function": {"name", "description", "parameters"}}։ Մոդելի կանչերը վերադառնում են tool_calls-ում. դրանք կատարում է ձեր կոդը։ | Բոլոր մոդելները | |
tool_choice | string | object | auto | "auto"-ն թողնում է, որ մոդելը որոշի։ "required"-ը ստիպում է կանչել գործիք։ {"type": "function", "function": {"name": "…"}}-ը ստիպում է կանչել հենց այդ գործիքը։ | Hosted open-weight մոդելներ |
response_format | object | {"type": "json_object"}՝ JSON պատասխանի համար, կամ {"type": "json_schema", "json_schema": {…}}՝ ձեր schema-ին հետևող պատասխանի համար։ | Shannon բոլոր մակարդակները. hosted 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-ից զուրկ հարցմանը։
Գործիքները, կառուցվածքային արդյունքը, reasoning-ը և վեբ որոնումը ունեն իրենց էջերը. Ֆունկցիայի կանչ, Կառուցվածքային արդյունքներ, Reasoning effort, Ներկառուցված վեբ որոնում.
Հարցում կարգավորումներով
Այս հարցումը սահմանում է system հաղորդագրություն, sampling դաշտերը և reasoning effort-ը։ Այն օգտագործում է hosted 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"
}' Պատասխանն ունի նույն կառուցվածքը, ինչ վերևում։ Hosted open-weight մոդելների վրա դրա usage-ը ավելացնում է երկու մանրամասն՝ cache-ից կարդացված prompt թոքենները և reasoning-ի վրա ծախսված թոքենները։
{
"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-ը այս endpoint-ում հաշվվում է այլ կերպ. յուրաքանչյուր հարցում ձեր պլանի Shannon Coder կանչերից մեկն է, և դրա համար թոքեններ չեն առանձնացվում։ Սահմանաչափեր և մնացորդ
Երկրորդ, այն սահմանափակում է պատասխանի երկարությունը այս մոդելների վրա.
| Մոդելներ | Ինչ է անում max_tokens-ը |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Պատասխանը կանգ է առնում, երբ հասնում է սահմանաչափին։ Այդ դեպքում հոսքն ավարտվում է finish_reason length-ով։ |
| Hosted open-weight մոդելներ | Պատասխանի տեքստը կանգ է առնում max_tokens-ում։ Reasoning-ը դրա մեջ չի հաշվվում։ 256-ից փոքր արժեքները գործում են որպես 256։ |
Առանց max_tokens-ի կամ max_completion_tokens-ի արժեքը 4,096 է։ shannon-coder-1-ում՝ 65,536։
Հաղորդագրություններ
Յուրաքանչյուր հաղորդագրություն օբյեկտ է role-ով և content-ով։ content-ը տող է, կամ մասերի զանգված, երբ հաղորդագրությունը տեքստից բացի այլ բան է կրում։
| Դեր | Նկարագրություն | Կիրառվում է |
|---|---|---|
system | Հրահանգներ մոդելի համար։ Դրեք առաջինը։ Shannon մակարդակներում օգտագործվում է առաջին system հաղորդագրությունը։ | Hosted open-weight մոդելներ, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Կարդացվում է որպես system։ | Hosted open-weight մոդելներ |
user | Այն, ինչ դուք հարցնում եք։ Shannon մակարդակներում վերջին user հաղորդագրությունը prompt-ն է, իսկ դրանից առաջ եղած հաղորդագրությունները՝ պատմությունը։ | Բոլոր մոդելները |
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": "…"}} | Պատկեր՝ որպես data: URL base64 բովանդակությամբ կամ որպես http(s) URL։ | Shannon 3 ընտանիք, shannon-1.6-lite, shannon-1.6-pro և այն hosted 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 է. hosted open-weight մոդելները կարող են տեքստ ուղարկել կանչերի կողքին։ |
choices[0].message.reasoning_content | string | null | Reasoning-ը, որը մոդելը գրել է պատասխանից առաջ, կամ null, երբ այն չկա։ |
choices[0].message.tool_calls | array | Առկա է միայն այն դեպքում, երբ մոդելը կանչում է գործիքներ։ Յուրաքանչյուր գրառում ունի id, type function և function՝ name-ով և arguments-ով՝ որպես JSON տող։ |
choices[0].message.annotations | array | Միայն web_search: true ունեցող հարցման վրա, որի որոնումը ինչ-որ բան է գտել։ Մեկ url_citation content-ում նշիչի անվանած յուրաքանչյուր աղբյուրի համար՝ 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 | Ելքի թոքեններ՝ reasoning, պատասխան և գործիքների կանչեր միասին։ | Բոլոր մոդելները |
usage.total_tokens | integer | prompt_tokens գումարած completion_tokens։ | Բոլոր մոդելները |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens-ի այն մասը, որը կարդացվել է prompt cache-ից։ | Hosted open-weight մոդելներ |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens-ի այն մասը, որը ծախսվել է reasoning-ի վրա։ | Hosted open-weight մոդելներ |
Hosted open-weight մոդելների վրա prompt_tokens-ը ձեր հաղորդագրություններն ու գործիքների սահմանումներն են՝ հաշվված մոդելի սեփական tokenizer-ով, գումարած պատկերների թոքենները։ Թոքենների հաշվարկի endpoint-ները նույն թիվը վերադարձնում են ուղարկելուց առաջ։ Թոքենների հաշվարկ
Shannon մակարդակներում prompt_tokens-ը հաշվում է այն ամենը, ինչ մոդելը կարդացել է պատասխանը գրելու համար, ուստի այն մեծ է միայն ձեր հաղորդագրությունների տեքստից։
Streaming
Երբ stream-ը true է, պատասխանը գալիս է որպես chat.completion.chunk իրադարձություններ և ավարտվում է data: [DONE]-ով։ Դրանից առաջ վերջին chunk-ը կրում է finish_reason և usage. stream_options պետք չեն։ Chunk-երի կառուցվածքները, keep-alive տողերը և հոսքի ներսի սխալներն ունեն իրենց էջը։ Ստրիմինգ
Սխալներ
Սխալը JSON օբյեկտ է error անդամով։ Ստուգումները կատարվում են այս հերթականությամբ՝ API բանալի, հարցման մարմին, մոդելի id, ապա մնացորդ։ Աղյուսակում թվարկված են այս endpoint-ի ամենահաճախ վերադարձվող սխալները։ Լրիվ ցանկը՝ կրկնելու ցուցումներով, ունի իր էջը։ Սխալների մշակում
{
"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 | Պատկերի մաս է ուղարկվել hosted open-weight մոդելին, որը պատկերի մուտք չունի։ |
400 | invalid_request_error | <id> does not accept response_format | response_format է ուղարկվել hosted open-weight մոդելին, որը կառուցվածքային արդյունք չունի։ |
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-պաշտպանություն. ձեր հաշվից մեկ րոպեում ավելի քան 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 ընտանիքում և hosted open-weight մոդելներում։ |