Salti al la enhavo
Chat Completions

Chat Completions

POST /v1/chat/completions prenas konversacion kaj redonas la sekvan mesaĝon de la modelo en la formato OpenAI Chat Completions. Uzu ĝin el ajna SDK de OpenAI aŭ per simpla HTTP; ĉi tiu paĝo estas la referenco kampo post kampo.

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

La plej malgranda peto estas modelo-id kaj unu uzanta mesaĝo.

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)

La respondo estas unu JSON-objekto:

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

Kapoj

Kapoj de peto

Kapo Valoro Priskribo
Authorization Bearer YOUR_API_KEY Via API-ŝlosilo. x-api-key: YOUR_API_KEY estas akceptata anstataŭ ĝi ĉe ĉiu endpoint.
Content-Type application/json Deviga. Ĉiu alia valoro redonas 415.
x-request-id Laŭvola. Via propra id por la peto. Ĝi revenas senŝanĝe en la respondo.

Kapoj de respondo

Kapo Priskribo
x-request-id Ĉe ĉiu respondo, inkluzive de eraroj kaj fluoj: la valoro, kiun vi sendis, aŭ 12 deksesumaj signoj, kiam vi sendis nenion. Citu ĝin, kiam vi raportas problemon.
content-type application/json, aŭ text/event-stream kiam stream estas true.

Kampoj de peto

Nur messages estas deviga. La kolumno Aplikata de nomas la modelojn, ĉe kiuj kampo ŝanĝas la respondon. La gastigitaj malfermpezaj modeloj estas la dek du id-oj de la modellisto; la familio Shannon 3 estas shannon-3, shannon-3-pro, shannon-3.1 kaj shannon-3.1-pro. Modeloj kaj prezoj

Kampo Tipo Defaŭlto Priskribo Aplikata de
model string shannon-1.6-lite La modelo, kiu respondas: id el la modellisto. Sendu ĝin kun ĉiu peto. La kongruigo ne distingas majusklojn. Id, kiu ne estas publikigita, redonas 400 unknown model. Ĉiuj modeloj
messages array Deviga. La konversacio, plej malnova mesaĝo unue. Vidu Mesaĝoj sube. Ĉiuj modeloj
stream boolean false true sendas la respondon kiel server-sent events dum ĝi estas skribata. Ĉiuj modeloj
max_tokens integer 4096 Supra limo de la respondo, en tokenoj. Valoro ekster 1 ĝis 65,536 estas movita en tiun intervalon. Ĝi ankaŭ estas la kvanto, kiu estas rezervita el via saldo dum la peto funkcias. Vidu Longeco de la eligo sube. Gastigitaj malfermpezaj modeloj, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Same kiel max_tokens. Kiam ambaŭ estas senditaj, max_tokens estas uzata. Gastigitaj malfermpezaj modeloj, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Specimena temperaturo. Ĉe la gastigitaj malfermpezaj modeloj la defaŭlto estas 1 kaj la valoroj estas tenataj inter 0 kaj 2. Gastigitaj malfermpezaj modeloj, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Specimenado per nukleo (nucleus sampling). La valoroj estas tenataj inter 0 kaj 1. Gastigitaj malfermpezaj modeloj
seed integer Semo de la specimenilo, ajna entjero. Sen ĝi la semo estas derivata el la modelo kaj la konversacio, do la sama peto, sendita dufoje, uzas la saman semon. Gastigitaj malfermpezaj modeloj
stop string | array Ĉeno aŭ tabelo de ĉenoj. Ĝis 4 estas uzataj. La respondo finiĝas antaŭ la unua, kiu aperas; la halta teksto mem ne estas redonata. Gastigitaj malfermpezaj modeloj
reasoning_effort string high Kiom la modelo rezonas antaŭ ol respondi: off, low, medium aŭ high. none kaj minimal signifas off, default signifas medium, max signifas high. Ĉiu alia valoro redonas 400. Gastigitaj malfermpezaj modeloj
reasoning object La sama agordo en objekta formo: {"effort": "low"}. Kiam ambaŭ estas senditaj, reasoning_effort estas uzata. Gastigitaj malfermpezaj modeloj
tools array La funkcioj, kiujn la modelo rajtas voki, ĉiu kiel {"type": "function", "function": {"name", "description", "parameters"}}. La vokoj de la modelo revenas en tool_calls; via kodo plenumas ilin. Ĉiuj modeloj
tool_choice string | object auto "auto" lasas la modelon decidi. "required" devigas ĝin voki ilon. {"type": "function", "function": {"name": "…"}} devigas ĝin voki tiun ilon. Gastigitaj malfermpezaj modeloj
response_format object {"type": "json_object"} por JSON-respondo, aŭ {"type": "json_schema", "json_schema": {…}} por respondo, kiu sekvas vian skemon. Ĉiuj Shannon-niveloj; gastigitaj malfermpezaj modeloj laŭ la listo por ĉiu id
web_search boolean false true lasas la modelon serĉi en la reto antaŭ ol respondi. shannon-1.6-*, shannon-2-*, familio Shannon 3

Aliaj kampoj de OpenAI, kiel n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store kaj prompt_cache_key, estas akceptataj, por ke ekzistanta klienta kodo funkciu senŝanĝe. Ili ne ŝanĝas la respondon: ĉiam ekzistas unu elekto, kaj fluo ĉiam finiĝas per uzado.

Kampo kun malĝusta JSON-tipo, ekzemple "max_tokens": "100", redonas 422. Peto sen messages same.

Iloj, strukturita eligo, reasoning kaj retserĉo havas ĉiu sian propran paĝon: Funkci-alvokoj, Strukturitaj eligoj, Peno de reasoning, Retserĉo.

Peto kun opcioj

Ĉi tiu peto agordas mesaĝon system, la specimenajn kampojn kaj la penon de reasoning. Ĝi uzas gastigitan malfermpezan modelon, kiu aplikas ĉiujn.

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)

La respondo havas la saman formon kiel supre. Ĝia usage aldonas du detalojn ĉe la gastigitaj malfermpezaj modeloj: la prompt-tokenojn legitajn el la kaŝmemoro kaj la tokenojn elspezitajn por 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
    }
  }
}

Longeco de la eligo

max_tokens faras du aferojn. Unue, ĝi estas la nombro de tokenoj rezervitaj el via saldo, kiam la peto komenciĝas. Kiam la respondo estas kompleta, tiu kvanto estas anstataŭigita per la tokenoj, kiujn la peto uzis. Se max_tokens estas pli granda ol tio, kio restas el via saldo, la peto redonas 429 Quota exceeded eĉ se la respondo mem sufiĉus. Sendu pli malaltan max_tokens por rezervi malpli.

shannon-coder-1 estas kalkulata alie ĉe ĉi tiu endpoint: ĉiu peto estas unu el la vokoj de Shannon Coder de via plano, kaj neniuj tokenoj estas rezervataj por ĝi. Limoj kaj saldo

Due, ĝi limigas la longecon de la respondo ĉe ĉi tiuj modeloj:

Modeloj Kion faras max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 La respondo haltas, kiam ĝi atingas la limon. Fluo tiam finiĝas per finish_reason length.
Gastigitaj malfermpezaj modeloj La teksto de la respondo haltas ĉe max_tokens. Reasoning ne estas kalkulata kontraŭ ĝi. Valoroj sub 256 agas kiel 256.

Sen max_tokens aŭ max_completion_tokens la valoro estas 4,096. Ĉe shannon-coder-1 ĝi estas 65,536.

Mesaĝoj

Ĉiu mesaĝo estas objekto kun role kaj content. content estas ĉeno, aŭ tabelo de partoj, kiam la mesaĝo portas pli ol tekston.

Rolo Priskribo Aplikata de
system Instrukcioj por la modelo. Metu ĝin unue. Ĉe la Shannon-niveloj la unua mesaĝo system estas tiu, kiu estas uzata. Gastigitaj malfermpezaj modeloj, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Legata kiel system. Gastigitaj malfermpezaj modeloj
user Tio, kion vi demandas. Ĉe la Shannon-niveloj la lasta mesaĝo user estas la prompto kaj la antaŭaj mesaĝoj estas la historio. Ĉiuj modeloj
assistant Pli fruaj respondoj de la modelo. Konservu ĝiajn tool_calls, kiam vi sendas ilo-rezulton post ĝi. Ĉiuj modeloj
tool La rezulto de ilovoko: tool_call_id enhavas la id de la voko kaj content la rezulton kiel ĉenon. Ĉiuj modeloj

Kun id de la familio Shannon 3 metu instrukciojn, kiuj devas validi, en la mesaĝon user.

Ĉe la Shannon-niveloj peto sen uzanta teksto kaj sen tools redonas 400 No user message provided.

Partoj de enhavo

Parto Priskribo Disponebla ĉe
{"type": "text", "text": "…"} Simpla teksto. Ĉiuj modeloj
{"type": "image_url", "image_url": {"url": "…"}} Bildo, kiel URL data: kun base64-enhavo aŭ kiel URL http(s). Familio Shannon 3, shannon-1.6-lite, shannon-1.6-pro kaj la gastigitaj malfermpezaj modeloj, kiuj listigas bildan enigon
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokumento (PDF, Word, PowerPoint aŭ Excel), kiel base64 aŭ per URL. Familio Shannon 3

Grandoj, limoj kaj la plena listo de formoj havas sian propran paĝon. Bildoj kaj dosieroj

La responda objekto

Kampo Tipo Priskribo
id string chatcmpl- sekvata de 32 deksesumaj signoj.
object string Ĉiam chat.completion.
created integer Tempo de la respondo, en Unix-sekundoj.
model string La kanona id de la modelo, kiu respondis. Ĝi povas diferenci en literumo de la id, kiun vi sendis.
choices array Ĉiam ĝuste unu elekto, kun index 0.
choices[0].message.role string Ĉiam assistant.
choices[0].message.content string | null La teksto de la respondo. Kun tool_calls ĝi estas null ĉe la Shannon-niveloj; la gastigitaj malfermpezaj modeloj povas sendi tekston apud la vokoj.
choices[0].message.reasoning_content string | null La reasoning, kiun la modelo skribis antaŭ la respondo, aŭ null, kiam ne ekzistas.
choices[0].message.tool_calls array Nur kiam la modelo vokas ilojn. Ĉiu ero havas id, type function, kaj function kun name kaj la arguments kiel JSON-ĉeno.
choices[0].message.annotations array Nur ĉe peto kun web_search: true, kies serĉo trovis ion. Unu url_citation por ĉiu fonto, kiun marko en content nomas, kun url, title, start_index kaj end_index (la pozicio de la marko, kalkulita en signoj, fino ne inkluzivita).
choices[0].finish_reason string Kial la respondo finiĝis. Vidu Kialoj de fino.
usage object La tokenoj de la peto. Vidu Uzado.
sources array Nur ĉe peto kun web_search: true, kies serĉo trovis ion: la rezultoj, kiujn la modelo ricevis, ĉiu kun index, title kaj url. [1] en la respondo estas la enskribo kun index 1.

Kialoj de fino

finish_reason Priskribo
stop La modelo finis sian respondon, aŭ aperis ĉeno stop.
tool_calls La modelo vokas unu aŭ pli da iloj. Plenumu ilin kaj sendu la rezultojn en mesaĝoj tool.
length La respondo estis detranĉita ĉe la eliga limo. Raportata en fluoj de shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 kaj la familio Shannon 3.

Nefluata respondo raportas stop aŭ tool_calls.

Uzado

Kampo Tipo Priskribo Disponebla ĉe
usage.prompt_tokens integer Enirtokenoj. Ĉiuj modeloj
usage.completion_tokens integer Eligtokenoj: reasoning, respondo kaj ilovokoj kune. Ĉiuj modeloj
usage.total_tokens integer prompt_tokens plus completion_tokens. Ĉiuj modeloj
usage.prompt_tokens_details.cached_tokens integer La parto de prompt_tokens, kiu estis legita el la prompt-kaŝmemoro. Gastigitaj malfermpezaj modeloj
usage.completion_tokens_details.reasoning_tokens integer La parto de completion_tokens, kiu estis elspezita por reasoning. Gastigitaj malfermpezaj modeloj

Ĉe la gastigitaj malfermpezaj modeloj prompt_tokens estas viaj mesaĝoj kaj ilo-difinoj kalkulitaj per la propra tokenigilo de la modelo, plus la tokenoj de eventualaj bildoj. La endpoints por kalkulado de tokenoj redonas la saman nombron antaŭ ol vi sendas. Kalkulado de tokenoj

Ĉe la Shannon-niveloj prompt_tokens kalkulas ĉion, kion la modelo legis por skribi la respondon, do ĝi estas pli granda ol la teksto de viaj mesaĝoj sola.

Streaming

Kun stream agordita al true la respondo alvenas kiel eventoj chat.completion.chunk kaj finiĝas per data: [DONE]. La lasta peco antaŭ ĝi portas finish_reason kaj usage; neniuj stream_options estas necesaj. La formoj de pecoj, linioj keep-alive kaj eraroj en fluo havas sian propran paĝon. Fluigo

Eraroj

Eraro estas JSON-objekto kun membro error. La kontroloj okazas en ĉi tiu ordo: API-ŝlosilo, petkorpo, modelo-id, poste saldo. La tabelo listigas tion, kion ĉi tiu endpoint plej ofte redonas. La plena listo, kun indiko kiam reprovi, havas sian propran paĝon. Erarotraktado

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Stato Tipo Mesaĝo Kiam
401 authentication_error Missing authentication
Invalid API key
Neniu API-ŝlosilo estis sendita, aŭ la ŝlosilo estas nekonata aŭ revokita.
400 invalid_request_error unknown model: <id> model ne estas publikigita id.
400 invalid_request_error No user message provided Shannon-niveloj: la peto havas nek uzantan tekston nek tools.
400 invalid_request_error <id> does not accept image input Bilda parto estis sendita al gastigita malfermpeza modelo sen bilda enigo.
400 invalid_request_error <id> does not accept response_format response_format estis sendita al gastigita malfermpeza modelo sen strukturita eligo.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort enhavas valoron ekster la listo.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages mankas, aŭ kampo havas malĝustan JSON-tipon.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens estas pli granda ol tio, kio restas el via saldo.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: pli ol 120 petoj en unu minuto en via konto.
500 server_error The model backend failed to answer. Please retry. La modelo ne produktis respondon. Sendu la peton denove.
502 api_error The model backend failed to answer. Please retry. Same, ĉe la familio Shannon 3 kaj la gastigitaj malfermpezaj modeloj.