Slaan oor na inhoud
Chat Completions

Chat Completions

POST /v1/chat/completions neem 'n gesprek en gee die model se volgende boodskap terug in die OpenAI Chat Completions-formaat. Gebruik dit vanaf enige OpenAI SDK of oor gewone HTTP; hierdie bladsy is die veld-vir-veld-verwysing.

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

Die kleinste versoek is 'n model-id en een gebruikersboodskap.

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)

Die antwoord is een JSON-objek:

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

Headers

Versoek-headers

Header Waarde Beskrywing
Authorization Bearer YOUR_API_KEY Jou API-sleutel. x-api-key: YOUR_API_KEY word op elke eindpunt in sy plek aanvaar.
Content-Type application/json Verpligtend. Enige ander waarde gee 415 terug.
x-request-id Opsioneel. Jou eie id vir die versoek. Dit kom ongewysig terug op die antwoord.

Antwoord-headers

Header Beskrywing
x-request-id Op elke antwoord, foute en strome ingesluit: die waarde wat jy gestuur het, of 12 heksadesimale karakters wanneer jy niks gestuur het nie. Haal dit aan wanneer jy 'n probleem rapporteer.
content-type application/json, of text/event-stream wanneer stream true is.

Versoekvelde

Slegs messages is verpligtend. Die kolom Toegepas deur noem die modelle waarop 'n veld die antwoord verander. Die gehuisveste oopgewig-modelle is die twaalf id's van die modellys; die Shannon 3-familie is shannon-3, shannon-3-pro, shannon-3.1 en shannon-3.1-pro. Modelle en pryse

Veld Tipe Verstek Beskrywing Toegepas deur
model string shannon-1.6-lite Die model wat antwoord: 'n id uit die modellys. Stuur dit met elke versoek. Ooreenstemming is nie hooflettergevoelig nie. 'n Id wat nie gepubliseer is nie, gee 400 unknown model terug. Alle modelle
messages array Verpligtend. Die gesprek, oudste boodskap eerste. Sien Boodskappe hieronder. Alle modelle
stream boolean false true stuur die antwoord as server-sent events terwyl dit geskryf word. Alle modelle
max_tokens integer 4096 Boonste limiet van die antwoord, in tokens. 'n Waarde buite 1 tot 65,536 word in daardie reeks geskuif. Dit is ook die hoeveelheid wat van jou balans opsy gesit word terwyl die versoek loop. Sien Uitvoerlengte hieronder. Gehuisveste oopgewig-modelle, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Dieselfde as max_tokens. Wanneer albei gestuur word, word max_tokens gebruik. Gehuisveste oopgewig-modelle, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Steekproef-temperatuur. Op die gehuisveste oopgewig-modelle is die verstek 1 en waardes word tussen 0 en 2 gehou. Gehuisveste oopgewig-modelle, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus-steekproefneming. Waardes word tussen 0 en 1 gehou. Gehuisveste oopgewig-modelle
seed integer Saad van die steekproefnemer, enige heelgetal. Daarsonder word die saad van die model en die gesprek afgelei, so dieselfde versoek wat twee keer gestuur word, gebruik dieselfde saad. Gehuisveste oopgewig-modelle
stop string | array 'n String of 'n skikking van stringe. Tot 4 word gebruik. Die antwoord eindig voor die eerste een wat verskyn; die stopteks self word nie teruggegee nie. Gehuisveste oopgewig-modelle
reasoning_effort string high Hoeveel die model redeneer voor dit antwoord: off, low, medium of high. none en minimal beteken off, default beteken medium, max beteken high. Enige ander waarde gee 400 terug. Gehuisveste oopgewig-modelle
reasoning object Dieselfde instelling in objekvorm: {"effort": "low"}. Wanneer albei gestuur word, word reasoning_effort gebruik. Gehuisveste oopgewig-modelle
tools array Die funksies wat die model mag oproep, elk as {"type": "function", "function": {"name", "description", "parameters"}}. Die model se oproepe kom terug in tool_calls; jou kode voer hulle uit. Alle modelle
tool_choice string | object auto "auto" laat die model besluit. "required" laat dit 'n gereedskap oproep. {"type": "function", "function": {"name": "…"}} laat dit daardie gereedskap oproep. Gehuisveste oopgewig-modelle
response_format object {"type": "json_object"} vir 'n JSON-antwoord, of {"type": "json_schema", "json_schema": {…}} vir 'n antwoord wat jou skema volg. Alle Shannon-vlakke; gehuisveste oopgewig-modelle soos per id gelys
web_search boolean false true laat die model die web deursoek voor dit antwoord. shannon-1.6-*, shannon-2-*, Shannon 3-familie

Ander OpenAI-velde, soos n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store en prompt_cache_key, word aanvaar sodat bestaande kliëntkode ongewysig loop. Hulle verander nie die antwoord nie: daar is altyd een keuse, en 'n stroom eindig altyd met gebruik.

'n Veld met die verkeerde JSON-tipe, byvoorbeeld "max_tokens": "100", gee 422 terug. 'n Versoek sonder messages doen dit ook.

Gereedskap, gestruktureerde uitvoer, redenering en websoektog het elk hul eie bladsy: Funksie-oproepe, Gestruktureerde uitvoer, Redeneringspoging, Websoektog.

'n Versoek met opsies

Hierdie versoek stel 'n stelselboodskap, die steekproefvelde en die redeneringspoging. Dit gebruik 'n gehuisveste oopgewig-model, wat almal toepas.

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)

Die antwoord het dieselfde vorm as hierbo. Sy usage voeg twee besonderhede by op die gehuisveste oopgewig-modelle: die prompt-tokens wat uit die kas gelees is en die tokens wat aan redenering bestee is.

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

Uitvoerlengte

max_tokens doen twee dinge. Eerstens is dit die aantal tokens wat van jou balans opsy gesit word wanneer die versoek begin. Wanneer die antwoord voltooi is, word daardie bedrag vervang deur die tokens wat die versoek gebruik het. As max_tokens groter is as wat van jou balans oor is, gee die versoek 429 Quota exceeded terug selfs wanneer die antwoord self gepas het. Stuur 'n laer max_tokens om minder opsy te sit.

shannon-coder-1 word op hierdie eindpunt anders getel: elke versoek is een van jou plan se Shannon Coder-oproepe, en geen tokens word daarvoor opsy gesit nie. Perke en balans

Tweedens beperk dit die lengte van die antwoord op hierdie modelle:

Modelle Wat max_tokens doen
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Die antwoord stop wanneer dit die limiet bereik. 'n Stroom eindig dan met finish_reason length.
Gehuisveste oopgewig-modelle Die antwoordteks stop by max_tokens. Redenering word nie daarteen getel nie. Waardes onder 256 tree op as 256.

Sonder max_tokens of max_completion_tokens is die waarde 4,096. Op shannon-coder-1 is dit 65,536.

Boodskappe

Elke boodskap is 'n objek met 'n role en 'n content. content is 'n string, of 'n skikking van dele wanneer die boodskap meer as teks dra.

Rol Beskrywing Toegepas deur
system Instruksies vir die model. Sit dit eerste. Op die Shannon-vlakke is die eerste system-boodskap die een wat gebruik word. Gehuisveste oopgewig-modelle, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Word as system gelees. Gehuisveste oopgewig-modelle
user Wat jy vra. Op die Shannon-vlakke is die laaste user-boodskap die prompt en die boodskappe daarvoor is die geskiedenis. Alle modelle
assistant Vroeëre antwoorde van die model. Behou sy tool_calls wanneer jy 'n gereedskapresultaat daarna stuur. Alle modelle
tool Die resultaat van 'n gereedskapoproep: tool_call_id bevat die id van die oproep en content die resultaat as 'n string. Alle modelle

Met 'n Shannon 3-familie-id, sit instruksies wat moet geld in die user-boodskap.

Op die Shannon-vlakke gee 'n versoek sonder gebruikersteks en sonder tools 400 No user message provided terug.

Inhouddele

Deel Beskrywing Beskikbaar op
{"type": "text", "text": "…"} Gewone teks. Alle modelle
{"type": "image_url", "image_url": {"url": "…"}} 'n Beeld, as 'n data:-URL met base64-inhoud of as 'n http(s)-URL. Shannon 3-familie, shannon-1.6-lite, shannon-1.6-pro, en die gehuisveste oopgewig-modelle wat beeldinset lys
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} 'n Dokument (PDF, Word, PowerPoint of Excel), as base64 of per URL. Shannon 3-familie

Groottes, limiete en die volledige lys vorme het hul eie bladsy. Beelde en lêers

Die antwoordobjek

Veld Tipe Beskrywing
id string chatcmpl- gevolg deur 32 heksadesimale karakters.
object string Altyd chat.completion.
created integer Tyd van die antwoord, in Unix-sekondes.
model string Die kanonieke id van die model wat geantwoord het. Dit kan in spelling verskil van die id wat jy gestuur het.
choices array Altyd presies een keuse, met index 0.
choices[0].message.role string Altyd assistant.
choices[0].message.content string | null Die antwoordteks. Met tool_calls is dit null op die Shannon-vlakke; die gehuisveste oopgewig-modelle kan teks langs die oproepe stuur.
choices[0].message.reasoning_content string | null Die redenering wat die model voor die antwoord geskryf het, of null wanneer daar geen is nie.
choices[0].message.tool_calls array Slegs teenwoordig wanneer die model gereedskap oproep. Elke inskrywing het 'n id, type function, en function met die name en die arguments as 'n JSON-string.
choices[0].message.annotations array Net op 'n versoek met web_search: true waarvan die soektog iets gevind het. Een url_citation vir elke bron wat 'n merker in content noem, met url, title, start_index en end_index (die posisie van die merker, in karakters getel, einde nie ingesluit nie).
choices[0].finish_reason string Hoekom die antwoord geëindig het. Sien Eindredes.
usage object Die tokens van die versoek. Sien Gebruik.
sources array Net op 'n versoek met web_search: true waarvan die soektog iets gevind het: die resultate wat aan die model gegee is, elk met index, title en url. [1] in die antwoord is die inskrywing met index 1.

Eindredes

finish_reason Beskrywing
stop Die model het sy antwoord voltooi, of 'n stop-string het verskyn.
tool_calls Die model roep een of meer gereedskap op. Voer hulle uit en stuur die resultate in tool-boodskappe.
length Die antwoord is by die uitvoerlimiet afgesny. Word gerapporteer in strome van shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 en die Shannon 3-familie.

'n Antwoord wat nie gestroom word nie, rapporteer stop of tool_calls.

Gebruik

Veld Tipe Beskrywing Beskikbaar op
usage.prompt_tokens integer Insettokens. Alle modelle
usage.completion_tokens integer Uitvoertokens: redenering, antwoord en gereedskapoproepe saam. Alle modelle
usage.total_tokens integer prompt_tokens plus completion_tokens. Alle modelle
usage.prompt_tokens_details.cached_tokens integer Die deel van prompt_tokens wat uit die prompt-kas gelees is. Gehuisveste oopgewig-modelle
usage.completion_tokens_details.reasoning_tokens integer Die deel van completion_tokens wat aan redenering bestee is. Gehuisveste oopgewig-modelle

Op die gehuisveste oopgewig-modelle is prompt_tokens jou boodskappe en gereedskapdefinisies getel met die model se eie tokeniseerder, plus die tokens van enige beelde. Die tokentel-eindpunte gee dieselfde getal terug voordat jy stuur. Tokens tel

Op die Shannon-vlakke tel prompt_tokens alles wat die model gelees het om die antwoord te skryf, so dit is groter as die teks van jou boodskappe alleen.

Streaming

Met stream op true kom die antwoord aan as chat.completion.chunk-gebeurtenisse en eindig met data: [DONE]. Die laaste brokkie daarvoor dra finish_reason en usage; geen stream_options is nodig nie. Die brokkievorme, keep-alive-reëls en foute binne 'n stroom het hul eie bladsy. Stroming

Foute

'n Fout is 'n JSON-objek met 'n error-lid. Kontroles loop in hierdie volgorde: API-sleutel, versoekliggaam, model-id, dan balans. Die tabel lys wat hierdie eindpunt die meeste teruggee. Die volledige lys, met wat om weer te probeer, het sy eie bladsy. Fouthantering

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Tipe Boodskap Wanneer
401 authentication_error Missing authentication
Invalid API key
Geen API-sleutel is gestuur nie, of die sleutel is onbekend of herroep.
400 invalid_request_error unknown model: <id> model is nie 'n gepubliseerde id nie.
400 invalid_request_error No user message provided Shannon-vlakke: die versoek het geen gebruikersteks en geen tools nie.
400 invalid_request_error <id> does not accept image input 'n Beelddeel is na 'n gehuisveste oopgewig-model gestuur sonder beeldinset.
400 invalid_request_error <id> does not accept response_format response_format is gestuur na 'n gehuisveste oopgewig-model sonder gestruktureerde uitvoer.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort bevat 'n waarde buite die lys.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages ontbreek, of 'n veld het die verkeerde JSON-tipe.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens is groter as wat van jou balans oor is.
429 rate_limit_error Too many requests. Retry in <n>s. Vloedbeskerming: meer as 120 versoeke in een minuut op jou rekening.
500 server_error The model backend failed to answer. Please retry. Die model het nie 'n antwoord gelewer nie. Stuur die versoek weer.
502 api_error The model backend failed to answer. Please retry. Dieselfde, op die Shannon 3-familie en die gehuisveste oopgewig-modelle.