İçeriğe geç
Chat Completions

Chat Completions

POST /v1/chat/completions bir konuşma alır ve modelin sonraki mesajını OpenAI Chat Completions biçiminde döndürür. Herhangi bir OpenAI SDK'sından veya düz HTTP üzerinden kullanın; bu sayfa alan alan başvuru belgesidir.

POST https://api.shannon-ai.com/v1/chat/completions

En küçük istek, bir model kimliği ve bir kullanıcı mesajıdır.

from openai import OpenAI

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

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

print(response.choices[0].message.content)

Yanıt tek bir JSON nesnesidir:

200 JSON
{
  "id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "object": "chat.completion",
  "created": 1791625200,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello, it is good to meet you.",
        "reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1184,
    "completion_tokens": 46,
    "total_tokens": 1230
  }
}

Başlıklar

İstek başlıkları

Başlık Değer Açıklama
Authorization Bearer YOUR_API_KEY API anahtarınız. Onun yerine her uç noktada x-api-key: YOUR_API_KEY kabul edilir.
Content-Type application/json Zorunlu. Diğer her değer 415 döndürür.
x-request-id İsteğe bağlı. İstek için kendi kimliğiniz. Yanıtta değişmeden geri gelir.

Yanıt başlıkları

Başlık Açıklama
x-request-id Hatalar ve akışlar dahil her yanıtta: gönderdiğiniz değer veya hiçbir şey göndermediyseniz 12 onaltılık karakter. Bir sorun bildirirken bunu belirtin.
content-type application/json veya stream değeri true olduğunda text/event-stream.

İ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 Yanıtı veren model: model listesinden bir kimlik. Her istekle gönderin. Eşleştirmede büyük/küçük harf ayrımı yapılmaz. Yayımlanmamış bir kimlik 400 unknown model döndürür. Tüm modeller
messages array Zorunlu. Konuşma, en eski mesaj önce olmak üzere. Aşağıdaki Mesajlar bölümüne bakın. Tüm modeller
stream boolean false true, yanıtı yazılırken server-sent events olarak gönderir. Tüm modeller
max_tokens integer 4096 Yanıtın token cinsinden üst sınırı. 1 ile 65,536 dışındaki bir değer bu aralığa çekilir. Aynı zamanda istek çalışırken bakiyenizden ayrılan miktardır. Aşağıdaki Çıktı uzunluğu bölümüne bakın. Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer max_tokens ile aynı. İkisi birlikte gönderildiğinde max_tokens kullanılır. Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Örnekleme sıcaklığı. Host edilen açık ağırlıklı modellerde varsayılan 1'dir ve 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 0.95 Nucleus örnekleme. Değerler 0 ile 1 arasında tutulur. Host edilen açık ağırlıklı modeller
seed integer Örnekleyicinin tohumu, herhangi bir tam sayı. Verilmezse tohum modelden ve konuşmadan türetilir; bu yüzden aynı istek iki kez gönderilirse aynı tohum kullanılır. Host edilen açık ağırlıklı modeller
stop string | array Bir dizge veya dizge dizisi. En fazla 4 tanesi kullanılır. Yanıt, görünen ilkinden önce biter; durdurma metninin kendisi döndürülmez. Host edilen açık ağırlıklı modeller
reasoning_effort string high Modelin yanıtlamadan önce ne kadar akıl yürüttüğü: off, low, medium veya high. none ve minimal değerleri off anlamına gelir, default değeri medium, max değeri high anlamına gelir. Diğer her değer 400 döndürür. Host edilen açık ağırlıklı modeller
reasoning object Aynı ayarın nesne biçimi: {"effort": "low"}. İkisi birlikte gönderildiğinde reasoning_effort kullanılır. Host edilen açık ağırlıklı modeller
tools array Modelin çağırabileceği fonksiyonlar; her biri {"type": "function", "function": {"name", "description", "parameters"}} olarak. Modelin çağrıları tool_calls içinde gelir; kodunuz onları çalıştırır. Tüm modeller
tool_choice string | object auto "auto" kararı modele bırakır. "required" bir aracı çağırmasını sağlar. {"type": "function", "function": {"name": "…"}} o aracı çağırmasını sağlar. Host edilen açık ağırlıklı modeller
response_format object JSON yanıtı için {"type": "json_object"}, şemanızı izleyen bir yanıt için {"type": "json_schema", "json_schema": {…}}. Tüm Shannon katmanları; host edilen açık ağırlıklı modeller kimlik başına listelendiği gibi
web_search boolean false true, modelin yanıtlamadan önce web'de arama yapmasına izin verir. shannon-1.6-*, shannon-2-*, Shannon 3 ailesi

n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store ve prompt_cache_key gibi diğer OpenAI alanları, mevcut istemci kodu değişmeden çalışsın diye kabul edilir. Yanıtı değiştirmezler: her zaman tek bir seçenek vardır ve bir akış her zaman kullanım bilgisiyle biter.

JSON türü yanlış olan bir alan, örneğin "max_tokens": "100", 422 döndürür. messages olmayan bir istek de öyle.

Araçların, yapılandırılmış çıktının, akıl yürütmenin ve web aramasının her birinin kendi sayfası var: Fonksiyon Çağırma, Yapılandırılmış Çıktılar, Akıl yürütme çabası, Yerleşik Web Arama.

Seçenekli bir istek

Bu istek bir sistem mesajı, örnekleme alanları ve akıl yürütme çabasını ayarlar. Hepsini uygulayan, host edilen bir açık ağırlıklı model kullanır.

from openai import OpenAI

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

response = client.chat.completions.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    messages=[
        {"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
        {"role": "user", "content": "Why is the sky blue?"},
    ],
    max_tokens=512,
    temperature=0.3,
    top_p=0.9,
    seed=7,
    stop=["\n\n"],
    reasoning_effort="low",
)

message = response.choices[0].message
print(message.reasoning_content)  # the reasoning
print(message.content)            # the answer
print(response.usage)

Yanıt, yukarıdakiyle aynı yapıdadır. Host edilen açık ağırlıklı modellerde usage alanı iki ayrıntı ekler: önbellekten okunan istem token'ları ve akıl yürütmeye harcanan token'lar.

200 JSON
{
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 62,
    "total_tokens": 93,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 21
    }
  }
}

Çıktı uzunluğu

max_tokens iki şey yapar. Birincisi, istek başladığında bakiyenizden ayrılan token sayısıdır. Yanıt tamamlandığında bu miktar, isteğin kullandığı token'larla değiştirilir. max_tokens, bakiyenizde kalandan büyükse yanıtın kendisi sığacak olsa bile istek 429 Quota exceeded döndürür. Daha az ayırmak için daha düşük bir max_tokens gönderin.

shannon-coder-1 bu uç noktada farklı sayılır: her istek planınızın Shannon Coder çağrılarından biridir ve onun için token ayrılmaz. Limitler ve bakiye

İkincisi, şu modellerde yanıtın uzunluğunu sınırlar:

Modeller max_tokens ne yapar
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Yanıt sınıra ulaşınca durur. Akış, finish_reason değeri length ile biter.
Host edilen açık ağırlıklı modeller Yanıt metni max_tokens değerinde durur. Akıl yürütme buna dahil edilmez. 256'nın altındaki değerler 256 gibi işlenir.

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

Mesajlar

Her mesaj, bir role ve bir content içeren bir nesnedir. content bir dizge veya mesaj metinden fazlasını taşıdığında bir parça dizisidir.

Rol Açıklama Uygulayan
system Model için talimatlar. En başa koyun. Shannon katmanlarında kullanılan, ilk system mesajıdır. Host edilen açık ağırlıklı modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer system olarak okunur. Host edilen açık ağırlıklı modeller
user Sizin sorduğunuz. Shannon katmanlarında son user mesajı istemdir, ondan önceki mesajlar geçmiştir. Tüm modeller
assistant Modelin önceki yanıtları. Ardından bir araç sonucu gönderirken tool_calls alanını koruyun. Tüm modeller
tool Bir araç çağrısının sonucu: tool_call_id çağrının kimliğini, content sonucu dizge olarak içerir. Tüm modeller

Bir Shannon 3 ailesi kimliğiyle, geçerli olması gereken talimatları user mesajına koyun.

Shannon katmanlarında kullanıcı metni ve tools olmayan bir istek 400 No user message provided döndürür.

İçerik parçaları

Parça Açıklama Kullanılabildiği yerler
{"type": "text", "text": "…"} Düz metin. Tüm modeller
{"type": "image_url", "image_url": {"url": "…"}} Base64 içerikli bir data: URL'si olarak veya bir http(s) URL'si olarak 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": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Base64 olarak veya URL ile bir doküman (PDF, Word, PowerPoint veya Excel). Shannon 3 ailesi

Boyutların, sınırların ve biçimlerin tam listesinin kendi sayfası var. Görseller ve dosyalar

Yanıt nesnesi

Alan Tür Açıklama
id string chatcmpl- ve ardından 32 onaltılık karakter.
object string Her zaman chat.completion.
created integer Yanıtın zamanı, Unix saniyesi olarak.
model string Yanıtı veren modelin kanonik kimliği. Yazımı, gönderdiğiniz kimlikten farklı olabilir.
choices array Her zaman, index değeri 0 olan tam olarak bir seçenek.
choices[0].message.role string Her zaman assistant.
choices[0].message.content string | null Yanıt metni. tool_calls ile Shannon katmanlarında null olur; host edilen açık ağırlıklı modeller çağrıların yanında metin gönderebilir.
choices[0].message.reasoning_content string | null Modelin yanıttan önce yazdığı akıl yürütme veya hiç yoksa null.
choices[0].message.tool_calls array Yalnızca model araç çağırdığında bulunur. Her girdinin bir id, type değeri function ve name ile JSON dizgesi olarak arguments içeren function alanı vardır.
choices[0].message.annotations array Yalnızca araması bir şey bulmuş, web_search: true içeren isteklerde bulunur. content içindeki bir işaretin adlandırdığı her kaynak için bir url_citation; içinde url, title, start_index ve end_index vardır (işaretin karakter olarak sayılan konumu, bitiş dahil değildir).
choices[0].finish_reason string Yanıtın neden bittiği. Bitiş nedenlerine bakın.
usage object İsteğin token'ları. Kullanım bölümüne bakın.
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.

Bitiş nedenleri

finish_reason Açıklama
stop Model yanıtını tamamladı veya bir stop dizgesi göründü.
tool_calls Model bir veya daha fazla aracı çağırıyor. Onları çalıştırın ve sonuçları tool mesajlarında gönderin.
length Yanıt çıktı sınırında kesildi. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ve Shannon 3 ailesinin akışlarında bildirilir.

Akışsız bir yanıt stop veya tool_calls bildirir.

Kullanım

Alan Tür Açıklama Kullanılabildiği yerler
usage.prompt_tokens integer Girdi token'ları. Tüm modeller
usage.completion_tokens integer Çıktı token'ları: akıl yürütme, yanıt ve araç çağrıları birlikte. Tüm modeller
usage.total_tokens integer prompt_tokens artı completion_tokens. Tüm modeller
usage.prompt_tokens_details.cached_tokens integer prompt_tokens değerinin istem önbelleğinden okunan kısmı. Host edilen açık ağırlıklı modeller
usage.completion_tokens_details.reasoning_tokens integer completion_tokens değerinin akıl yürütmeye harcanan kısmı. Host edilen açık ağırlıklı modeller

Host edilen açık ağırlıklı modellerde prompt_tokens, mesajlarınızın ve araç tanımlarınızın modelin kendi tokenizer'ıyla sayılması ile varsa görsellerin token'larının toplamıdır. Token sayma uç noktaları, siz göndermeden önce aynı sayıyı döndürür. Token sayma

Shannon katmanlarında prompt_tokens, modelin yanıtı yazmak için okuduğu her şeyi sayar; bu yüzden yalnızca mesajlarınızın metninden büyüktür.

Streaming

stream değeri true olduğunda yanıt chat.completion.chunk olayları olarak gelir ve data: [DONE] ile biter. Ondan önceki son parça finish_reason ve usage taşır; stream_options gerekmez. Parça yapılarının, keep-alive satırlarının ve bir akışın içindeki hataların kendi sayfası var. Akış

Hatalar

Hata, bir error üyesi olan bir JSON nesnesidir. Kontroller şu sırayla çalışır: API anahtarı, istek gövdesi, model kimliği, sonra bakiye. 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
{
  "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 yayımlanmış bir kimlik 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 parçası gönderildi.
400 invalid_request_error <id> does not accept response_format Yapılandırılmış çıktısı olmayan, host edilen bir açık ağırlıklı modele response_format gönderildi.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort listenin dışında bir değer içeriyor.
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.
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. Aynısı, Shannon 3 ailesinde ve host edilen açık ağırlıklı modellerde.