Siirry sisältöön
Antrooppinen muoto

Antrooppinen muoto

POST /v1/messages ottaa vastaan pyynnön Anthropic Messages -muodossa ja vastaa samassa muodossa, suoratoistettuna tai ei. Käytä sitä Anthropic SDK:n ja sen päälle rakennettujen työkalujen, kuten Claude Coden, kanssa: aseta perus-URL, käytä Shannon API-avaintasi ja anna Shannon-mallin id.

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

Osoita Anthropic SDK Shannonin perus-URL:iin. SDK lisää /v1/messages ja lähettää avaimesi x-api-key-otsakkeessa.

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)

Vastaus on viesti, jonka content on lohkojen lista. Tunnista lohkot niiden type-kentästä: kun malli päätteli, ensimmäinen lohko on thinking ja teksti tulee sen jälkeen.

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

Otsakkeet

Otsake Arvo Kuvaus
x-api-key YOUR_API_KEY API-avaimesi. Authorization: Bearer YOUR_API_KEY hyväksytään sen sijasta.
content-type application/json Pakollinen.
anthropic-version 2023-06-01 Hyväksytään, ei pakollinen. Anthropic SDK lähettää arvon 2023-06-01; vastauksella on sama muoto arvosta riippumatta.
anthropic-beta Hyväksytään, ei pakollinen.
x-request-id Valinnainen. Oma id pyynnölle. Se palautuu vastauksessa muuttumattomana; ilman sitä vastauksessa on 12 heksadesimaalimerkin id.

Pyynnön kentät

Vain messages on pakollinen. Käyttävät mallit -sarake nimeää mallit, joilla kenttä muuttaa vastausta. Hostatut avoimen painon mallit ovat mallilistan kaksitoista id:tä; Shannon 3 -perhe on shannon-3, shannon-3-pro, shannon-3.1 ja shannon-3.1-pro. Mallit ja hinnoittelu

Kenttä Tyyppi Oletus Kuvaus Käyttävät mallit
model string shannon-1.6-lite Shannon-mallin id mallilistasta. Lähetä se jokaisen pyynnön mukana. Kirjainkoolla ei ole merkitystä. Mikä tahansa muu nimi palauttaa 400 unknown model, joten työkalu, joka lähettää omia mallinimiään, on asetettava käyttämään Shannon-id:tä. Kaikki mallit
messages array Pakollinen. Keskustelu vanhin viesti ensin, rooleilla user ja assistant. Katso alta Viestit ja sisältölohkot. Kaikki mallit
system string | array Ohjeet mallille: merkkijono tai tekstilohkojen taulukko. Katso alta System prompt. Hostatut avoimen painon mallit, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Vastauksen yläraja tokeneina. Valinnainen tässä päätepisteessä; Anthropic SDK lähettää sen aina. Alueen 1–65,536 ulkopuolinen arvo siirretään tälle alueelle. Se on myös määrä, joka varataan saldostasi pyynnön ajaksi. Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true lähettää vastauksen server-sent events -tapahtumina. Katso alta Suoratoisto. Kaikki mallit
temperature number Näytteenoton lämpötila. Hostatuilla avoimen painon malleilla arvot pidetään välillä 0–2. Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus-näytteenotto. Hostatut avoimen painon mallit
stop_sequences array Enintään 4 merkkijonoa. Vastaus päättyy ennen ensimmäistä niistä, joka esiintyy. stop_reason pysyy arvossa end_turn. Hostatut avoimen painon mallit
tools array Työkalut, joita malli saa kutsua, kukin muodossa {"name", "description", "input_schema"}. Katso alta Työkalut. Kaikki mallit
tool_choice object {"type": "auto"} antaa mallin päättää, {"type": "any"} pakottaa sen kutsumaan jotakin työkalua, {"type": "tool", "name": "…"} pakottaa sen kutsumaan kyseistä työkalua. Hostatut avoimen painon mallit
thinking object Kuinka paljon malli päättelee ennen vastaamista. Katso alta Thinking. Hostatut avoimen painon mallit
web_search boolean false Shannonin lisäys formaattiin: true antaa mallin hakea verkosta ennen vastaamista. shannon-1.6-*, shannon-2-*, Shannon 3 -perhe

Ilman max_tokens-arvoa oletus on 4,096 ja shannon-coder-1:llä 65,536.

metadata, top_k, service_tier ja lohkojen cache_control-merkinnät hyväksytään, jotta olemassa oleva asiakaskoodi toimii muuttumattomana. Ne eivät muuta vastausta; hostattujen avoimen painon mallien prompt-välimuistitus on automaattista.

JSON-vastaus skeeman mukaan pyydetään response_format-kentällä Chat Completionsissa ja text.format-kentällä Responsesissa. Strukturoidut lähdöt

Pyyntö, jossa on system prompt ja thinking

Tämä pyyntö lähettää system promptin, thinking-budjetin, lämpötilan ja pysäytysjonon. Se käyttää hostattua avoimen painon mallia, joka soveltaa niitä kaikkia.

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)

Hostatuilla avoimen painon malleilla usage raportoi prompt-välimuistista luetut tokenit erikseen muista syötetokeneista.

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

System prompt

system on merkkijono tai tekstilohkojen taulukko muodossa [{"type": "text", "text": "…"}]. Lohkojen tekstit yhdistetään rivinvaihdolla.

Sen soveltavat hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ja shannon-coder-1. Shannon 3 -perheen id:llä pakollisesti noudatettavat ohjeet kuuluvat käyttäjän viestiin.

Viestit ja sisältölohkot

Viestillä on role, user tai assistant, ja content. content on merkkijono tai lohkojen taulukko.

Lohko Kuvaus Saatavilla
{"type": "text", "text": "…"} Teksti. Kaikki mallit
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Kuva user-viestissä, base64-muodossa tai URL:llä. Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro ja hostatut avoimen painon mallit, joiden syötteeksi kuva on merkitty
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokumentti (PDF, Word, PowerPoint tai Excel) user-viestissä, base64-muodossa tai URL:llä. Shannon 3 -perhe
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} assistant-viestissä: työkalukutsu, jonka malli teki aiemmassa vastauksessa. Kaikki mallit
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} user-viestissä: kyseisen kutsun tulos. content on merkkijono tai tekstilohkojen lista. Kaikki mallit

Aiemman vastauksen content voi lähettää takaisin sellaisenaan: text- ja tool_use-lohkot luetaan, thinking-lohkot ohitetaan.

Shannon-tasoilla kuvat ja dokumentit luetaan viimeisestä user-viestistä. Koot ja rajat on kuvattu omalla sivullaan. Kuvat ja tiedostot

Thinking

Hostatut avoimen painon mallit kuvaavat thinking-kentän päättelyn tehoksi. Ilman kenttää teho on korkea.

Muoto budget_tokens Vaikutus
{"type": "disabled"} Ei päättelyä. Vastauksessa ei ole thinking-lohkoa.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Matala teho.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Keskitaso.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Korkea teho.

Päättelevä malli palauttaa päättelynsä lohkona {"type": "thinking", "thinking": "…"} tekstin edellä. Myös päättelevät Shannon-tasot lähettävät sen.

Tehotasot on kuvattu omalla sivullaan. Päättelyn teho

Työkalut

Työkalu on funktio, jonka koodisi suorittaa. Kuvaa jokainen kentillä name, description ja input_schema. Kun malli haluaa työkalun, vastaus sisältää tool_use-lohkon ja stop_reason on tool_use.

Työkalumääritys kentässä tools:

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

Sen kutsuvan vastauksen content:

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

Suorita työkalu ja lähetä sitten pyyntö uudelleen niin, että kutsu ja tool_result-lohko on lisätty kenttään 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

Muoto Vaikutus Käyttävät mallit
{"type": "auto"} Malli päättää, kutsuuko se työkalua. Tämä on oletus. Kaikki mallit
{"type": "any"} Mallin on kutsuttava jotakin työkaluista. Hostatut avoimen painon mallit
{"type": "tool", "name": "…"} Mallin on kutsuttava nimettyä työkalua. Hostatut avoimen painon mallit

Vain työkalut, joilla on input_schema, luetaan. Verkkohaku ei ole työkalu tässä päätepisteessä: aseta kenttä web_search.

Työkaluluuppi on kuvattu kokonaisuudessaan omalla sivullaan. Toiminto kutsu

Vastaus

Kenttä Tyyppi Kuvaus Lähettäjä
id string msg_ ja sen perässä 32 heksadesimaalimerkkiä. Kaikki mallit
type string Aina message. Kaikki mallit
role string Aina assistant. Kaikki mallit
model string Vastanneen mallin kanoninen id. Kaikki mallit
content array Vastauksen lohkot tässä järjestyksessä: thinking, kun malli päätteli, text, sitten yksi tool_use kutakin työkalukutsua kohti. Kaikki mallit
stop_reason string Miksi vastaus päättyi. Katso arvot alta. Kaikki mallit
usage object input_tokens ja output_tokens. Kaikki mallit
sources array Vain pyynnössä, jossa on web_search: true ja jonka haku löysi jotain: tulokset, jotka malli sai, kukin kentillä index, title ja url. Vastauksen [1] on merkintä, jonka index on 1. Striimissä se tulee tapahtuman message_delta mukana. shannon-1.6-*, shannon-2-*, Shannon 3 -perhe
usage.cache_read_input_tokens integer cache_read_input_tokens on promptista välimuistista luettu osa; input_tokens on loppuosa. cache_creation_input_tokens on aina 0. Hostatut avoimen painon mallit

Vastauksen lohkot

Lohko Kuvaus
{"type": "thinking", "thinking": "…"} Mallin päättely. signature-jäsentä ei ole.
{"type": "text", "text": "…"} Vastauksen teksti. Se voi olla tyhjä, kun vastaus on työkalukutsu.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Työkalukutsu. input on JSON-objekti. Lähetä tulos takaisin samalla id:llä.

stop_reason

stop_reason Kuvaus Lähettäjä
end_turn Malli päätti vastauksensa, tai jokin stop_sequences-merkkijonoistasi esiintyi. Kaikki mallit
tool_use Vastaus sisältää yhden tai useamman työkalukutsun. Kaikki mallit
max_tokens Vastaus katkaistiin tulosteen rajaan. Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, suoratoistossa

Suoratoisto

Aseta stream arvoon true saadaksesi server-sent events -tapahtumat. Jokaisella kehyksellä on event:-rivi, jossa on tapahtuman nimi, ja data:-rivi, jossa on JSON-objekti, joka toistaa nimen kentässä type. Anthropic SDK:n stream-apufunktiot lukevat nämä tapahtumat puolestasi:

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)

Tapahtumat saapumisjärjestyksessä:

Tapahtuma Data Milloin
message_start message Aina ensimmäinen. message sisältää id:n, roolin, mallin, tyhjän content-kentän ja usage-kentän, joka alkaa nollasta.
content_block_start index, content_block Lohko avautuu. content_block on tyhjä text- tai thinking-lohko tai tool_use-lohko, jolla on id ja name.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Pala päättelyä thinking-lohkolle.
content_block_delta index, delta {"type": "text_delta", "text"} Pala vastausta text-lohkolle.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Työkalukutsun argumentit kokonaisina yhdessä deltassa tool_use-lohkolle.
content_block_stop index Lohko, jonka index on tämä, on valmis.
message_delta delta {stop_reason, stop_sequence}, usage Vastauksen loppu: delta.stop_reason ja pyynnön usage.
message_stop Aina viimeinen.

Lohkot numeroidaan index-kentällä avautumisjärjestyksessä, ja yksi lohko valmistuu ennen kuin seuraava avautuu. Lue jokainen lohko tyypin mukaan, älä numeron: virta voi avata ensin tyhjän text-lohkon, sitten thinking-lohkon ja antaa vastauksen myöhemmässä text-lohkossa.

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

Lähettäjä Kuvaus
Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ping-tapahtuma datalla {"type": "ping"} 15 sekunnin välein.
Hostatut avoimen painon mallit Kommenttirivi : keepalive 15 sekunnin välein mallin työskennellessä.

Epäonnistuva virta

Virta voi epäonnistua alettuaan: tällöin tulee error-tapahtuma, jonka runko on sama kuin virhevastauksessa: {"type": "error", "error": {"type", "message"}}. Päätöstapahtumat message_delta ja message_stop seuraavat silti. Käsittele vastaus epäonnistuneena ja lähetä pyyntö uudelleen.

Virheet

Virheet käyttävät Anthropicin virherunkoa: type on error, ja error-objekti sisältää kentät type ja message. Taulukossa on yleisimmin palautuvat virheet tästä päätepisteestä. Täydellinen lista ja ohjeet uudelleenyritykseen ovat omalla sivullaan. Virheiden käsittely

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Tila Tyyppi Viesti Milloin
401 authentication_error Missing authentication
Invalid API key
API-avainta ei lähetetty, tai avain on tuntematon tai mitätöity.
400 invalid_request_error unknown model: <id> model ei ole Shannon-mallin id.
400 invalid_request_error No user message provided Shannon-tasot: pyynnössä ei ole käyttäjän tekstiä eikä tools-kenttää.
400 invalid_request_error <id> does not accept image input Kuva lähetettiin hostatulle avoimen painon mallille, joka ei tue kuvasyötettä.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages puuttuu, tai jonkin kentän JSON-tyyppi on väärä.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens on suurempi kuin saldostasi jäljellä oleva määrä.
429 rate_limit_error Too many requests. Retry in <n>s. Tulvasuoja: tililtäsi tuli yli 120 pyyntöä minuutissa.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: tilauksesi Shannon Coder -kutsut nykyiseltä 4 tunnin jaksolta on käytetty.
500 server_error The model backend failed to answer. Please retry. Malli ei tuottanut vastausta. Lähetä pyyntö uudelleen.
502 api_error The model backend failed to answer. Please retry. Malli ei tuottanut vastausta. Lähetä pyyntö uudelleen.

Tokenien laskenta

POST /v1/messages/count_tokens ottaa saman rungon kuin viestipyyntö (model, system, messages, tools) ja palauttaa {"input_tokens": n}: syötetokenien määrän, joka pyynnöstä veloitettaisiin. Laskenta toimii hostatuille avoimen painon malleille, se on ilmaista eikä se kuulu tulvasuojan laskentaan.

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)

Laskennalla on oma sivunsa, jossa kuvataan tekstimuotoinen päätepiste ja rajat. Tokenien laskenta