Slaan oor na inhoud
Anthropic

Anthropic

POST /v1/messages neem 'n versoek in die Anthropic Messages-formaat en antwoord in dieselfde formaat, gestroom of nie. Gebruik dit met die Anthropic SDK en met gereedskap daarop gebou, soos Claude Code: stel die basis-URL, gebruik jou Shannon API-sleutel en noem 'n Shannon-model-id.

POST https://api.shannon-ai.com/v1/messages

Rig die Anthropic SDK na die Shannon-basis-URL. Die SDK voeg /v1/messages by en stuur jou sleutel in die x-api-key-header.

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="shannon-3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

Die antwoord is 'n boodskap waarvan die content 'n lys blokke is. Vind die blokke volgens hul type: wanneer die model geredeneer het, is die eerste blok thinking en die teks kom daarna.

200 JSON
{
  "id": "msg_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "type": "message",
  "role": "assistant",
  "model": "shannon-3",
  "content": [
    {
      "type": "thinking",
      "thinking": "The user wants a greeting in one sentence. Keep it short and friendly."
    },
    {
      "type": "text",
      "text": "Hello, it is good to meet you."
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 1184,
    "output_tokens": 46
  }
}

Headers

Header Waarde Beskrywing
x-api-key YOUR_API_KEY Jou API-sleutel. Authorization: Bearer YOUR_API_KEY word in sy plek aanvaar.
content-type application/json Verpligtend.
anthropic-version 2023-06-01 Aanvaar, nie verpligtend nie. Die Anthropic SDK stuur 2023-06-01; die antwoord het dieselfde formaat ongeag die waarde.
anthropic-beta Aanvaar, nie verpligtend nie.
x-request-id Opsioneel. Jou eie id vir die versoek. Dit kom ongewysig terug op die antwoord; daarsonder dra die antwoord 'n id van 12 heksadesimale karakters.

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 'n Shannon-model-id uit die modellys. Stuur dit met elke versoek. Ooreenstemming is nie hooflettergevoelig nie. Enige ander naam gee 400 unknown model terug, so 'n hulpmiddel wat sy eie modelname stuur, moet op 'n Shannon-id gestel word. Alle modelle
messages array Verpligtend. Die gesprek, oudste boodskap eerste, met die rolle user en assistant. Sien Boodskappe en inhoudblokke hieronder. Alle modelle
system string | array Instruksies vir die model: 'n string, of 'n skikking van teksblokke. Sien Stelselprompt hieronder. Gehuisveste oopgewig-modelle, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Boonste limiet van die antwoord, in tokens. Opsioneel op hierdie eindpunt; die Anthropic SDK stuur dit altyd. '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. Gehuisveste oopgewig-modelle, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true stuur die antwoord as server-sent events. Sien Streaming hieronder. Alle modelle
temperature number Steekproef-temperatuur. Op die gehuisveste oopgewig-modelle word waardes tussen 0 en 2 gehou. Gehuisveste oopgewig-modelle, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus-steekproefneming. Gehuisveste oopgewig-modelle
stop_sequences array Tot 4 stringe. Die antwoord eindig voor die eerste een wat verskyn. stop_reason bly end_turn. Gehuisveste oopgewig-modelle
tools array Die gereedskap wat die model mag oproep, elk as {"name", "description", "input_schema"}. Sien Gereedskap hieronder. Alle modelle
tool_choice object {"type": "auto"} laat die model besluit, {"type": "any"} laat dit 'n gereedskap oproep, {"type": "tool", "name": "…"} laat dit daardie gereedskap oproep. Gehuisveste oopgewig-modelle
thinking object Hoeveel die model redeneer voor dit antwoord. Sien Thinking hieronder. Gehuisveste oopgewig-modelle
web_search boolean false 'n Shannon-toevoeging tot die formaat: true laat die model die web deursoek voor dit antwoord. shannon-1.6-*, shannon-2-*, Shannon 3-familie

Sonder max_tokens is die waarde 4,096, en 65,536 op shannon-coder-1.

metadata, top_k, service_tier en cache_control-merkers op blokke word aanvaar sodat bestaande kliëntkode ongewysig loop. Hulle verander nie die antwoord nie; prompt caching op die gehuisveste oopgewig-modelle is outomaties.

'n JSON-antwoord volgens 'n skema word gevra met response_format op Chat Completions en met text.format op Responses. Gestruktureerde uitvoer

'n Versoek met 'n stelselprompt en thinking

Hierdie versoek stuur 'n stelselprompt, 'n thinking-begroting, 'n temperatuur en 'n stopvolgorde. Dit gebruik 'n gehuisveste oopgewig-model, wat almal toepas.

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

message = client.messages.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    max_tokens=4096,
    system="You are a physics teacher. Answer in two sentences.",
    thinking={"type": "enabled", "budget_tokens": 2048},
    temperature=0.3,
    stop_sequences=["\n\n"],
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

for block in message.content:
    if block.type == "thinking":
        print("reasoning:", block.thinking)
    elif block.type == "text":
        print("answer:", block.text)
print(message.usage)

Op die gehuisveste oopgewig-modelle rapporteer usage die tokens wat uit die prompt-kas gelees is apart van die ander insettokens.

200 JSON
{
  "usage": {
    "input_tokens": 31,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0,
    "output_tokens": 62
  }
}

Stelselprompt

system is 'n string, of 'n skikking van teksblokke in die vorm [{"type": "text", "text": "…"}]. Die tekste van die blokke word met 'n reëlbreuk verbind.

Dit word toegepas deur die gehuisveste oopgewig-modelle, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro en shannon-coder-1. Met 'n Shannon 3-familie-id, sit instruksies wat moet geld in die gebruikersboodskap.

Boodskappe en inhoudblokke

'n Boodskap het 'n role, user of assistant, en 'n content. content is 'n string, of 'n skikking van blokke.

Blok Beskrywing Beskikbaar op
{"type": "text", "text": "…"} Teks. Alle modelle
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
'n Beeld in 'n user-boodskap, as base64 of per URL. Shannon 3-familie, shannon-1.6-lite, shannon-1.6-pro, en die gehuisveste oopgewig-modelle wat beeldinset lys
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} 'n Dokument (PDF, Word, PowerPoint of Excel) in 'n user-boodskap, as base64 of per URL. Shannon 3-familie
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} In 'n assistant-boodskap: 'n gereedskapoproep wat die model in 'n vorige antwoord gemaak het. Alle modelle
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} In 'n user-boodskap: die resultaat van daardie oproep. content is 'n string, of 'n lys teksblokke. Alle modelle

Jy kan die content van 'n vorige antwoord ongewysig terugstuur: text- en tool_use-blokke word gelees, thinking-blokke word oorgeslaan.

Op die Shannon-vlakke word beelde en dokumente uit die laaste user-boodskap gelees. Groottes en limiete het hul eie bladsy. Beelde en lêers

Thinking

Die gehuisveste oopgewig-modelle koppel thinking aan 'n redeneringspoging. Sonder die veld is die poging hoog.

Vorm budget_tokens Effek
{"type": "disabled"} Geen redenering nie. Die antwoord het geen thinking-blok nie.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Lae poging.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Medium poging.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Hoë poging.

'n Model wat redeneer, gee sy redenering terug as 'n blok {"type": "thinking", "thinking": "…"} voor die teks. Die Shannon-vlakke wat redeneer, stuur dit ook.

Die pogings word op hul eie bladsy beskryf. Redeneringspoging

Gereedskap

'n Gereedskap is 'n funksie wat jou kode uitvoer. Beskryf elkeen met 'n name, 'n description en 'n input_schema. Wanneer die model 'n gereedskap wil hê, bevat die antwoord 'n tool_use-blok en stop_reason is tool_use.

'n Gereedskapdefinisie in tools:

tools
[
  {
    "name": "get_weather",
    "description": "Current weather for a city.",
    "input_schema": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        }
      },
      "required": [
        "city"
      ]
    }
  }
]

Die content van 'n antwoord wat dit oproep:

200 content
[
  {
    "type": "text",
    "text": ""
  },
  {
    "type": "tool_use",
    "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "name": "get_weather",
    "input": {
      "city": "Paris"
    }
  }
]

Voer die gereedskap uit, stuur dan die versoek weer met die oproep en 'n tool_result-blok bygevoeg by messages:

messages
[
  {
    "role": "user",
    "content": "What is the weather in Paris?"
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
        "name": "get_weather",
        "input": {
          "city": "Paris"
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
        "content": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
      }
    ]
  }
]

tool_choice

Vorm Effek Toegepas deur
{"type": "auto"} Die model besluit of dit 'n gereedskap oproep. Dit is die verstek. Alle modelle
{"type": "any"} Die model moet een van die gereedskap oproep. Gehuisveste oopgewig-modelle
{"type": "tool", "name": "…"} Die model moet die genoemde gereedskap oproep. Gehuisveste oopgewig-modelle

Slegs gereedskap met 'n input_schema word gelees. Websoektog is nie 'n gereedskap op hierdie eindpunt nie: stel die web_search-veld.

Die gereedskaplus word volledig op sy eie bladsy beskryf. Funksie-oproepe

Die antwoord

Veld Tipe Beskrywing Gestuur deur
id string msg_ gevolg deur 32 heksadesimale karakters. Alle modelle
type string Altyd message. Alle modelle
role string Altyd assistant. Alle modelle
model string Die kanonieke id van die model wat geantwoord het. Alle modelle
content array Die blokke van die antwoord, in hierdie volgorde: thinking wanneer die model geredeneer het, text, dan een tool_use per gereedskapoproep. Alle modelle
stop_reason string Hoekom die antwoord geëindig het. Sien die waardes hieronder. Alle modelle
usage object input_tokens en output_tokens. Alle modelle
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. In 'n stroom kom dit saam met die message_delta-gebeurtenis. shannon-1.6-*, shannon-2-*, Shannon 3-familie
usage.cache_read_input_tokens integer cache_read_input_tokens is die deel van die prompt wat uit die kas gelees is; input_tokens is die res. cache_creation_input_tokens is altyd 0. Gehuisveste oopgewig-modelle

Antwoordblokke

Blok Beskrywing
{"type": "thinking", "thinking": "…"} Die model se redenering. Daar is geen signature-lid nie.
{"type": "text", "text": "…"} Die antwoordteks. Dit kan leeg wees wanneer die antwoord 'n gereedskapoproep is.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} 'n Gereedskapoproep. input is 'n JSON-objek. Stuur die resultaat terug met dieselfde id.

stop_reason

stop_reason Beskrywing Gestuur deur
end_turn Die model het sy antwoord voltooi, of een van jou stop_sequences het verskyn. Alle modelle
tool_use Die antwoord bevat een of meer gereedskapoproepe. Alle modelle
max_tokens Die antwoord is by die uitvoerlimiet afgesny. Shannon 3-familie, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, in strome

Streaming

Stel stream op true vir server-sent events. Elke raam het 'n event:-reël met die naam van die gebeurtenis en 'n data:-reël met 'n JSON-objek wat die naam in type herhaal. Die stroomhulpmiddels van die Anthropic SDK lees hierdie gebeurtenisse vir jou:

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

with client.messages.stream(
    model="shannon-3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain server-sent events in three sentences."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    message = stream.get_final_message()

print()
print(message.stop_reason, message.usage)

Die gebeurtenisse, in die volgorde waarin hulle aankom:

Gebeurtenis Data Wanneer
message_start message Altyd eerste. message bevat die id, die rol, die model, 'n leë content en 'n usage wat by nul begin.
content_block_start index, content_block 'n Blok maak oop. content_block is 'n leë text- of thinking-blok, of 'n tool_use-blok met sy id en name.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} 'n Stuk van die redenering, vir 'n thinking-blok.
content_block_delta index, delta {"type": "text_delta", "text"} 'n Stuk van die antwoord, vir 'n text-blok.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Die argumente van 'n gereedskapoproep, volledig in een delta, vir 'n tool_use-blok.
content_block_stop index Die blok met hierdie index is voltooi.
message_delta delta {stop_reason, stop_sequence}, usage Die einde van die antwoord: delta.stop_reason, en die usage van die versoek.
message_stop Altyd laaste.

Blokke word volgens index genommer in die volgorde waarin hulle oopmaak, en een blok is voltooi voor die volgende oopmaak. Lees elke blok volgens sy tipe, nie volgens sy nommer nie: 'n stroom kan eers 'n leë text-blok oopmaak, dan die thinking-blok, en die antwoord in 'n latere text-blok lewer.

200 text/event-stream
event: message_start
data: {"type":"message_start","message":{"id":"msg_5f0c…","type":"message","role":"assistant","model":"shannon-3","content":[],"usage":{"input_tokens":0,"output_tokens":0}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"Three sentences: what it is, how it is framed, why it is used."}}

event: ping
data: {"type": "ping"}

event: content_block_stop
data: {"type":"content_block_stop","index":1}

event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"Server-sent events let a server push text over one HTTP reply."}}

event: content_block_stop
data: {"type":"content_block_stop","index":2}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":1190,"output_tokens":84}}

event: message_stop
data: {"type":"message_stop"}

Keep-alive

Gestuur deur Beskrywing
Shannon 3-familie, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 'n ping-gebeurtenis met die data {"type": "ping"}, elke 15 sekondes.
Gehuisveste oopgewig-modelle 'n Kommentaarreël : keepalive, elke 15 sekondes terwyl die model werk.

'n Stroom wat misluk

'n Mislukking nadat die stroom begin het, is 'n error-gebeurtenis met dieselfde liggaam as 'n foutantwoord: {"type": "error", "error": {"type", "message"}}. Die sluitingsgebeurtenisse, message_delta en message_stop, volg steeds. Beskou die antwoord as misluk en stuur die versoek weer.

Foute

Foute gebruik die Anthropic-foutliggaam: type is error, en die error-objek bevat 'n type en 'n message. 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
{
  "type": "error",
  "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 Shannon-model-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 Beeld is na 'n gehuisveste oopgewig-model gestuur wat nie beeldinset het nie.
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.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: jou plan se Shannon Coder-oproepe vir die huidige 4-uur-venster is opgebruik.
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. Die model het nie 'n antwoord gelewer nie. Stuur die versoek weer.

Tokens tel

POST /v1/messages/count_tokens neem dieselfde liggaam as 'n boodskapversoek (model, system, messages, tools) en gee {"input_tokens": n} terug: die aantal insettokens wat vir die versoek gehef sou word. Dit tel vir die gehuisveste oopgewig-modelle, dit is gratis en dit word nie deur vloedbeskerming getel nie.

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

count = client.messages.count_tokens(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    system="You are a physics teacher. Answer in two sentences.",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(count.input_tokens)

Tel het sy eie bladsy, met die platteks-eindpunt en die limiete. Tokens tel