İçeriğe geç
Anthropic Biçimi

Anthropic Biçimi

POST /v1/messages, Anthropic Messages biçiminde bir istek alır ve akışlı ya da akışsız aynı biçimde yanıt verir. Anthropic SDK'sı ve Claude Code gibi onun üzerine kurulu araçlarla kullanın: temel URL'yi ayarlayın, Shannon API anahtarınızı kullanın ve bir Shannon model kimliği belirtin.

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

Anthropic SDK'sını Shannon temel URL'sine yönlendirin. SDK /v1/messages ekler ve anahtarınızı x-api-key başlığında gönderir.

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)

Yanıt, content alanı bir blok listesi olan bir mesajdır. Blokları type alanlarına göre bulun: model akıl yürüttüyse ilk blok thinking olur ve metin onun ardından gelir.

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

Başlıklar

Başlık Değer Açıklama
x-api-key YOUR_API_KEY API anahtarınız. Onun yerine Authorization: Bearer YOUR_API_KEY kabul edilir.
content-type application/json Zorunlu.
anthropic-version 2023-06-01 Kabul edilir, zorunlu değildir. Anthropic SDK'sı 2023-06-01 gönderir; değer ne olursa olsun yanıt aynı biçimdedir.
anthropic-beta Kabul edilir, zorunlu değildir.
x-request-id İsteğe bağlı. İstek için kendi kimliğiniz. Yanıtta değişmeden geri gelir; olmadan yanıt 12 onaltılık karakterden oluşan bir kimlik taşır.

İstek alanları

Yalnızca messages zorunludur. Uygulayan sütunu, bir alanın yanıtı değiştirdiği modelleri belirtir. Host edilen açık ağırlıklı modeller, model listesindeki on iki kimliktir; Shannon 3 ailesi shannon-3, shannon-3-pro, shannon-3.1 ve shannon-3.1-pro kimlikleridir. Modeller ve fiyatlandırma

Alan Tür Varsayılan Açıklama Uygulayan
model string shannon-1.6-lite Model listesinden bir Shannon model kimliği. Her istekle gönderin. Eşleştirmede büyük/küçük harf ayrımı yapılmaz. Başka herhangi bir ad 400 unknown model döndürür; bu yüzden kendi model adlarını gönderen bir aracın Shannon kimliğine ayarlanması gerekir. Tüm modeller
messages array Zorunlu. Konuşma, en eski mesaj önce olmak üzere, user ve assistant rolleriyle. Aşağıdaki Mesajlar ve içerik blokları bölümüne bakın. Tüm modeller
system string | array Model için talimatlar: bir dizge veya metin blokları dizisi. Aşağıdaki Sistem istemi bölümüne bakın. Host edilen açık ağırlıklı modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Yanıtın token cinsinden üst sınırı. Bu uç noktada isteğe bağlıdır; Anthropic SDK'sı her zaman gönderir. 1 ile 65,536 dışındaki bir değer bu aralığa çekilir. Aynı zamanda istek çalışırken bakiyenizden ayrılan miktardır. Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true, yanıtı server-sent events olarak gönderir. Aşağıdaki Streaming bölümüne bakın. Tüm modeller
temperature number Örnekleme sıcaklığı. Host edilen açık ağırlıklı modellerde değerler 0 ile 2 arasında tutulur. Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus örnekleme. Host edilen açık ağırlıklı modeller
stop_sequences array En fazla 4 dizge. Yanıt, görünen ilkinden önce biter. stop_reason değeri end_turn olarak kalır. Host edilen açık ağırlıklı modeller
tools array Modelin çağırabileceği araçlar; her biri {"name", "description", "input_schema"} olarak. Aşağıdaki Araçlar bölümüne bakın. Tüm modeller
tool_choice object {"type": "auto"} kararı modele bırakır, {"type": "any"} bir aracı çağırmasını sağlar, {"type": "tool", "name": "…"} o aracı çağırmasını sağlar. Host edilen açık ağırlıklı modeller
thinking object Modelin yanıtlamadan önce ne kadar akıl yürüttüğü. Aşağıdaki Düşünme bölümüne bakın. Host edilen açık ağırlıklı modeller
web_search boolean false Biçime bir Shannon eklentisi: true, modelin yanıtlamadan önce web'de arama yapmasına izin verir. shannon-1.6-*, shannon-2-*, Shannon 3 ailesi

max_tokens olmadan değer 4,096'dır, shannon-coder-1 üzerinde 65,536'dır.

Bloklardaki metadata, top_k, service_tier ve cache_control işaretleri, mevcut istemci kodu değişmeden çalışsın diye kabul edilir. Yanıtı değiştirmezler; host edilen açık ağırlıklı modellerde istem önbelleğe alma otomatiktir.

Bir şemaya göre JSON yanıtı, Chat Completions'ta response_format ile, Responses'ta text.format ile istenir. Yapılandırılmış Çıktılar

Sistem istemi ve düşünme içeren bir istek

Bu istek bir sistem istemi, bir düşünme bütçesi, bir sıcaklık ve bir durdurma dizisi gönderir. Hepsini uygulayan, host edilen bir açık ağırlıklı model kullanır.

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)

Host edilen açık ağırlıklı modellerde usage, istem önbelleğinden okunan token'ları diğer girdi token'larından ayrı bildirir.

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

Sistem istemi

system bir dizge veya [{"type": "text", "text": "…"}] biçiminde bir metin blokları dizisidir. Blokların metinleri satır sonuyla birleştirilir.

Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ve shannon-coder-1 tarafından uygulanır. Bir Shannon 3 ailesi kimliğiyle, geçerli olması gereken talimatları kullanıcı mesajına koyun.

Mesajlar ve içerik blokları

Bir mesajın user veya assistant olan bir role alanı ve bir content alanı vardır. content bir dizge veya blok dizisidir.

Blok Açıklama Kullanılabildiği yerler
{"type": "text", "text": "…"} Metin. Tüm modeller
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Bir user mesajında base64 olarak veya URL ile bir görsel. Shannon 3 ailesi, shannon-1.6-lite, shannon-1.6-pro ve görsel girdisi olan host edilen açık ağırlıklı modeller
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Bir user mesajında base64 olarak veya URL ile bir doküman (PDF, Word, PowerPoint veya Excel). Shannon 3 ailesi
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Bir assistant mesajında: modelin önceki bir yanıtta yaptığı araç çağrısı. Tüm modeller
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} Bir user mesajında: o çağrının sonucu. content bir dizge veya metin blokları listesidir. Tüm modeller

Önceki bir yanıtın content alanını olduğu gibi geri gönderebilirsiniz: text ve tool_use blokları okunur, thinking blokları atlanır.

Shannon katmanlarında görseller ve dokümanlar son user mesajından okunur. Boyutların ve sınırların kendi sayfası var. Görseller ve dosyalar

Düşünme

Host edilen açık ağırlıklı modeller thinking alanını bir akıl yürütme çabasına eşler. Alan olmadan çaba yüksektir.

Biçim budget_tokens Etki
{"type": "disabled"} Akıl yürütme yok. Yanıtta thinking bloğu bulunmaz.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Düşük çaba.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Orta çaba.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Yüksek çaba.

Akıl yürüten bir model, akıl yürütmesini metnin önünde {"type": "thinking", "thinking": "…"} bloğu olarak döndürür. Akıl yürüten Shannon katmanları da bunu gönderir.

Çabalar kendi sayfalarında açıklanır. Akıl yürütme çabası

Araçlar

Araç, kodunuzun çalıştırdığı bir fonksiyondur. Her birini bir name, bir description ve bir input_schema ile tanımlayın. Model bir araç istediğinde yanıt bir tool_use bloğu içerir ve stop_reason değeri tool_use olur.

tools içinde bir araç tanımı:

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

Aracı çağıran bir yanıtın content alanı:

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

Aracı çalıştırın, sonra çağrıyı ve messages alanına eklenmiş bir tool_result bloğunu içeren isteği tekrar gönderin:

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

Biçim Etki Uygulayan
{"type": "auto"} Model bir aracı çağırıp çağırmayacağına kendisi karar verir. Varsayılan budur. Tüm modeller
{"type": "any"} Model araçlardan birini çağırmak zorundadır. Host edilen açık ağırlıklı modeller
{"type": "tool", "name": "…"} Model adı verilen aracı çağırmak zorundadır. Host edilen açık ağırlıklı modeller

Yalnızca input_schema alanı olan araçlar okunur. Web araması bu uç noktada bir araç değildir: web_search alanını ayarlayın.

Araç döngüsü kendi sayfasında ayrıntılı olarak açıklanır. Fonksiyon Çağırma

Yanıt

Alan Tür Açıklama Gönderen
id string msg_ ve ardından 32 onaltılık karakter. Tüm modeller
type string Her zaman message. Tüm modeller
role string Her zaman assistant. Tüm modeller
model string Yanıtı veren modelin kanonik kimliği. Tüm modeller
content array Yanıtın blokları, şu sırayla: model akıl yürüttüyse thinking, sonra text, ardından her araç çağrısı için bir tool_use. Tüm modeller
stop_reason string Yanıtın neden bittiği. Aşağıdaki değerlere bakın. Tüm modeller
usage object input_tokens ve output_tokens. Tüm modeller
sources array Yalnızca araması bir şey bulmuş, web_search: true içeren isteklerde bulunur: modele verilen sonuçlar, her biri index, title ve url ile. Yanıttaki [1], index değeri 1 olan girdidir. Akışta message_delta olayıyla gelir. shannon-1.6-*, shannon-2-*, Shannon 3 ailesi
usage.cache_read_input_tokens integer cache_read_input_tokens, isteğin önbellekten okunan kısmıdır; input_tokens geri kalanıdır. cache_creation_input_tokens her zaman 0'dır. Host edilen açık ağırlıklı modeller

Yanıt blokları

Blok Açıklama
{"type": "thinking", "thinking": "…"} Modelin akıl yürütmesi. signature üyesi yoktur.
{"type": "text", "text": "…"} Yanıt metni. Yanıt bir araç çağrısıysa boş olabilir.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Bir araç çağrısı. input bir JSON nesnesidir. Sonucu aynı id ile geri gönderin.

stop_reason

stop_reason Açıklama Gönderen
end_turn Model yanıtını tamamladı veya stop_sequences dizilerinizden biri göründü. Tüm modeller
tool_use Yanıt bir veya daha fazla araç çağrısı içerir. Tüm modeller
max_tokens Yanıt çıktı sınırında kesildi. Shannon 3 ailesi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, akışlarda

Streaming

server-sent events için stream değerini true yapın. Her çerçevede olayın adını taşıyan bir event: satırı ve adı type içinde tekrarlayan bir JSON nesnesi içeren bir data: satırı bulunur. Anthropic SDK'sının akış yardımcıları bu olayları sizin için okur:

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)

Olaylar, geliş sırasıyla:

Olay Veri Ne zaman
message_start message Her zaman ilk olay. message; kimliği, rolü, modeli, boş bir content alanını ve sıfırdan başlayan bir usage alanını içerir.
content_block_start index, content_block Bir blok açılır. content_block, boş bir text veya thinking bloğu ya da id ve name alanlarıyla bir tool_use bloğudur.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Bir thinking bloğu için akıl yürütmenin bir parçası.
content_block_delta index, delta {"type": "text_delta", "text"} Bir text bloğu için yanıtın bir parçası.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Bir tool_use bloğu için, tek bir delta içinde tamamlanmış araç çağrısı bağımsız değişkenleri.
content_block_stop index Bu index değerine sahip blok tamamlandı.
message_delta delta {stop_reason, stop_sequence}, usage Yanıtın sonu: delta.stop_reason ve isteğin usage bilgisi.
message_stop Her zaman son olay.

Bloklar açılış sırasına göre index ile numaralanır ve bir blok, sonraki açılmadan önce tamamlanır. Her bloğu numarasına göre değil türüne göre okuyun: bir akış önce boş bir text bloğu, sonra thinking bloğunu açabilir ve yanıtı daha sonraki bir text bloğunda iletebilir.

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

Gönderen Açıklama
Shannon 3 ailesi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Her 15 saniyede bir, {"type": "ping"} verisiyle bir ping olayı.
Host edilen açık ağırlıklı modeller Model çalışırken her 15 saniyede bir : keepalive yorum satırı.

Başarısız olan bir akış

Akış başladıktan sonraki bir hata, hata yanıtıyla aynı gövdeye sahip bir error olayıdır: {"type": "error", "error": {"type", "message"}}. Kapanış olayları message_delta ve message_stop yine de gelir. Yanıtı başarısız sayın ve isteği tekrar gönderin.

Hatalar

Hatalar Anthropic hata gövdesini kullanır: type değeri error'dır ve error nesnesi bir type ve bir message içerir. Tablo, bu uç noktanın en sık döndürdüklerini listeler. Hangi hataların yeniden deneneceğini de içeren tam listenin kendi sayfası var. Hata yönetimi

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Durum Tür Mesaj Ne zaman
401 authentication_error Missing authentication
Invalid API key
API anahtarı gönderilmedi veya anahtar bilinmiyor ya da iptal edilmiş.
400 invalid_request_error unknown model: <id> model bir Shannon model kimliği değil.
400 invalid_request_error No user message provided Shannon katmanları: istekte kullanıcı metni ve tools yok.
400 invalid_request_error <id> does not accept image input Görsel girdisi olmayan host edilen bir açık ağırlıklı modele görsel gönderildi.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages eksik veya bir alanın JSON türü yanlış.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens, bakiyenizde kalandan büyük.
429 rate_limit_error Too many requests. Retry in <n>s. Flood koruması: hesabınızda bir dakikada 120'den fazla istek.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: planınızın geçerli 4 saatlik penceredeki Shannon Coder çağrıları tükendi.
500 server_error The model backend failed to answer. Please retry. Model yanıt üretmedi. İsteği tekrar gönderin.
502 api_error The model backend failed to answer. Please retry. Model yanıt üretmedi. İsteği tekrar gönderin.

Token sayma

POST /v1/messages/count_tokens, bir mesaj isteğiyle aynı gövdeyi (model, system, messages, tools) alır ve {"input_tokens": n} döndürür: isteğin faturalandırılacağı girdi token sayısı. Host edilen açık ağırlıklı modeller için çalışır, ücretsizdir ve flood koruması tarafından sayılmaz.

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)

Saymanın, düz metin uç noktası ve sınırlarla birlikte kendi sayfası var. Token sayma