გადასვლა შინაარსზე
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
  }
}

Header-ები

მოთხოვნის 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 სემპლინგის ტემპერატურა. 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 სემპლინგი. მნიშვნელობები რჩება 0-სა და 1-ს შორის. Hosted open-weight მოდელები
seed integer სემპლერის 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": {…}} პასუხისთვის, რომელიც თქვენს სქემას მიჰყვება. 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-ის გარეშე.

ინსტრუმენტებს, სტრუქტურირებულ შედეგს, მსჯელობასა და ვებძიებას თითოეულს საკუთარი გვერდი აქვს: ფუნქციის გამოძახება, სტრუქტურირებული შედეგები, მსჯელობის effort, ჩაშენებული ვებძიება.

მოთხოვნა პარამეტრებით

ეს მოთხოვნა ადგენს system შეტყობინებას, სემპლინგის ველებსა და მსჯელობის 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)

პასუხს იგივე ფორმა აქვს, რაც ზემოთ. მისი usage hosted open-weight მოდელებზე ორ დეტალს ამატებს: ქეშიდან წაკითხულ პრომპტის ტოკენებს და მსჯელობაზე დახარჯულ ტოკენებს.

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 ამ endpoint-ზე სხვაგვარად ითვლება: ყოველი მოთხოვნა თქვენი გეგმის Shannon Coder-ის ერთი გამოძახებაა და მისთვის ტოკენები არ ირეზერვება. ლიმიტები და ბალანსი

მეორე, ის ზღუდავს პასუხის სიგრძეს ამ მოდელებზე:

მოდელები რას აკეთებს max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 პასუხი ჩერდება, როცა ლიმიტს მიაღწევს. სტრიმი მაშინ მთავრდება finish_reason length-ით.
Hosted open-weight მოდელები პასუხის ტექსტი max_tokens-ზე ჩერდება. მსჯელობა მასში არ ითვლება. 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 შეტყობინება პრომპტია, მის წინა შეტყობინებები კი ისტორია. ყველა მოდელი
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 მსჯელობა, რომელიც მოდელმა პასუხამდე დაწერა, ან 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 მოთხოვნის ტოკენები. იხილეთ გამოყენება.
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-ის ის ნაწილი, რომელიც პრომპტის ქეშიდან წაიკითხა. Hosted open-weight მოდელები
usage.completion_tokens_details.reasoning_tokens integer completion_tokens-ის ის ნაწილი, რომელიც მსჯელობაზე დაიხარჯა. Hosted open-weight მოდელები

Hosted open-weight მოდელებზე prompt_tokens არის თქვენი შეტყობინებები და ინსტრუმენტების აღწერები, დათვლილი მოდელის საკუთარი ტოკენიზატორით, პლუს ნებისმიერი სურათის ტოკენები. ტოკენების დათვლის endpoint-ები იმავე რიცხვს აბრუნებენ გაგზავნამდე. ტოკენების დათვლა

Shannon-ის დონეებზე prompt_tokens ითვლის ყველაფერს, რაც მოდელმა პასუხის დასაწერად წაიკითხა, ამიტომ ის მხოლოდ თქვენი შეტყობინებების ტექსტზე დიდია.

სტრიმინგი

როცა stream არის true, პასუხი მოდის chat.completion.chunk მოვლენებად და მთავრდება data: [DONE]-თი. მის წინ ბოლო chunk ატარებს finish_reason-სა და usage-ს; stream_options საჭირო არ არის. chunk-ების ფორმებს, keep-alive ხაზებსა და სტრიმის შიგნით შეცდომებს საკუთარი გვერდი აქვს. სტრიმინგი

შეცდომები

შეცდომა არის JSON ობიექტი error წევრით. შემოწმებები ამ თანმიმდევრობით სრულდება: API გასაღები, მოთხოვნის body, მოდელის id, შემდეგ ბალანსი. ცხრილში მოცემულია, რას აბრუნებს ეს endpoint ყველაზე ხშირად. სრულ სიას, იმის მითითებით, რა უნდა განმეორდეს, საკუთარი გვერდი აქვს. შეცდომების დამუშავება

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 სურათის ნაწილი გაიგზავნა 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 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 ოჯახსა და hosted open-weight მოდელებზე.