İçeriğe geç
Hızlı başlangıç

Hızlı başlangıç

İlk isteğinizi yapın: anahtarınızı alın, bir mesaj gönderin ve yanıtı okuyun. API, OpenAI ve Anthropic biçimlerini konuşur; bu yüzden zaten kullandığınız SDK, temel URL'sini ve anahtarını değiştirdikten sonra çalışır.

1. Anahtarınızı alın

Her hesabın bir API anahtarı vardır. Oturum açın, Keys & usage sayfasını açın ve kopyalayın. Anahtar her uç noktada ve her modelde çalışır. Keys & usage

2. İstemcinizi API'ye yönlendirin

Tüm uç noktalar tek bir temel URL altında yer alır. Bir OpenAI SDK'sı onu sonunda /v1 ile alır; bir Anthropic SDK'sı /v1/messages kısmını kendisi eklediği için onsuz alır.

İstemci Temel URL
OpenAI SDK'ları ve OpenAI uyumlu istemciler https://api.shannon-ai.com/v1
Anthropic SDK'ları https://api.shannon-ai.com

Üç uç nokta metin üretir. Aynı modellere ulaşırlar; kodunuzun zaten kullandığı biçime uyanı seçin.

Uç nokta Biçim
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. İlk isteği gönderin

Chat Completions uç noktasında shannon-3 modeline bir user mesajı gönderin. YOUR_API_KEY yerine anahtarınızı koyun.

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

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": "Hello, Shannon!"}
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)
Alan Tür Varsayılan Açıklama
model string Yanıt verecek modelin kimliği. Kimlikler Models & pricing sayfasında listelenir.
messages array Şimdiye kadarki konuşma: role ve content içeren nesneler. Son user mesajı istemdir. Zorunlu.
max_tokens integer 4096 İsteğin çıktı bütçesi, 1 ile 65,536 arası. İstek bu miktarı bakiyenizden ayırır ve gerçekten kullandığı kadar ücretlendirilir.
stream boolean false true, yanıtı yazıldıkça parça parça gönderir.

İstek gövdesi JSON'dır ve Content-Type: application/json başlığını gerektirir. Alanların tam listesi uç nokta sayfasındadır. Chat Completions

Yanıt

stream olmayan bir çağrı, yanıt tamamlandığında tek bir JSON nesnesi döndürür. Aşağıdaki metinler ve sayılar örnektir.

200 JSON
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What would you like to work on?",
        "reasoning_content": "A greeting. A short, friendly reply fits."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1386,
    "completion_tokens": 74,
    "total_tokens": 1460
  }
}
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 Unix saniyesi cinsinden zamanı.
model string Yanıt veren modelin yayımlanmış kimliği; bir takma ad ya da başka bir yazım gönderseniz de.
choices array Her zaman index değeri 0 olan tek bir girdi.
choices[0].message.role string Her zaman assistant.
choices[0].message.content string | null Yanıt. Yanıt tool_calls taşıyorsa null olabilir.
choices[0].message.reasoning_content string | null Modelin yanıtından önceki akıl yürütmesi; yoksa null.
choices[0].message.tool_calls array Yalnızca model bildirdiğiniz araçlardan birini çağırdığında bulunur.
choices[0].finish_reason string Bir yanıt için stop, model bir araç çağırdığında tool_calls.
usage.prompt_tokens integer Modelin bu yanıt için okuduğu token'lar. shannon-2-* ve Shannon 3 ailesinde bu, gönderdiğiniz metinden fazla olabilir.
usage.completion_tokens integer Modelin yazdığı token'lar.
usage.total_tokens integer Toplam. Bir Shannon modelinin ücreti bu sayıdan hesaplanır.
  • usage para değil, token sayılarını içerir. Çağrının bakiyenizden aldığı miktar Keys & usage sayfasında istek başına gösterilir; nasıl hesaplandığı Limitler ve bakiye sayfasındadır. Limitler ve bakiye
  • Her yanıtta, hata ve stream dahil, x-request-id başlığı bulunur. İsteğiniz bir x-request-id başlığı taşıyorsa değeri geri gelir; aksi halde değer 12 onaltılık karakterdir. Günlüklerinizde saklayın: bu tek isteği adlandırır.

Aynı çağrı bir stream olarak

Yanıtı yazılırken okumak için stream değerini true yapın. İsteğin geri kalanı aynı kalır.

from openai import OpenAI

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

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024,
    stream=True
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Stream'in her frame'i, data: ile başlayan ve bir JSON nesnesi içeren tek bir satırdır. Birkaç satırda yazdırılmış bir frame:

Bir frame
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Frame'ler, sırayla delta finish_reason
Model akıl yürütürken. Sıfır veya daha fazla frame. {"reasoning_content": "…"} null
Yanıt, parça parça. Sıfır veya daha fazla frame. {"content": "…"} null
Son JSON frame'i. usage bilgisini de taşır; istemeniz gerekmez. {} "stop"
Stream'in sonu: data: [DONE] satırı.
  • Yanıtın durumu 200 ve content-type: text/event-stream olur. Her frame, data: <json> satırı ve ardından boş bir satırdır.
  • : ping satırı her 15 saniyede bir gelir. Bağlantıyı açık tutan bir yorumdur; SSE istemcileri onu atlar.
  • Stream açıldıktan sonraki bir hata data: {"error": {…}} frame'i olarak gelir. Durum 200 kalır, bu yüzden frame'leri denetleyin.

Akış

Çağrı başarısız olursa

Hata, type ve message içeren bir error taşıyan JSON nesnesidir. İlk çağrının en sık karşılaştığı yanıtlar bunlardır.

Durum Tür Mesaj Ne anlama gelir
401 authentication_error Missing authentication API'ye hiçbir anahtar ulaşmadı. Authorization: Bearer ve ardından anahtarınızı gönderin.
401 authentication_error Invalid API key Anahtar bir hesabın geçerli anahtarı değil. Keys & usage sayfasından yeniden kopyalayın.
400 invalid_request_error unknown model: <id> model yayımlanmış bir kimlik değil. Models & pricing sayfasındaki bir kimliği kullanın.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Bir alanın JSON türü yanlış ya da messages eksik.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan İsteğin çıktı bütçesi bakiyenize sığmıyor.

Hata yönetimi

Sonra nereye gitmeli

  • Modeller ve fiyatlandırma — Bir model seçin: kimlikler, bağlam pencereleri ve fiyatlar.
  • Chat Completions — Çağırdığınız uç noktanın her istek alanı, yanıt alanı ve stream olayı.
  • Akış — Bir stream'in frame'leri, keep-alive satırları ve stream içindeki hatalar.
  • Fonksiyon Çağırma — Modelin fonksiyonlarınızı çağırmasına izin verin.
  • Limitler ve bakiye — Bir isteğin ne ayırdığı ve neye mal olduğu ve kaç istek gönderebileceğiniz.
  • API Oyun Alanı — İstekleri tarayıcıda anahtarınızla deneyin.