Langsung ke konten
Mulai cepat

Mulai cepat

Buat permintaan pertama: dapatkan kunci Anda, kirim satu pesan, dan baca balasannya. API ini memakai format OpenAI dan Anthropic, jadi SDK yang sudah Anda pakai berfungsi setelah Anda mengganti base URL dan kuncinya.

1. Dapatkan kunci Anda

Setiap akun memiliki satu kunci API. Masuk, buka Keys & usage, dan salin. Kunci berfungsi pada setiap endpoint dan setiap model. Keys & usage

2. Arahkan klien Anda ke API

Semua endpoint berada di bawah satu base URL. SDK OpenAI memakainya dengan /v1 di akhir; SDK Anthropic memakainya tanpa itu, karena ia menambahkan /v1/messages sendiri.

Klien Base URL
SDK OpenAI dan klien yang kompatibel dengan OpenAI https://api.shannon-ai.com/v1
SDK Anthropic https://api.shannon-ai.com

Tiga endpoint menghasilkan teks. Ketiganya menjangkau model yang sama; pilih yang formatnya sudah dipakai kode Anda.

Endpoint Format
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Kirim permintaan pertama

Kirim satu pesan user ke shannon-3 pada endpoint Chat Completions. Ganti YOUR_API_KEY dengan kunci Anda.

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)
Field Tipe Default Deskripsi
model string Id model yang menjawab. Id tercantum di Models & pricing.
messages array Percakapan sejauh ini: objek dengan role dan content. Pesan user terakhir adalah prompt. Wajib.
max_tokens integer 4096 Anggaran output permintaan, dari 1 sampai 65,536. Permintaan mencadangkan jumlah ini dari saldo Anda dan ditagih sesuai yang benar-benar dipakai.
stream boolean false true mengirim jawaban sepotong demi sepotong saat ditulis.

Body permintaan adalah JSON dan memerlukan header Content-Type: application/json. Daftar lengkap field ada di halaman endpoint. Chat Completions

Balasannya

Panggilan tanpa stream mengembalikan satu objek JSON ketika jawaban selesai. Teks dan angka di bawah ini adalah contoh.

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
  }
}
Field Tipe Deskripsi
id string chatcmpl- diikuti 32 karakter heksadesimal.
object string Selalu chat.completion.
created integer Waktu balasan dalam detik Unix.
model string Id model yang menjawab sebagaimana dipublikasikan, juga ketika Anda mengirim alias atau ejaan lain.
choices array Selalu satu entri, dengan index 0.
choices[0].message.role string Selalu assistant.
choices[0].message.content string | null Jawabannya. Bisa null ketika balasan membawa tool_calls.
choices[0].message.reasoning_content string | null Penalaran model sebelum jawabannya, atau null jika tidak ada.
choices[0].message.tool_calls array Hanya ada ketika model memanggil salah satu tool yang Anda deklarasikan.
choices[0].finish_reason string stop untuk jawaban, tool_calls ketika model memanggil tool.
usage.prompt_tokens integer Token yang dibaca model untuk jawaban ini. Pada shannon-2-* dan keluarga Shannon 3, ini bisa lebih banyak daripada teks yang Anda kirim.
usage.completion_tokens integer Token yang ditulis model.
usage.total_tokens integer Totalnya. Biaya model Shannon dihitung dari angka ini.
  • usage berisi jumlah token, bukan uang. Apa yang diambil panggilan dari saldo Anda ditampilkan per permintaan di Keys & usage; cara penghitungannya ada di Limits and balance. Batas dan saldo
  • Setiap balasan, termasuk error dan stream, memiliki header x-request-id. Jika permintaan Anda membawa header x-request-id, nilainya dikembalikan; jika tidak, nilainya 12 karakter heksadesimal. Simpan di log Anda: ia menamai satu permintaan ini.

Panggilan yang sama sebagai stream

Setel stream ke true untuk membaca jawaban saat ditulis. Semua hal lain dalam permintaan tetap sama.

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)

Setiap frame stream adalah satu baris yang diawali data: dan berisi objek JSON. Satu frame, dicetak dalam beberapa baris:

Satu frame
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Frame, berurutan delta finish_reason
Selama model bernalar. Nol frame atau lebih. {"reasoning_content": "…"} null
Jawabannya, sepotong demi sepotong. Nol frame atau lebih. {"content": "…"} null
Frame JSON terakhir. Frame ini juga membawa usage; Anda tidak perlu memintanya. {} "stop"
Akhir stream: baris data: [DONE].
  • Balasan berstatus 200 dan content-type: text/event-stream. Setiap frame adalah satu baris data: <json> diikuti baris kosong.
  • Baris : ping datang setiap 15 detik. Itu komentar yang menjaga koneksi tetap terbuka; klien SSE melewatinya.
  • Kegagalan setelah stream terbuka datang sebagai frame data: {"error": {…}}. Statusnya tetap 200, jadi periksa frame-nya.

Streaming

Jika panggilan gagal

Error adalah objek JSON dengan error yang berisi type dan message. Berikut balasan yang paling sering ditemui pada panggilan pertama.

Status Tipe Pesan Artinya
401 authentication_error Missing authentication Tidak ada kunci yang sampai ke API. Kirim Authorization: Bearer diikuti kunci Anda.
401 authentication_error Invalid API key Kunci bukan kunci akun yang berlaku saat ini. Salin lagi dari Keys & usage.
400 invalid_request_error unknown model: <id> model bukan id yang dipublikasikan. Gunakan id dari Models & pricing.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Sebuah field bertipe JSON salah, atau messages hilang.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Anggaran output permintaan tidak muat dalam saldo Anda.

Penanganan kesalahan

Selanjutnya ke mana

  • Model & harga — Pilih model: id, jendela konteks, dan harga.
  • Chat Completions — Setiap field permintaan, field balasan, dan event stream dari endpoint yang Anda panggil.
  • Streaming — Frame stream, baris keep-alive, dan error di dalam stream.
  • Pemanggilan fungsi — Biarkan model memanggil fungsi Anda.
  • Batas dan saldo — Apa yang dicadangkan dan dibiayai suatu permintaan, dan berapa banyak permintaan yang boleh Anda kirim.
  • Playground API — Coba permintaan di browser dengan kunci Anda.