Ugrás a tartalomra
Anthropic formátum

Anthropic formátum

A POST /v1/messages Anthropic Messages formátumú kérést fogad, és ugyanabban a formátumban válaszol, streamelve vagy anélkül. Használd az Anthropic SDK-val és az arra épülő eszközökkel, például a Claude Code-dal: állítsd be az alap URL-t, használd a Shannon API-kulcsodat, és adj meg egy Shannon modellazonosítót.

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

Irányítsd az Anthropic SDK-t a Shannon alap URL-jére. Az SDK hozzáfűzi a /v1/messages útvonalat, és a kulcsodat az x-api-key fejlécben küldi.

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)

A válasz egy üzenet, amelynek content mezője blokkok listája. A blokkokat a type alapján keresd meg: ha a modell gondolkodott, az első blokk thinking, utána jön a szöveg.

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

Fejlécek

Fejléc Érték Leírás
x-api-key YOUR_API_KEY Az API-kulcsod. Helyette az Authorization: Bearer YOUR_API_KEY is elfogadott.
content-type application/json Kötelező.
anthropic-version 2023-06-01 Elfogadott, nem kötelező. Az Anthropic SDK a 2023-06-01 értéket küldi; a válasz formátuma az értéktől függetlenül ugyanaz.
anthropic-beta Elfogadott, nem kötelező.
x-request-id Nem kötelező. A kérés saját azonosítód. Változtatás nélkül visszajön a válaszban; nélküle a válasz 12 hexadecimális karakteres azonosítót kap.

Kérésmezők

Csak a messages kötelező. Az Alkalmazza oszlop megnevezi azokat a modelleket, amelyeken a mező megváltoztatja a választ. A hosztolt nyílt súlyú modellek a modelllista tizenkét azonosítója; a Shannon 3 család a shannon-3, shannon-3-pro, shannon-3.1 és shannon-3.1-pro. Modellek és árak

Mező Típus Alapérték Leírás Alkalmazza
model string shannon-1.6-lite Egy Shannon modellazonosító a modelllistából. Minden kéréssel küldd el. Az egyeztetés nem tesz különbséget kis- és nagybetű között. Bármilyen más név 400 unknown model hibát ad, ezért az az eszköz, amely saját modellneveket küld, csak Shannon azonosítóra állítható. Minden modell
messages array Kötelező. A beszélgetés, a legrégebbi üzenettel kezdve, a user és assistant szerepekkel. Lásd lent az Üzenetek és tartalomblokkok részt. Minden modell
system string | array Utasítások a modellnek: egy string vagy szövegblokkok tömbje. Lásd lent a Rendszerprompt részt. Hosztolt nyílt súlyú modellek, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 A válasz felső korlátja tokenben. Ezen a végponton nem kötelező; az Anthropic SDK mindig elküldi. Az 1 és 65,536 közötti tartományon kívüli értéket a rendszer a tartományba igazítja. Ennyit foglal le az egyenlegedből a kérés futása alatt. Hosztolt nyílt súlyú modellek, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true esetén a válasz server-sent eventsként érkezik. Lásd lent a Streaming részt. Minden modell
temperature number Mintavételi hőmérséklet. A hosztolt nyílt súlyú modelleken az értékek 0 és 2 között maradnak. Hosztolt nyílt súlyú modellek, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus sampling. Hosztolt nyílt súlyú modellek
stop_sequences array Legfeljebb 4 string. A válasz az első megjelenő előtt véget ér. A stop_reason értéke end_turn marad. Hosztolt nyílt súlyú modellek
tools array Az eszközök, amelyeket a modell meghívhat, mindegyik {"name", "description", "input_schema"} alakban. Lásd lent az Eszközök részt. Minden modell
tool_choice object A {"type": "auto"} a modellre bízza a döntést, a {"type": "any"} eszközhívásra kényszeríti, a {"type": "tool", "name": "…"} pedig arra, hogy azt az eszközt hívja. Hosztolt nyílt súlyú modellek
thinking object Mennyit gondolkodik a modell a válasz előtt. Lásd lent a Thinking részt. Hosztolt nyílt súlyú modellek
web_search boolean false Shannon kiegészítés a formátumhoz: true esetén a modell a válasz előtt keres a weben. shannon-1.6-*, shannon-2-*, Shannon 3 család

max_tokens nélkül az érték 4,096, a shannon-coder-1 modellen 65,536.

A metadata, top_k, service_tier és a blokkokon lévő cache_control jelölők elfogadottak, hogy a meglévő klienskód változtatás nélkül fusson. Nem változtatják meg a választ; a prompt-gyorsítótárazás a hosztolt nyílt súlyú modelleken automatikus.

A sémának megfelelő JSON-választ a Chat Completionsben a response_format, a Responsesben a text.format kéri. Strukturált kimenetek

Egy kérés rendszerprompttal és thinkinggel

Ez a kérés rendszerpromptot, thinking budgetet, hőmérsékletet és egy stop sequence-t küld. Hosztolt nyílt súlyú modellt használ, amely mindegyiket alkalmazza.

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)

A hosztolt nyílt súlyú modelleken a usage a prompt-gyorsítótárból olvasott tokeneket a többi bemeneti tokentől külön jelenti.

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

Rendszerprompt

A system egy string vagy szövegblokkok tömbje [{"type": "text", "text": "…"}] alakban. A blokkok szövegeit sortörés fűzi össze.

Alkalmazzák a hosztolt nyílt súlyú modellek, a shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro és a shannon-coder-1. Shannon 3 családbeli azonosítónál a feltétlenül betartandó utasításokat tedd a felhasználói üzenetbe.

Üzenetek és tartalomblokkok

Az üzenetnek van egy role értéke, user vagy assistant, és egy content mezője. A content egy string vagy blokkok tömbje.

Blokk Leírás Elérhető ezeken
{"type": "text", "text": "…"} Szöveg. Minden modell
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Egy kép egy user üzenetben, base64-ként vagy URL-lel. Shannon 3 család, shannon-1.6-lite, shannon-1.6-pro, és a hosztolt nyílt súlyú modellek, amelyek képbemenetet támogatnak
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Egy dokumentum (PDF, Word, PowerPoint vagy Excel) egy user üzenetben, base64-ként vagy URL-lel. Shannon 3 család
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Egy assistant üzenetben: egy eszközhívás, amelyet a modell egy korábbi válaszban indított. Minden modell
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} Egy user üzenetben: a hívás eredménye. A content egy string vagy szövegblokkok listája. Minden modell

Egy korábbi válasz content mezőjét változtatás nélkül visszaküldheted: a text és tool_use blokkokat beolvassa a rendszer, a thinking blokkokat kihagyja.

A Shannon szinteken a képeket és dokumentumokat az utolsó user üzenetből olvassa a rendszer. A méreteknek és korlátoknak külön oldaluk van. Képek és fájlok

Thinking

A hosztolt nyílt súlyú modellek a thinking mezőt reasoning effortra képezik le. A mező nélkül az effort magas.

Alak budget_tokens Hatás
{"type": "disabled"} Nincs reasoning. A válaszban nincs thinking blokk.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Alacsony effort.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Közepes effort.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Magas effort.

A gondolkodó modell a reasoningjét a szöveg előtt egy {"type": "thinking", "thinking": "…"} blokkban adja vissza. A gondolkodó Shannon szintek is elküldik.

Az effortokat külön oldal írja le. Reasoning effort

Eszközök

Az eszköz egy függvény, amelyet a kódod futtat. Írj le mindegyiket egy name, egy description és egy input_schema mezővel. Ha a modell eszközt kér, a válasz egy tool_use blokkot tartalmaz, és a stop_reason értéke tool_use.

Egy eszközdefiníció a tools listában:

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

A hívást tartalmazó válasz content mezője:

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

Futtasd az eszközt, majd küldd el újra a kérést úgy, hogy a hívást és egy tool_result blokkot hozzáadsz a messages listához:

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

Alak Hatás Alkalmazza
{"type": "auto"} A modell dönt arról, hogy hív-e eszközt. Ez az alapérték. Minden modell
{"type": "any"} A modellnek meg kell hívnia valamelyik eszközt. Hosztolt nyílt súlyú modellek
{"type": "tool", "name": "…"} A modellnek meg kell hívnia a megnevezett eszközt. Hosztolt nyílt súlyú modellek

Csak az input_schema mezővel rendelkező eszközöket olvassa be a rendszer. A webes keresés ezen a végponton nem eszköz: állítsd be a web_search mezőt.

Az eszközciklust külön oldal írja le teljesen. Funkcióhívás

A válasz

Mező Típus Leírás Küldi
id string msg_, utána 32 hexadecimális karakter. Minden modell
type string Mindig message. Minden modell
role string Mindig assistant. Minden modell
model string A válaszoló modell kanonikus azonosítója. Minden modell
content array A válasz blokkjai ebben a sorrendben: thinking, ha a modell gondolkodott, text, majd tool-hívásonként egy tool_use. Minden modell
stop_reason string Miért ért véget a válasz. Lásd az alábbi értékeket. Minden modell
usage object input_tokens és output_tokens. Minden modell
sources array Csak olyan kérésnél, amely web_search: true értéket küld, és amelynek a keresése talált valamit: az eredmények, amelyeket a modell megkapott, mindegyik index, title és url mezővel. A válaszban az [1] az index 1 értékű elem. Streamben a message_delta eseménnyel érkezik. shannon-1.6-*, shannon-2-*, Shannon 3 család
usage.cache_read_input_tokens integer A cache_read_input_tokens a promptnak a gyorsítótárból olvasott része; az input_tokens a maradék. A cache_creation_input_tokens mindig 0. Hosztolt nyílt súlyú modellek

Válaszblokkok

Blokk Leírás
{"type": "thinking", "thinking": "…"} A modell reasoningje. Nincs signature tag.
{"type": "text", "text": "…"} A válasz szövege. Üres lehet, ha a válasz eszközhívás.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Egy eszközhívás. Az input egy JSON-objektum. Az eredményt ugyanazzal az id-val küldd vissza.

stop_reason

stop_reason Leírás Küldi
end_turn A modell befejezte a válaszát, vagy megjelent az egyik stop_sequences értéked. Minden modell
tool_use A válasz egy vagy több eszközhívást tartalmaz. Minden modell
max_tokens A választ a kimeneti korlátnál megszakította a rendszer. Shannon 3 család, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, streamekben

Streaming

Állítsd a stream értékét true-ra server-sent eventsekhez. Minden keret tartalmaz egy event: sort az esemény nevével és egy data: sort egy JSON-objektummal, amely a nevet a type mezőben megismétli. Az Anthropic SDK stream-segédei ezeket az eseményeket helyetted olvassák:

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)

Az események az érkezésük sorrendjében:

Esemény Adat Mikor
message_start message Mindig az első. A message tartalmazza az azonosítót, a szerepet, a modellt, egy üres content mezőt és egy nulláról induló usage adatot.
content_block_start index, content_block Egy blokk megnyílik. A content_block egy üres text vagy thinking blokk, vagy egy tool_use blokk az id és name mezőjével.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} A reasoning egy darabja, thinking blokkhoz.
content_block_delta index, delta {"type": "text_delta", "text"} A válasz egy darabja, text blokkhoz.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Egy eszközhívás argumentumai, egyetlen deltában teljesen, tool_use blokkhoz.
content_block_stop index Az ezzel az index értékkel jelölt blokk teljes.
message_delta delta {stop_reason, stop_sequence}, usage A válasz vége: a delta.stop_reason és a kérés usage adata.
message_stop Mindig az utolsó.

A blokkokat az index számozza a megnyitásuk sorrendjében, és egy blokk befejeződik, mielőtt a következő megnyílik. Minden blokkot a típusa szerint olvass, ne a száma szerint: a stream megnyithat először egy üres text blokkot, utána a thinking blokkot, és a választ egy későbbi text blokkban adhatja.

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

Küldi Leírás
Shannon 3 család, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Egy ping esemény a {"type": "ping"} adattal, 15 másodpercenként.
Hosztolt nyílt súlyú modellek Egy : keepalive megjegyzéssor, 15 másodpercenként, amíg a modell dolgozik.

Hibával végződő stream

A stream indulása utáni hiba egy error esemény, a hibaválaszéval azonos törzzsel: {"type": "error", "error": {"type", "message"}}. A záró események, a message_delta és a message_stop, ezután is megérkeznek. Tekintsd a választ sikertelennek, és küldd el újra a kérést.

Hibák

A hibák az Anthropic hibatörzset használják: a type értéke error, az error objektum pedig egy type és egy message mezőt tartalmaz. A táblázat azt sorolja fel, amit ez a végpont leggyakrabban visszaad. A teljes listának, azzal együtt, hogy mit érdemes újrapróbálni, külön oldala van. Hibakezelés

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Státusz Típus Üzenet Mikor
401 authentication_error Missing authentication
Invalid API key
Nem küldtél API-kulcsot, vagy a kulcs ismeretlen vagy vissza van vonva.
400 invalid_request_error unknown model: <id> A model nem Shannon modellazonosító.
400 invalid_request_error No user message provided Shannon szintek: a kérésben nincs felhasználói szöveg és nincs tools.
400 invalid_request_error <id> does not accept image input Képet küldtél egy olyan hosztolt nyílt súlyú modellnek, amely nem támogat képbemenetet.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … A messages hiányzik, vagy egy mező JSON-típusa hibás.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan A max_tokens nagyobb, mint az egyenlegedből megmaradt rész.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: egy percen belül több mint 120 kérés érkezett a fiókodról.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: a csomagod Shannon Coder hívásai elfogytak az aktuális 4 órás ablakra.
500 server_error The model backend failed to answer. Please retry. A modell nem adott választ. Küldd el újra a kérést.
502 api_error The model backend failed to answer. Please retry. A modell nem adott választ. Küldd el újra a kérést.

Tokenek számolása

A POST /v1/messages/count_tokens ugyanazt a törzset fogadja, mint egy üzenetkérés (model, system, messages, tools), és {"input_tokens": n} értéket ad vissza: a bemeneti tokenek számát, amelyet a kérésért felszámolnának. A hosztolt nyílt súlyú modelleknél számol, ingyenes, és a flood protection nem számítja bele.

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)

A számolásnak külön oldala van, a sima szöveges végponttal és a korlátokkal. Tokenszámlálás