Langkau ke kandungan
Chat Completions

Chat Completions

POST /v1/chat/completions menerima perbualan dan memulangkan mesej seterusnya daripada model dalam format OpenAI Chat Completions. Gunakannya daripada mana-mana SDK OpenAI atau melalui HTTP biasa; halaman ini ialah rujukan medan demi medan.

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

Permintaan terkecil ialah id model dan satu mesej pengguna.

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)

Balasan ialah satu objek 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 permintaan

Header Nilai Penerangan
Authorization Bearer YOUR_API_KEY Kunci API anda. x-api-key: YOUR_API_KEY diterima sebagai gantinya pada setiap endpoint.
Content-Type application/json Diperlukan. Sebarang nilai lain memulangkan 415.
x-request-id Pilihan. Id anda sendiri untuk permintaan. Ia dikembalikan tanpa perubahan pada balasan.

Header balasan

Header Penerangan
x-request-id Pada setiap balasan, termasuk ralat dan stream: nilai yang anda hantar, atau 12 aksara heksadesimal apabila anda tidak menghantar apa-apa. Nyatakannya apabila anda melaporkan masalah.
content-type application/json, atau text/event-stream apabila stream ialah true.

Medan permintaan

Hanya messages yang diperlukan. Lajur Dilaksanakan oleh menamakan model yang balasannya diubah oleh sesuatu medan. Model open-weight yang dihoskan ialah dua belas id dalam senarai model; keluarga Shannon 3 ialah shannon-3, shannon-3-pro, shannon-3.1 dan shannon-3.1-pro. Model & harga

Medan Jenis Lalai Penerangan Dilaksanakan oleh
model string shannon-1.6-lite Model yang menjawab: id daripada senarai model. Hantar dengan setiap permintaan. Padanan tidak sensitif huruf besar-kecil. Id yang tidak diterbitkan memulangkan 400 unknown model. Semua model
messages array Diperlukan. Perbualan, mesej tertua dahulu. Lihat Mesej di bawah. Semua model
stream boolean false true menghantar balasan sebagai server-sent events semasa ia ditulis. Semua model
max_tokens integer 4096 Had atas balasan, dalam token. Nilai di luar 1 hingga 65,536 dialihkan ke dalam julat itu. Ia juga jumlah yang diketepikan daripada baki anda semasa permintaan berjalan. Lihat Panjang output di bawah. Model open-weight yang dihoskan, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Sama seperti max_tokens. Apabila kedua-duanya dihantar, max_tokens digunakan. Model open-weight yang dihoskan, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Suhu persampelan. Pada model open-weight yang dihoskan lalainya ialah 1 dan nilai dikekalkan antara 0 dan 2. Model open-weight yang dihoskan, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Persampelan nukleus. Nilai dikekalkan antara 0 dan 1. Model open-weight yang dihoskan
seed integer Seed bagi pensampel, sebarang integer. Tanpanya, seed diperoleh daripada model dan perbualan, jadi permintaan yang sama yang dihantar dua kali menggunakan seed yang sama. Model open-weight yang dihoskan
stop string | array Rentetan atau tatasusunan rentetan. Sehingga 4 digunakan. Jawapan berakhir sebelum yang pertama muncul; teks henti itu sendiri tidak dipulangkan. Model open-weight yang dihoskan
reasoning_effort string high Sejauh mana model bernalar sebelum menjawab: off, low, medium atau high. none dan minimal bermaksud off, default bermaksud medium, max bermaksud high. Sebarang nilai lain memulangkan 400. Model open-weight yang dihoskan
reasoning object Tetapan yang sama dalam bentuk objek: {"effort": "low"}. Apabila kedua-duanya dihantar, reasoning_effort digunakan. Model open-weight yang dihoskan
tools array Fungsi yang boleh dipanggil oleh model, masing-masing sebagai {"type": "function", "function": {"name", "description", "parameters"}}. Panggilan model kembali dalam tool_calls; kod anda menjalankannya. Semua model
tool_choice string | object auto "auto" membiarkan model memutuskan. "required" membuatnya memanggil alat. {"type": "function", "function": {"name": "…"}} membuatnya memanggil alat itu. Model open-weight yang dihoskan
response_format object {"type": "json_object"} untuk jawapan JSON, atau {"type": "json_schema", "json_schema": {…}} untuk jawapan yang mengikut skema anda. Semua peringkat Shannon; model open-weight yang dihoskan seperti disenaraikan bagi setiap id
web_search boolean false true membenarkan model mencari di web sebelum menjawab. shannon-1.6-*, shannon-2-*, keluarga Shannon 3

Medan OpenAI yang lain, seperti n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store dan prompt_cache_key, diterima supaya kod klien sedia ada berjalan tanpa perubahan. Ia tidak mengubah balasan: sentiasa ada satu choice, dan stream sentiasa berakhir dengan penggunaan.

Medan dengan jenis JSON yang salah, contohnya "max_tokens": "100", memulangkan 422. Permintaan tanpa messages juga begitu.

Alat, output berstruktur, penaakulan dan carian web masing-masing mempunyai halaman tersendiri: Panggilan Fungsi, Output Berstruktur, Usaha penaakulan, Carian Web Terbina dalam.

Permintaan dengan pilihan

Permintaan ini menetapkan mesej sistem, medan persampelan dan tahap usaha penaakulan. Ia menggunakan model open-weight yang dihoskan, yang melaksanakan kesemuanya.

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)

Balasan mempunyai bentuk yang sama seperti di atas. usagenya menambah dua butiran pada model open-weight yang dihoskan: token prompt yang dibaca daripada cache dan token yang dibelanjakan untuk penaakulan.

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

Panjang output

max_tokens melakukan dua perkara. Pertama, ia ialah bilangan token yang diketepikan daripada baki anda apabila permintaan bermula. Apabila balasan selesai, jumlah itu digantikan dengan token yang digunakan oleh permintaan. Jika max_tokens lebih besar daripada baki anda yang tinggal, permintaan memulangkan 429 Quota exceeded walaupun balasan itu sendiri akan muat. Hantar max_tokens yang lebih rendah untuk mengetepikan lebih sedikit.

shannon-coder-1 dikira secara berbeza pada endpoint ini: setiap permintaan ialah satu daripada panggilan Shannon Coder pelan anda, dan tiada token diketepikan untuknya. Had dan baki

Kedua, ia mengehadkan panjang balasan pada model ini:

Model Apa yang dilakukan oleh max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Balasan berhenti apabila mencapai had. Stream kemudian berakhir dengan finish_reason length.
Model open-weight yang dihoskan Teks jawapan berhenti pada max_tokens. Penaakulan tidak dikira terhadapnya. Nilai di bawah 256 bertindak sebagai 256.

Tanpa max_tokens atau max_completion_tokens, nilainya ialah 4,096. Pada shannon-coder-1 ia ialah 65,536.

Mesej

Setiap mesej ialah objek dengan role dan content. content ialah rentetan, atau tatasusunan bahagian apabila mesej membawa lebih daripada teks.

Peranan Penerangan Dilaksanakan oleh
system Arahan untuk model. Letakkannya di hadapan. Pada peringkat Shannon, mesej system pertama yang digunakan. Model open-weight yang dihoskan, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Dibaca sebagai system. Model open-weight yang dihoskan
user Apa yang anda tanya. Pada peringkat Shannon, mesej user yang terakhir ialah prompt dan mesej sebelumnya ialah sejarah. Semua model
assistant Balasan terdahulu daripada model. Kekalkan tool_callsnya apabila anda menghantar hasil alat selepasnya. Semua model
tool Hasil panggilan alat: tool_call_id mengandungi id panggilan dan content hasilnya sebagai rentetan. Semua model

Dengan id keluarga Shannon 3, letakkan arahan yang mesti dipatuhi dalam mesej user.

Pada peringkat Shannon, permintaan tanpa teks pengguna dan tanpa tools memulangkan 400 No user message provided.

Bahagian kandungan

Bahagian Penerangan Tersedia pada
{"type": "text", "text": "…"} Teks biasa. Semua model
{"type": "image_url", "image_url": {"url": "…"}} Imej, sebagai URL data: dengan kandungan base64 atau sebagai URL http(s). Keluarga Shannon 3, shannon-1.6-lite, shannon-1.6-pro, dan model open-weight yang dihoskan yang menyenaraikan input imej
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokumen (PDF, Word, PowerPoint atau Excel), sebagai base64 atau melalui URL. Keluarga Shannon 3

Saiz, had dan senarai penuh bentuk mempunyai halaman tersendiri. Imej dan fail

Objek balasan

Medan Jenis Penerangan
id string chatcmpl- diikuti 32 aksara heksadesimal.
object string Sentiasa chat.completion.
created integer Masa balasan, dalam saat Unix.
model string Id kanonik model yang menjawab. Ejaannya boleh berbeza daripada id yang anda hantar.
choices array Sentiasa tepat satu choice, dengan index 0.
choices[0].message.role string Sentiasa assistant.
choices[0].message.content string | null Teks jawapan. Dengan tool_calls ia ialah null pada peringkat Shannon; model open-weight yang dihoskan boleh menghantar teks di sebelah panggilan.
choices[0].message.reasoning_content string | null Penaakulan yang ditulis oleh model sebelum jawapan, atau null apabila tiada.
choices[0].message.tool_calls array Hanya hadir apabila model memanggil alat. Setiap entri mempunyai id, type function, dan function dengan name dan arguments sebagai rentetan JSON.
choices[0].message.annotations array Hanya pada permintaan dengan web_search: true yang carian untuknya menemui sesuatu. Satu url_citation bagi setiap sumber yang dinamakan oleh penanda dalam content, dengan url, title, start_index dan end_index (kedudukan penanda, dikira dalam aksara, hujung tidak termasuk).
choices[0].finish_reason string Sebab balasan berakhir. Lihat Sebab selesai.
usage object Token bagi permintaan. Lihat Penggunaan.
sources array Hanya pada permintaan dengan web_search: true yang carian untuknya menemui sesuatu: hasil yang diberikan kepada model, setiap satu dengan index, title dan url. [1] dalam jawapan ialah entri dengan index 1.

Sebab selesai

finish_reason Penerangan
stop Model menamatkan jawapannya, atau rentetan stop muncul.
tool_calls Model memanggil satu atau lebih alat. Jalankannya dan hantar hasilnya dalam mesej tool.
length Balasan dipotong pada had output. Dilaporkan dalam stream shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 dan keluarga Shannon 3.

Balasan yang bukan stream melaporkan stop atau tool_calls.

Penggunaan

Medan Jenis Penerangan Tersedia pada
usage.prompt_tokens integer Token input. Semua model
usage.completion_tokens integer Token output: penaakulan, jawapan dan panggilan alat bersama-sama. Semua model
usage.total_tokens integer prompt_tokens campur completion_tokens. Semua model
usage.prompt_tokens_details.cached_tokens integer Bahagian prompt_tokens yang dibaca daripada cache prompt. Model open-weight yang dihoskan
usage.completion_tokens_details.reasoning_tokens integer Bahagian completion_tokens yang dibelanjakan untuk penaakulan. Model open-weight yang dihoskan

Pada model open-weight yang dihoskan, prompt_tokens ialah mesej dan takrifan alat anda yang dikira dengan tokenizer model itu sendiri, ditambah token mana-mana imej. Endpoint pengiraan token memulangkan nombor yang sama sebelum anda menghantar. Pengiraan token

Pada peringkat Shannon, prompt_tokens mengira segala yang dibaca oleh model untuk menulis balasan, jadi ia lebih besar daripada teks mesej anda sahaja.

Streaming

Dengan stream ditetapkan kepada true, balasan tiba sebagai peristiwa chat.completion.chunk dan berakhir dengan data: [DONE]. Ketulan terakhir sebelumnya membawa finish_reason dan usage; tiada stream_options diperlukan. Bentuk ketulan, baris keep-alive dan ralat di dalam stream mempunyai halaman tersendiri. Penstriman

Ralat

Ralat ialah objek JSON dengan ahli error. Semakan berjalan mengikut urutan ini: kunci API, badan permintaan, id model, kemudian baki. Jadual menyenaraikan apa yang paling kerap dipulangkan oleh endpoint ini. Senarai penuh, beserta apa yang perlu dicuba semula, mempunyai halaman tersendiri. Pengendalian Ralat

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Jenis Mesej Bila
401 authentication_error Missing authentication
Invalid API key
Tiada kunci API dihantar, atau kunci itu tidak dikenali atau telah dibatalkan.
400 invalid_request_error unknown model: <id> model bukan id yang diterbitkan.
400 invalid_request_error No user message provided Peringkat Shannon: permintaan tidak mempunyai teks pengguna dan tiada tools.
400 invalid_request_error <id> does not accept image input Bahagian imej dihantar kepada model open-weight yang dihoskan tanpa input imej.
400 invalid_request_error <id> does not accept response_format response_format dihantar kepada model open-weight yang dihoskan tanpa output berstruktur.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort mengandungi nilai di luar senarai.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages tiada, atau sesuatu medan mempunyai jenis JSON yang salah.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens lebih besar daripada baki anda yang tinggal.
429 rate_limit_error Too many requests. Retry in <n>s. Perlindungan lonjakan: lebih daripada 120 permintaan dalam satu minit pada akaun anda.
500 server_error The model backend failed to answer. Please retry. Model tidak menghasilkan balasan. Hantar permintaan sekali lagi.
502 api_error The model backend failed to answer. Please retry. Sama, pada keluarga Shannon 3 dan model open-weight yang dihoskan.