Preskoči na sadržaj
Brzi početak

Brzi početak

Pošaljite prvi zahtjev: uzmite svoj ključ, pošaljite jednu poruku i pročitajte odgovor. API govori OpenAI i Anthropic formate, pa SDK koji već koristite radi nakon što promijenite njegov base URL i ključ.

1. Uzmite svoj ključ

Svaki račun ima jedan API ključ. Prijavite se, otvorite Ključevi i upotreba i kopirajte ga. Ključ radi na svakom endpointu i svakom modelu. Ključevi i upotreba

2. Usmjerite klijent na API

Svi endpointi nalaze se pod jednim base URL-om. OpenAI SDK ga prima sa /v1 na kraju; Anthropic SDK ga prima bez toga, jer sam dodaje /v1/messages.

Klijent Base URL
OpenAI SDK-ovi i klijenti kompatibilni s OpenAI-jem https://api.shannon-ai.com/v1
Anthropic SDK-ovi https://api.shannon-ai.com

Tri endpointa proizvode tekst. Dosežu iste modele; odaberite onaj čiji format vaš kod već koristi.

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

3. Pošaljite prvi zahtjev

Pošaljite jednu poruku user na shannon-3 na endpointu Chat Completions. Zamijenite YOUR_API_KEY svojim ključem.

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)
Polje Tip Zadano Opis
model string Id modela koji odgovara. Id-ovi su navedeni na stranici Modeli i cijene.
messages array Dosadašnji razgovor: objekti s role i content. Zadnja poruka user je prompt. Obavezno.
max_tokens integer 4096 Izlazni proračun zahtjeva, od 1 do 65,536. Zahtjev rezervira taj iznos sa vašeg stanja i naplaćuje se za ono što je stvarno iskoristio.
stream boolean false true šalje odgovor dio po dio dok se piše.

Tijelo zahtjeva je JSON i treba zaglavlje Content-Type: application/json. Potpuni popis polja nalazi se na stranici endpointa. Chat Completions

Odgovor

Poziv bez stream vraća jedan JSON objekt kada je odgovor potpun. Tekstovi i brojevi u nastavku su primjeri.

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
  }
}
Polje Tip Opis
id string chatcmpl- iza kojeg slijedi 32 heksadecimalna znaka.
object string Uvijek chat.completion.
created integer Vrijeme odgovora u Unix sekundama.
model string Objavljeni id modela koji je odgovorio, i kada ste poslali alias ili drugi zapis.
choices array Uvijek jedan unos, s index 0.
choices[0].message.role string Uvijek assistant.
choices[0].message.content string | null Odgovor. Može biti null kada odgovor nosi tool_calls.
choices[0].message.reasoning_content string | null Razmišljanje modela prije odgovora ili null kada ga nema.
choices[0].message.tool_calls array Prisutno samo kada model pozove jedan od alata koje ste deklarirali.
choices[0].finish_reason string stop za odgovor, tool_calls kada model poziva alat.
usage.prompt_tokens integer Tokeni koje je model pročitao za ovaj odgovor. Na shannon-2-* i obitelji Shannon 3 to može biti više od teksta koji ste poslali.
usage.completion_tokens integer Tokeni koje je model napisao.
usage.total_tokens integer Zbroj. Naplata Shannon modela izračunava se iz ovog broja.
  • usage sadrži brojeve tokena, a ne novac. Što je poziv uzeo s vašeg stanja prikazuje se po zahtjevu na Ključevi i upotreba; kako se izračunava nalazi se na Ograničenja i stanje. Ograničenja i stanje
  • Svaki odgovor, i greška i stream, ima zaglavlje x-request-id. Ako vaš zahtjev nosi zaglavlje x-request-id, vraća se njegova vrijednost; inače je vrijednost 12 heksadecimalnih znakova. Čuvajte ga u svojim zapisnicima: imenuje upravo ovaj zahtjev.

Isti poziv kao stream

Postavite stream na true da čitate odgovor dok se piše. Sve ostalo u zahtjevu ostaje isto.

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)

Svaki okvir streama je jedan redak koji počinje s data: i sadrži JSON objekt. Jedan okvir, ispisan u više redaka:

Jedan okvir
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Okviri, redom delta finish_reason
Dok model razmišlja. Nula ili više okvira. {"reasoning_content": "…"} null
Odgovor, dio po dio. Nula ili više okvira. {"content": "…"} null
Zadnji JSON okvir. Nosi i usage; ne morate ga tražiti. {} "stop"
Kraj streama: redak data: [DONE].
  • Odgovor ima status 200 i content-type: text/event-stream. Svaki okvir je redak data: <json> iza kojeg slijedi prazan redak.
  • Redak : ping stiže svakih 15 sekundi. To je komentar koji drži vezu otvorenom; SSE klijenti ga preskaču.
  • Greška nakon otvaranja streama stiže kao okvir data: {"error": {…}}. Status ostaje 200, zato provjeravajte okvire.

Streaming

Ako poziv ne uspije

Greška je JSON objekt s poljem error koje sadrži type i message. Ovo su odgovori na koje prvi poziv najčešće naiđe.

Status Tip Poruka Što znači
401 authentication_error Missing authentication Nijedan ključ nije stigao do API-ja. Pošaljite Authorization: Bearer iza kojeg slijedi vaš ključ.
401 authentication_error Invalid API key Ključ nije trenutačni ključ nijednog računa. Ponovno ga kopirajte sa stranice Ključevi i upotreba.
400 invalid_request_error unknown model: <id> model nije objavljeni id. Koristite id sa stranice Modeli i cijene.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Polje ima pogrešan JSON tip ili messages nedostaje.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Izlazni proračun zahtjeva ne stane u vaše stanje.

Upravljanje greškama

Kamo dalje

  • Modeli i cijene — Odaberite model: id-ovi, kontekstni prozori i cijene.
  • Chat Completions — Svako polje zahtjeva, polje odgovora i događaj streama endpointa koji ste pozvali.
  • Streaming — Okviri streama, keep-alive retci i greške unutar streama.
  • Pozivanje funkcija — Pustite model da poziva vaše funkcije.
  • Ograničenja i stanje — Što zahtjev rezervira i koliko košta te koliko zahtjeva smijete poslati.
  • Playground — Isprobajte zahtjeve u pregledniku sa svojim ključem.