Joan edukira
Anthropic

Anthropic

POST /v1/messages-ek Anthropic Messages formatuko eskaera hartzen du eta formatu berean erantzuten du, streaming bidez edo gabe. Erabili Anthropic SDK-arekin eta haren gainean eraikitako tresnekin, hala nola Claude Code: ezarri base URL-a, erabili zure Shannon API gakoa eta adierazi Shannon modelo-id bat.

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

Zuzendu Anthropic SDK-a Shannon-en base URL-ra. SDK-ak /v1/messages gehitzen du eta zure gakoa x-api-key goiburuan bidaltzen du.

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)

Erantzuna mezu bat da, eta haren content bloke-zerrenda bat da. Bilatu blokeak beren type bidez: modeloak arrazoitu badu, lehen blokea thinking da eta testua haren ondoren dator.

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

Goiburuak

Goiburua Balioa Deskribapena
x-api-key YOUR_API_KEY Zure API gakoa. Haren ordez Authorization: Bearer YOUR_API_KEY onartzen da.
content-type application/json Beharrezkoa.
anthropic-version 2023-06-01 Onartzen da, ez da beharrezkoa. Anthropic SDK-ak 2023-06-01 bidaltzen du; erantzunak formatu bera du balioa edozein dela ere.
anthropic-beta Onartzen da, ez da beharrezkoa.
x-request-id Aukerakoa. Eskaerarentzako zure id propioa. Erantzunean aldatu gabe itzultzen da; gabe, erantzunak 12 karaktere hexadezimaleko id bat dakar.

Eskaera-eremuak

messages bakarrik da beharrezkoa. Aplikatzen duena zutabeak eremu batek erantzuna aldatzen duen modeloak adierazten ditu. Pisu irekiko modelo ostatatuak modelo-zerrendako hamabi id dira; Shannon 3 familia shannon-3, shannon-3-pro, shannon-3.1 eta shannon-3.1-pro da. Modeloak eta prezioak

Eremua Mota Lehenetsia Deskribapena Aplikatzen duena
model string shannon-1.6-lite Modelo-zerrendako Shannon modelo-id bat. Bidali eskaera guztiekin. Maiuskulak eta minuskulak ez dira bereizten. Beste edozein izenek 400 unknown model itzultzen du; beraz, bere modelo-izenak bidaltzen dituen tresna bat Shannon id batera ezarri behar da. Modelo guztiak
messages array Beharrezkoa. Elkarrizketa, mezurik zaharrena lehenik, user eta assistant rolekin. Ikus beheko Mezuak eta eduki-blokeak. Modelo guztiak
system string | array Modeloarentzako jarraibideak: kate bat, edo testu-bloke-array bat. Ikus beheko System prompt-a. Pisu irekiko modelo ostatatuak, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Erantzunaren goiko muga, tokenetan. Aukerakoa endpoint honetan; Anthropic SDK-ak beti bidaltzen du. 1etik 65,536ra bitarteko tartetik kanpoko balioa tarte horretara mugitzen da. Eskaerak irauten duen bitartean zure saldotik bereizten den kopurua ere bada. Pisu irekiko modelo ostatatuak, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true balioak erantzuna server-sent events gisa bidaltzen du. Ikus beheko Streaminga. Modelo guztiak
temperature number Laginketa-tenperatura. Pisu irekiko modelo ostatatuetan balioak 0 eta 2 artean mantentzen dira. Pisu irekiko modelo ostatatuak, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nukleo-laginketa. Pisu irekiko modelo ostatatuak
stop_sequences array 4 kate arte. Erantzuna agertzen den lehenaren aurretik amaitzen da. stop_reason end_turn izaten jarraitzen du. Pisu irekiko modelo ostatatuak
tools array Modeloak dei diezazkiokeen tresnak, bakoitza {"name", "description", "input_schema"} gisa. Ikus beheko Tresnak. Modelo guztiak
tool_choice object {"type": "auto"} balioak modeloari erabakitzen uzten dio, {"type": "any"} balioak tresna bati deitzera behartzen du, {"type": "tool", "name": "…"} balioak tresna jakin horri deitzera behartzen du. Pisu irekiko modelo ostatatuak
thinking object Modeloak erantzun aurretik zenbat arrazoitzen duen. Ikus beheko Pentsamendua. Pisu irekiko modelo ostatatuak
web_search boolean false Shannon-en gehigarri bat formatuan: true balioak modeloari erantzun aurretik weba bilatzen uzten dio. shannon-1.6-*, shannon-2-*, Shannon 3 familia

max_tokens gabe balioa 4,096 da, eta 65,536 shannon-coder-1-en.

Blokeetako metadata, top_k, service_tier eta cache_control markak onartzen dira, lehendik dagoen bezero-kodea aldatu gabe ibil dadin. Ez dute erantzuna aldatzen; pisu irekiko modelo ostatatuetan prompt cachea automatikoa da.

Eskema bati jarraitzen dion JSON erantzuna response_format bidez eskatzen da Chat Completions-en eta text.format bidez Responses-en. Irteera egituratuak

System prompt eta pentsamendua dituen eskaera

Eskaera honek system prompt bat, pentsamendu-aurrekontu bat, tenperatura bat eta gelditze-sekuentzia bat bidaltzen ditu. Pisu irekiko modelo ostatatu bat erabiltzen du, eta horrek guztiak aplikatzen ditu.

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)

Pisu irekiko modelo ostatatuetan usage-k prompt cachetik irakurritako tokenak beste sarrera-tokenetatik bereizita jakinarazten ditu.

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

System prompt-a

system kate bat da, edo [{"type": "text", "text": "…"}] formako testu-bloke-array bat. Blokeen testuak lerro-jauzi batekin elkartzen dira.

Pisu irekiko modelo ostatatuek, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro eta shannon-coder-1 modeloek aplikatzen dute. Shannon 3 familiako id batekin, jarri bete behar diren jarraibideak erabiltzaile-mezuan.

Mezuak eta eduki-blokeak

Mezu batek role bat du, user edo assistant, eta content bat. content kate bat da, edo bloke-array bat.

Blokea Deskribapena Eskuragarri hemen
{"type": "text", "text": "…"} Testua. Modelo guztiak
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Irudi bat user mezu batean, base64 gisa edo URL bidez. Shannon 3 familia, shannon-1.6-lite, shannon-1.6-pro, eta irudi-sarrera duten pisu irekiko modelo ostatatuak
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokumentu bat (PDF, Word, PowerPoint edo Excel) user mezu batean, base64 gisa edo URL bidez. Shannon 3 familia
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} assistant mezu batean: modeloak aurreko erantzun batean egindako tresna-deia. Modelo guztiak
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} user mezu batean: dei horren emaitza. content kate bat da, edo testu-blokeen zerrenda. Modelo guztiak

Aurreko erantzun baten content bere horretan bidal dezakezu berriro: text eta tool_use blokeak irakurtzen dira, thinking blokeak saltatzen dira.

Shannon mailetan, irudiak eta dokumentuak azken user mezutik irakurtzen dira. Tamainek eta mugek beren orrialdea dute. Irudiak eta fitxategiak

Pentsamendua

Pisu irekiko modelo ostatatuek thinking arrazonamendu-esfortzu batera lotzen dute. Eremurik gabe esfortzua altua da.

Forma budget_tokens Eragina
{"type": "disabled"} Arrazonamendurik ez. Erantzunak ez du thinking blokerik.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Esfortzu baxua.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Esfortzu ertaina.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Esfortzu altua.

Arrazoitzen duen modelo batek bere arrazonamendua {"type": "thinking", "thinking": "…"} bloke gisa itzultzen du testuaren aurretik. Arrazoitzen duten Shannon mailek ere bidaltzen dute.

Esfortzuak beren orrialdean azaltzen dira. Arrazonamendu-esfortzua

Tresnak

Tresna bat zure kodeak exekutatzen duen funtzio bat da. Deskribatu bakoitza name, description eta input_schema batekin. Modeloak tresna bat nahi duenean, erantzunak tool_use bloke bat du eta stop_reason tool_use da.

Tresna-definizio bat tools-en:

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

Tresnari deitzen dion erantzun baten content:

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

Exekutatu tresna, eta bidali eskaera berriro deiarekin eta tool_result bloke batekin messages-era gehituta:

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

Forma Eragina Aplikatzen duena
{"type": "auto"} Modeloak erabakitzen du tresna bati deitu ala ez. Hau da lehenetsia. Modelo guztiak
{"type": "any"} Modeloak tresnetako bati deitu behar dio. Pisu irekiko modelo ostatatuak
{"type": "tool", "name": "…"} Modeloak izendatutako tresnari deitu behar dio. Pisu irekiko modelo ostatatuak

input_schema duten tresnak bakarrik irakurtzen dira. Web bilaketa ez da tresna bat endpoint honetan: ezarri web_search eremua.

Tresna-begizta osorik bere orrialdean deskribatzen da. Funtzio-deiak

Erantzuna

Eremua Mota Deskribapena Bidaltzailea
id string msg_ eta ondoren 32 karaktere hexadezimal. Modelo guztiak
type string Beti message. Modelo guztiak
role string Beti assistant. Modelo guztiak
model string Erantzun duen modeloaren id kanonikoa. Modelo guztiak
content array Erantzunaren blokeak, ordena honetan: thinking modeloak arrazoitu badu, text, eta gero tool_use bat tresna-dei bakoitzeko. Modelo guztiak
stop_reason string Erantzuna zergatik amaitu den. Ikus beheko balioak. Modelo guztiak
usage object input_tokens eta output_tokens. Modelo guztiak
sources array web_search: true duen eskaeran bakarrik, bilaketak zerbait aurkitu badu: modeloak jaso dituen emaitzak, bakoitza index, title eta url eremuekin. Erantzunean [1] index 1 duen sarrera da. Stream batean message_delta gertaerarekin datorkio. shannon-1.6-*, shannon-2-*, Shannon 3 familia
usage.cache_read_input_tokens integer cache_read_input_tokens cachetik irakurritako prompt-zatia da; input_tokens gainerakoa da. cache_creation_input_tokens beti 0 da. Pisu irekiko modelo ostatatuak

Erantzun-blokeak

Blokea Deskribapena
{"type": "thinking", "thinking": "…"} Modeloaren arrazonamendua. Ez dago signature kide bat.
{"type": "text", "text": "…"} Erantzunaren testua. Hutsik egon daiteke erantzuna tresna-deia denean.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Tresna-dei bat. input JSON objektu bat da. Bidali emaitza berriro id berarekin.

stop_reason

stop_reason Deskribapena Bidaltzailea
end_turn Modeloak erantzuna amaitu du, edo zure stop_sequences horietako bat agertu da. Modelo guztiak
tool_use Erantzunak tresna-dei bat edo gehiago ditu. Modelo guztiak
max_tokens Erantzuna irteera-mugan moztu da. Shannon 3 familia, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, streametan

Streaminga

Ezarri stream true gisa server-sent events jasotzeko. Frame bakoitzak gertaeraren izena duen event: lerro bat eta izen hori type eremuan errepikatzen duen JSON objektu bat duen data: lerro bat ditu. Anthropic SDK-aren stream-laguntzaileek gertaera hauek zuretzat irakurtzen dituzte:

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)

Gertaerak, iristen diren ordenan:

Gertaera Datuak Noiz
message_start message Beti lehena. message-k id-a, rola, modeloa, content huts bat eta zerotik hasten den usage bat ditu.
content_block_start index, content_block Bloke bat irekitzen da. content_block text edo thinking bloke huts bat da, edo tool_use bloke bat bere id eta name balioekin.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Arrazonamenduaren zati bat, thinking bloke batentzat.
content_block_delta index, delta {"type": "text_delta", "text"} Erantzunaren zati bat, text bloke batentzat.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Tresna-dei baten argumentuak, delta bakar batean osorik, tool_use bloke batentzat.
content_block_stop index index hori duen blokea osatuta dago.
message_delta delta {stop_reason, stop_sequence}, usage Erantzunaren amaiera: delta.stop_reason, eta eskaeraren usage.
message_stop Beti azkena.

Blokeak index bidez zenbakitzen dira irekitzen diren ordenan, eta bloke bat osatuta dago hurrengoa ireki aurretik. Irakurri bloke bakoitza bere motaren arabera, ez bere zenbakiaren arabera: streamak text bloke huts bat ireki dezake lehenik, gero thinking blokea, eta erantzuna geroagoko text bloke batean eman.

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

Bidaltzailea Deskribapena
Shannon 3 familia, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ping gertaera bat {"type": "ping"} datuarekin, 15 segundoz behin.
Pisu irekiko modelo ostatatuak : keepalive iruzkin-lerroa, 15 segundoz behin modeloak lan egiten duen bitartean.

Huts egiten duen streama

Streama hasi ondorengo hutsegite bat error gertaera bat da, errore-erantzun baten gorputz bera duena: {"type": "error", "error": {"type", "message"}}. Itxierako gertaerak, message_delta eta message_stop, ondoren heltzen dira oraindik. Hartu erantzuna huts egindakotzat eta bidali eskaera berriro.

Erroreak

Erroreek Anthropic errore-gorputza erabiltzen dute: type error da, eta error objektuak type bat eta message bat ditu. Taulak endpoint honek maizen itzultzen duena zerrendatzen du. Zerrenda osoak, zer berriz saiatu behar den adierazita, bere orrialdea du. Errore‑kudeaketa

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Egoera Mota Mezua Noiz
401 authentication_error Missing authentication
Invalid API key
Ez da API gakorik bidali, edo gakoa ezezaguna edo indargabetua da.
400 invalid_request_error unknown model: <id> model ez da Shannon modelo-id bat.
400 invalid_request_error No user message provided Shannon mailak: eskaerak ez du erabiltzaile-testurik eta ez du tools-ik.
400 invalid_request_error <id> does not accept image input Irudi bat bidali da irudi-sarrerarik ez duen pisu irekiko modelo ostatatu batera.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages falta da, edo eremu batek JSON mota okerra du.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens zure saldoan geratzen dena baino handiagoa da.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: minutu batean 120 eskaera baino gehiago zure kontuan.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: zure planeko Shannon Coder deiak amaitu dira uneko 4 orduko leihorako.
500 server_error The model backend failed to answer. Please retry. Modeloak ez du erantzunik sortu. Bidali eskaera berriro.
502 api_error The model backend failed to answer. Please retry. Modeloak ez du erantzunik sortu. Bidali eskaera berriro.

Tokenak kontatzea

POST /v1/messages/count_tokens mezu-eskaera baten gorputz bera hartzen du (model, system, messages, tools) eta {"input_tokens": n} itzultzen du: eskaerari kobratuko litzaizkiokeen sarrera-tokenen kopurua. Pisu irekiko modelo ostatatuetarako kontatzen du, doakoa da eta flood protection-ek ez du kontatzen.

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)

Kontatzeak bere orrialdea du, testu soileko endpoint-arekin eta mugekin. Tokenen kontaketa