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) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
console.log(response.choices[0].message.content); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' Yanıt tek bir JSON nesnesidir:
{
"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) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await 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",
});
const message = response.choices[0].message;
console.log(message.reasoning_content); // the reasoning
console.log(message.content); // the answer
console.log(response.usage); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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"
}' 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.
{
"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
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Durum | Tür | Mesaj | Ne zaman |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid 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. |