Lumaktaw sa nilalaman
Chat Completions

Chat Completions

Ang POST /v1/chat/completions ay tumatanggap ng isang conversation at nagbabalik ng susunod na message ng model sa OpenAI Chat Completions format. Gamitin ito mula sa anumang OpenAI SDK o sa plain HTTP; ang pahinang ito ay ang reference na field por field.

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

Ang pinakamaliit na request ay isang model id at isang user message.

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)

Ang reply ay isang JSON object:

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
  }
}

Mga header

Mga request header

Header Value Paglalarawan
Authorization Bearer YOUR_API_KEY Ang iyong API key. Tinatanggap bilang kapalit nito ang x-api-key: YOUR_API_KEY sa bawat endpoint.
Content-Type application/json Kinakailangan. Ang anumang ibang value ay nagbabalik ng 415.
x-request-id Opsyonal. Ang sarili mong id para sa request. Bumabalik ito nang walang pagbabago sa reply.

Mga reply header

Header Paglalarawan
x-request-id Sa bawat reply, kasama ang mga error at stream: ang value na ipinadala mo, o 12 hexadecimal na character kapag wala kang ipinadala. Banggitin ito kapag nag-uulat ka ng problema.
content-type application/json, o text/event-stream kapag true ang stream.

Mga request field

messages lamang ang kinakailangan. Pinangangalanan ng column na Ina-apply ng ang mga model kung saan binabago ng isang field ang reply. Ang mga hosted open-weight model ay ang labindalawang id sa listahan ng model; ang pamilyang Shannon 3 ay shannon-3, shannon-3-pro, shannon-3.1 at shannon-3.1-pro. Mga model at presyo

Field Type Default Paglalarawan Ina-apply ng
model string shannon-1.6-lite Ang model na sasagot: isang id mula sa listahan ng model. Ipadala ito sa bawat request. Hindi case-sensitive ang pagtutugma. Ang id na hindi inilathala ay nagbabalik ng 400 unknown model. Lahat ng model
messages array Kinakailangan. Ang conversation, pinakamatandang mensahe muna. Tingnan ang Messages sa ibaba. Lahat ng model
stream boolean false Ipinapadala ng true ang reply bilang server-sent events habang isinusulat ito. Lahat ng model
max_tokens integer 4096 Pinakamataas na limitasyon ng reply, sa tokens. Ang value na wala sa 1 hanggang 65,536 ay ililipat sa saklaw na iyon. Ito rin ang halagang itinatabi mula sa iyong balance habang tumatakbo ang request. Tingnan ang Haba ng output sa ibaba. Mga hosted open-weight model, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Kapareho ng max_tokens. Kapag parehong ipinadala, ginagamit ang max_tokens. Mga hosted open-weight model, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Sampling temperature. Sa mga hosted open-weight model, 1 ang default at pinananatili ang mga value sa pagitan ng 0 at 2. Mga hosted open-weight model, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus sampling. Pinananatili ang mga value sa pagitan ng 0 at 1. Mga hosted open-weight model
seed integer Seed ng sampler, anumang integer. Kung wala ito, hinango ang seed mula sa model at sa conversation, kaya parehong seed ang ginagamit kapag dalawang beses ipinadala ang parehong request. Mga hosted open-weight model
stop string | array Isang string o array ng mga string. Hanggang 4 ang ginagamit. Natatapos ang sagot bago ang una sa mga lumabas; hindi ibinabalik ang mismong stop text. Mga hosted open-weight model
reasoning_effort string high Gaano karami ang pag-reason ng model bago sumagot: off, low, medium o high. Ang none at minimal ay nangangahulugang off, ang default ay nangangahulugang medium, ang max ay nangangahulugang high. Ang anumang ibang value ay nagbabalik ng 400. Mga hosted open-weight model
reasoning object Ang parehong setting sa anyong object: {"effort": "low"}. Kapag parehong ipinadala, ginagamit ang reasoning_effort. Mga hosted open-weight model
tools array Ang mga function na maaaring tawagin ng model, bawat isa bilang {"type": "function", "function": {"name", "description", "parameters"}}. Bumabalik ang mga call ng model sa tool_calls; pinapatakbo ng iyong code ang mga ito. Lahat ng model
tool_choice string | object auto Hinahayaan ng "auto" ang model na magpasya. Pinipilit ng "required" itong tumawag ng tool. Pinipilit ng {"type": "function", "function": {"name": "…"}} itong tawagin ang tool na iyon. Mga hosted open-weight model
response_format object {"type": "json_object"} para sa sagot na JSON, o {"type": "json_schema", "json_schema": {…}} para sa sagot na sumusunod sa iyong schema. Lahat ng Shannon tier; mga hosted open-weight model ayon sa nakalista kada id
web_search boolean false Hinahayaan ng true ang model na mag-search sa web bago sumagot. shannon-1.6-*, shannon-2-*, pamilyang Shannon 3

Tinatanggap ang iba pang OpenAI field, gaya ng n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store at prompt_cache_key, para tumakbo nang walang pagbabago ang kasalukuyang client code. Hindi nila binabago ang reply: palaging iisa ang choice, at palaging nagtatapos sa usage ang stream.

Ang field na may maling JSON type, halimbawa "max_tokens": "100", ay nagbabalik ng 422. Ganoon din ang request na walang messages.

May sariling pahina ang tools, structured output, reasoning at web search: Function calling, Structured outputs, Reasoning effort, Web search.

Isang request na may mga opsyon

Nagtatakda ang request na ito ng system message, mga sampling field at reasoning effort. Gumagamit ito ng hosted open-weight model, na ina-apply ang lahat ng ito.

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)

Kapareho ng hugis sa itaas ang reply. Nagdaragdag ang usage nito ng dalawang detalye sa mga hosted open-weight model: ang mga prompt token na binasa mula sa cache at ang mga token na ginugol sa reasoning.

200 JSON
{
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 62,
    "total_tokens": 93,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 21
    }
  }
}

Haba ng output

Dalawa ang ginagawa ng max_tokens. Una, ito ang bilang ng token na itinatabi mula sa iyong balance kapag nagsimula ang request. Kapag kumpleto na ang reply, pinapalitan ang halagang iyon ng mga token na aktuwal na nagamit ng request. Kung mas malaki ang max_tokens kaysa sa natitira sa iyong balance, nagbabalik ang request ng 429 Quota exceeded kahit kasya sana ang mismong reply. Magpadala ng mas mababang max_tokens para mas kaunti ang maitabi.

Iba ang pagbilang sa shannon-coder-1 sa endpoint na ito: ang bawat request ay isa sa Shannon Coder calls ng iyong plan, at walang token na itinatabi para rito. Mga limitasyon at balance

Pangalawa, nililimitahan nito ang haba ng reply sa mga model na ito:

Mga model Ano ang ginagawa ng max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Humihinto ang reply kapag naabot ang limitasyon. Nagtatapos ang stream sa finish_reason na length.
Mga hosted open-weight model Humihinto ang text ng sagot sa max_tokens. Hindi binibilang laban dito ang reasoning. Ang mga value na mas mababa sa 256 ay itinuturing na 256.

Kung walang max_tokens o max_completion_tokens, ang value ay 4,096. Sa shannon-coder-1 ay 65,536.

Messages

Ang bawat message ay isang object na may role at content. Ang content ay isang string, o isang array ng mga part kapag may dalang higit sa text ang message.

Role Paglalarawan Ina-apply ng
system Mga tagubilin para sa model. Ilagay ito sa simula. Sa mga Shannon tier, ang unang system message ang ginagamit. Mga hosted open-weight model, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Binabasa bilang system. Mga hosted open-weight model
user Ang itinatanong mo. Sa mga Shannon tier, ang huling user message ang prompt at ang mga message bago nito ang history. Lahat ng model
assistant Mga naunang reply ng model. Panatilihin ang tool_calls nito kapag nagpapadala ka ng tool result pagkatapos nito. Lahat ng model
tool Ang resulta ng isang tool call: ang tool_call_id ay may id ng call at ang content ang resulta bilang string. Lahat ng model

Sa isang id ng pamilyang Shannon 3, ilagay sa user message ang mga tagubiling dapat masunod.

Sa mga Shannon tier, ang request na walang user text at walang tools ay nagbabalik ng 400 No user message provided.

Mga content part

Part Paglalarawan Available sa
{"type": "text", "text": "…"} Plain text. Lahat ng model
{"type": "image_url", "image_url": {"url": "…"}} Isang image, bilang data: URL na may base64 na content o bilang http(s) URL. Pamilyang Shannon 3, shannon-1.6-lite, shannon-1.6-pro, at ang mga hosted open-weight model na may image input
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Isang dokumento (PDF, Word, PowerPoint o Excel), bilang base64 o sa pamamagitan ng URL. Pamilyang Shannon 3

May sariling pahina ang mga laki, limitasyon at ang buong listahan ng mga anyo. Mga image at file

Ang reply object

Field Type Paglalarawan
id string chatcmpl- na sinusundan ng 32 hexadecimal na character.
object string Palaging chat.completion.
created integer Oras ng reply, sa Unix seconds.
model string Ang canonical id ng model na sumagot. Maaari itong magkaiba sa baybay mula sa id na ipinadala mo.
choices array Palaging eksaktong isang choice, na may index 0.
choices[0].message.role string Palaging assistant.
choices[0].message.content string | null Ang text ng sagot. Kapag may tool_calls, null ito sa mga Shannon tier; maaaring magpadala ang mga hosted open-weight model ng text katabi ng mga call.
choices[0].message.reasoning_content string | null Ang reasoning na isinulat ng model bago ang sagot, o null kapag wala.
choices[0].message.tool_calls array Naroroon lamang kapag tumatawag ng tools ang model. May id, type na function, at function na may name at arguments bilang JSON string ang bawat entry.
choices[0].message.annotations array Sa request lang na may web_search: true na may nakitang resulta ang search. Isang url_citation para sa bawat source na pinangalanan ng isang marker sa content, na may url, title, start_index at end_index (ang posisyon ng marker, binibilang sa mga character, hindi kasama ang dulo).
choices[0].finish_reason string Kung bakit natapos ang reply. Tingnan ang Mga dahilan ng pagtatapos.
usage object Ang mga token ng request. Tingnan ang Usage.
sources array Sa request lang na may web_search: true na may nakitang resulta ang search: ang mga resultang ibinigay sa model, bawat isa ay may index, title at url. Ang [1] sa sagot ay ang entry na may index na 1.

Mga dahilan ng pagtatapos

finish_reason Paglalarawan
stop Natapos ng model ang sagot nito, o lumabas ang isang stop string.
tool_calls Tumatawag ang model ng isa o higit pang tool. Patakbuhin ang mga ito at ipadala ang mga resulta sa mga tool message.
length Naputol ang reply sa output limit. Iniuulat sa mga stream ng shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 at pamilyang Shannon 3.

Ang reply na hindi naka-stream ay nag-uulat ng stop o tool_calls.

Usage

Field Type Paglalarawan Available sa
usage.prompt_tokens integer Input tokens. Lahat ng model
usage.completion_tokens integer Output tokens: reasoning, sagot at tool call na pinagsama. Lahat ng model
usage.total_tokens integer prompt_tokens dagdag ang completion_tokens. Lahat ng model
usage.prompt_tokens_details.cached_tokens integer Ang bahagi ng prompt_tokens na binasa mula sa prompt cache. Mga hosted open-weight model
usage.completion_tokens_details.reasoning_tokens integer Ang bahagi ng completion_tokens na ginugol sa reasoning. Mga hosted open-weight model

Sa mga hosted open-weight model, ang prompt_tokens ay ang iyong mga message at tool definition na binilang gamit ang sariling tokenizer ng model, dagdag ang mga token ng anumang image. Ibinabalik ng mga token counting endpoint ang parehong numero bago ka magpadala. Pagbibilang ng token

Sa mga Shannon tier, binibilang ng prompt_tokens ang lahat ng binasa ng model para isulat ang reply, kaya mas malaki ito kaysa sa text ng iyong mga message lamang.

Streaming

Kapag naka-set ang stream sa true, dumarating ang reply bilang mga chat.completion.chunk event at nagtatapos sa data: [DONE]. Dala ng huling chunk bago nito ang finish_reason at usage; walang kailangang stream_options. May sariling pahina ang mga hugis ng chunk, keep-alive line at mga error sa loob ng stream. Pag‑stream

Mga error

Ang error ay isang JSON object na may miyembrong error. Tumatakbo ang mga pagsusuri sa pagkakasunod na ito: API key, request body, model id, saka balance. Inililista ng talahanayan ang pinakamadalas na ibinabalik ng endpoint na ito. May sariling pahina ang buong listahan, kasama kung ano ang dapat i-retry. Paghawak ng Error

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Type Mensahe Kailan
401 authentication_error Missing authentication
Invalid API key
Walang API key na naipadala, o hindi kilala o na-revoke ang key.
400 invalid_request_error unknown model: <id> Hindi inilathalang id ang model.
400 invalid_request_error No user message provided Mga Shannon tier: walang user text at walang tools ang request.
400 invalid_request_error <id> does not accept image input Nagpadala ng image part sa isang hosted open-weight model na walang image input.
400 invalid_request_error <id> does not accept response_format Nagpadala ng response_format sa isang hosted open-weight model na walang structured output.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Ang reasoning_effort ay may value na wala sa listahan.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Kulang ang messages, o mali ang JSON type ng isang field.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Mas malaki ang max_tokens kaysa sa natitira sa iyong balance.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: higit sa 120 request sa loob ng isang minuto sa iyong account.
500 server_error The model backend failed to answer. Please retry. Hindi nakabuo ng reply ang model. Ipadala muli ang request.
502 api_error The model backend failed to answer. Please retry. Pareho, sa pamilyang Shannon 3 at sa mga hosted open-weight model.