Preskoči na vsebino
Hiter začetek

Hiter začetek

Naredite prvi zahtevek: pridobite ključ, pošljite eno sporočilo in preberite odgovor. API govori formata OpenAI in Anthropic, zato SDK, ki ga že uporabljate, deluje, ko spremenite njegov osnovni URL in ključ.

1. Pridobite svoj ključ

Vsak račun ima en API ključ. Prijavite se, odprite Ključi in poraba ter ga kopirajte. Ključ deluje na vsaki končni točki in z vsakim modelom. Ključi in poraba

2. Usmerite odjemalca na API

Vse končne točke so pod enim osnovnim URL-jem. SDK OpenAI ga sprejme s /v1 na koncu; SDK Anthropic ga sprejme brez, ker /v1/messages doda sam.

Odjemalec Osnovni URL
SDK-ji OpenAI in odjemalci, združljivi z OpenAI https://api.shannon-ai.com/v1
SDK-ji Anthropic https://api.shannon-ai.com

Besedilo ustvarjajo tri končne točke. Dosegajo iste modele; izberite tisto, katere format vaša koda že uporablja.

Končni točka (Endpoint) Format
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Pošljite prvi zahtevek

Pošljite eno sporočilo user modelu shannon-3 na končni točki Chat Completions. YOUR_API_KEY zamenjajte s 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 Privzeto Opis
model string Id modela, ki odgovori. Id so navedeni na strani Models & pricing.
messages array Pogovor do zdaj: objekti z role in content. Zadnje sporočilo user je prompt. Obvezno.
max_tokens integer 4096 Izhodni proračun zahtevka, od 1 do 65,536. Zahtevek ta znesek rezervira z vašega stanja in mu je obračunano, kar je res porabil.
stream boolean false true pošilja odgovor po koščkih, medtem ko se piše.

Telo zahtevka je JSON in potrebuje glavo Content-Type: application/json. Celoten seznam polj je na strani končne točke. Chat Completions

Odgovor

Klic brez stream vrne en objekt JSON, ko je odgovor popoln. Spodnja besedila in števila so primeri.

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-, ki mu sledi 32 šestnajstiških znakov.
object string Vedno chat.completion.
created integer Čas odgovora v sekundah Unix.
model string Objavljeni id modela, ki je odgovoril, tudi kadar ste poslali vzdevek ali drug zapis.
choices array Vedno en vnos, z index 0.
choices[0].message.role string Vedno assistant.
choices[0].message.content string | null Odgovor. Je lahko null, kadar odgovor vsebuje tool_calls.
choices[0].message.reasoning_content string | null Razmišljanje modela pred odgovorom ali null, če ga ni.
choices[0].message.tool_calls array Prisotno samo, kadar model pokliče eno od orodij, ki ste jih deklarirali.
choices[0].finish_reason string stop za odgovor, tool_calls, kadar model pokliče orodje.
usage.prompt_tokens integer Tokeni, ki jih je model prebral za ta odgovor. Pri shannon-2-* in družini Shannon 3 je lahko več, kot je besedila, ki ste ga poslali.
usage.completion_tokens integer Tokeni, ki jih je model napisal.
usage.total_tokens integer Skupni znesek. Obračun modela Shannon se izračuna iz tega števila.
  • usage vsebuje števila tokenov, ne denarja. Kaj je klic vzel z vašega stanja, je prikazano po zahtevkih na strani Ključi in poraba; kako se izračuna, je na strani Omejitve in stanje. Omejitve in stanje
  • Vsak odgovor, tudi napaka in tok, ima glavo x-request-id. Če vaš zahtevek vsebuje glavo x-request-id, se vrne njena vrednost; sicer je vrednost 12 šestnajstiških znakov. Hranite jo v dnevnikih: označuje ta en zahtevek.

Isti klic kot tok

Nastavite stream na true, da odgovor berete, medtem ko se piše. Vse drugo v zahtevku ostane enako.

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)

Vsak okvir toka je ena vrstica, ki se začne z data: in vsebuje objekt JSON. En okvir, izpisan v več vrsticah:

En okvir
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Okvirji, po vrsti delta finish_reason
Medtem ko model razmišlja. Nič ali več okvirjev. {"reasoning_content": "…"} null
Odgovor, po koščkih. Nič ali več okvirjev. {"content": "…"} null
Zadnji okvir JSON. Vsebuje tudi usage; zanj vam ni treba zaprositi. {} "stop"
Konec toka: vrstica data: [DONE].
  • Odgovor ima status 200 in content-type: text/event-stream. Vsak okvir je vrstica data: <json>, ki ji sledi prazna vrstica.
  • Vrstica : ping prispe vsakih 15 sekund. Je komentar, ki ohranja povezavo odprto; odjemalci SSE jo preskočijo.
  • Napaka po odprtju toka prispe kot okvir data: {"error": {…}}. Status ostane 200, zato preverjajte okvirje.

Pretakanje

Če klic ne uspe

Napaka je objekt JSON z error, ki vsebuje type in message. To so odgovori, na katere prvi klic najpogosteje naleti.

Stanje Vrsta Sporočilo Kaj pomeni
401 authentication_error Missing authentication Noben ključ ni prispel do API-ja. Pošljite Authorization: Bearer, ki mu sledi vaš ključ.
401 authentication_error Invalid API key Ključ ni trenutni ključ nobenega računa. Znova ga kopirajte na strani Ključi in poraba.
400 invalid_request_error unknown model: <id> model ni objavljen id. Uporabite id s strani Models & pricing.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Polje ima napačen tip JSON ali manjka messages.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Izhodni proračun zahtevka se ne prilega v vaše stanje.

Obravnava napak

Kam naprej

  • Modeli in cene — Izberite model: id, kontekstna okna in cene.
  • Chat Completions — Vsako polje zahtevka, polje odgovora in dogodek toka končne točke, ki ste jo poklicali.
  • Pretakanje — Okvirji toka, vrstice za ohranjanje povezave in napake znotraj toka.
  • Klicanje funkcij — Dovolite, da model kliče vaše funkcije.
  • Omejitve in stanje — Kaj zahtevek rezervira in koliko stane ter koliko zahtevkov lahko pošljete.
  • Igrišče API — Preizkusite zahtevke v brskalniku s svojim ključem.