Siirry sisältöön
Pika-aloitus

Pika-aloitus

Tee ensimmäinen pyyntö: hanki avaimesi, lähetä yksi viesti ja lue vastaus. API puhuu OpenAI- ja Anthropic-muotoja, joten jo käyttämäsi SDK toimii, kun vaihdat sen perus-URL:n ja avaimen.

1. Hanki avaimesi

Jokaisella tilillä on yksi API-avain. Kirjaudu sisään, avaa Keys & usage ja kopioi se. Avain toimii jokaisessa päätepisteessä ja jokaisella mallilla. Avaimet ja käyttö

2. Osoita asiakkaasi API:in

Kaikki päätepisteet sijaitsevat yhden perus-URL:n alla. OpenAI-SDK ottaa sen /v1 lopussa; Anthropic-SDK ottaa sen ilman, koska se lisää /v1/messages itse.

Asiakas Perus-URL
OpenAI-SDK:t ja OpenAI-yhteensopivat asiakkaat https://api.shannon-ai.com/v1
Anthropic-SDK:t https://api.shannon-ai.com

Kolme päätepistettä tuottaa tekstiä. Ne tavoittavat samat mallit; valitse se, jonka muotoa koodisi jo käyttää.

Päätepiste Muoto
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Lähetä ensimmäinen pyyntö

Lähetä yksi user-viesti mallille shannon-3 Chat Completions -päätepisteeseen. Korvaa YOUR_API_KEY avaimellasi.

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)
Kenttä Tyyppi Oletus Kuvaus
model string Vastaavan mallin id. Id:t on listattu Models & pricing -sivulla.
messages array Keskustelu tähän asti: objekteja, joissa on role ja content. Viimeinen user-viesti on prompt. Pakollinen.
max_tokens integer 4096 Pyynnön tulostebudjetti, 1–65,536. Pyyntö varaa tämän määrän saldostasi ja siitä veloitetaan se, mitä se todella käytti.
stream boolean false true lähettää vastauksen pala palalta sitä mukaa kuin se kirjoitetaan.

Pyynnön runko on JSON ja tarvitsee otsakkeen Content-Type: application/json. Täydellinen kenttälista on päätepistesivulla. Chat Completions

Vastaus

Kutsu ilman stream-kenttää palauttaa yhden JSON-objektin, kun vastaus on valmis. Alla olevat tekstit ja luvut ovat esimerkkejä.

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
  }
}
Kenttä Tyyppi Kuvaus
id string chatcmpl- ja sen perässä 32 heksadesimaalimerkkiä.
object string Aina chat.completion.
created integer Vastauksen aika Unix-sekunteina.
model string Vastanneen mallin julkaistu id, myös silloin kun lähetit aliaksen tai toisen kirjoitusasun.
choices array Aina yksi alkio, jonka index on 0.
choices[0].message.role string Aina assistant.
choices[0].message.content string | null Vastaus. Se voi olla null, kun vastauksessa on tool_calls.
choices[0].message.reasoning_content string | null Mallin päättely ennen vastausta, tai null, kun sitä ei ole.
choices[0].message.tool_calls array Mukana vain, kun malli kutsuu jotakin julistamistasi työkaluista.
choices[0].finish_reason string stop vastaukselle, tool_calls kun malli kutsuu työkalua.
usage.prompt_tokens integer Tokenit, jotka malli luki tätä vastausta varten. Malleilla shannon-2-* ja Shannon 3 -perheellä tämä voi olla enemmän kuin lähettämäsi teksti.
usage.completion_tokens integer Tokenit, jotka malli kirjoitti.
usage.total_tokens integer Kokonaismäärä. Shannon-mallin veloitus lasketaan tästä luvusta.
  • usage sisältää tokenmääriä, ei rahaa. Mitä kutsu vei saldostasi, näkyy pyyntökohtaisesti Keys & usage -sivulla; laskutapa on sivulla Rajat ja saldo. Rajat ja saldo
  • Jokaisessa vastauksessa, myös virheessä ja striimissä, on otsake x-request-id. Jos pyynnössäsi on x-request-id-otsake, sen arvo palaa; muuten arvo on 12 heksadesimaalimerkkiä. Säilytä se lokeissasi: se nimeää juuri tämän pyynnön.

Sama kutsu striiminä

Aseta stream arvoon true, jos haluat lukea vastauksen sitä mukaa kuin se kirjoitetaan. Kaikki muu pyynnössä pysyy samana.

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)

Jokainen striimin kehys on yksi rivi, joka alkaa merkinnällä data: ja sisältää JSON-objektin. Yksi kehys tulostettuna usealle riville:

Yksi kehys
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Kehykset järjestyksessä delta finish_reason
Kun malli päättelee. Nolla tai useampi kehys. {"reasoning_content": "…"} null
Vastaus pala palalta. Nolla tai useampi kehys. {"content": "…"} null
Viimeinen JSON-kehys. Siinä on myös usage; sitä ei tarvitse pyytää. {} "stop"
Striimin loppu: rivi data: [DONE].
  • Vastauksen tila on 200 ja content-type: text/event-stream. Jokainen kehys on rivi data: <json> ja sen perässä tyhjä rivi.
  • Rivi : ping saapuu 15 sekunnin välein. Se on kommentti, joka pitää yhteyden auki; SSE-asiakkaat ohittavat sen.
  • Virhe striimin avautumisen jälkeen saapuu kehyksenä data: {"error": {…}}. Tila pysyy 200, joten tarkista kehykset.

Suoratoisto

Jos kutsu epäonnistuu

Virhe on JSON-objekti, jossa on error, joka sisältää kentät type ja message. Nämä ovat vastaukset, joihin ensimmäinen kutsu useimmin törmää.

Tila Tyyppi Viesti Mitä se tarkoittaa
401 authentication_error Missing authentication Mikään avain ei tavoittanut API:a. Lähetä Authorization: Bearer ja sen perässä avaimesi.
401 authentication_error Invalid API key Avain ei ole minkään tilin nykyinen avain. Kopioi se uudelleen Keys & usage -sivulta.
400 invalid_request_error unknown model: <id> model ei ole julkaistu id. Käytä id:tä Models & pricing -sivulta.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Kentän JSON-tyyppi on väärä tai messages puuttuu.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Pyynnön tulostebudjetti ei mahdu saldoosi.

Virheiden käsittely

Mihin seuraavaksi

  • Mallit ja hinnoittelu — Valitse malli: id:t, kontekstikoot ja hinnat.
  • Chat Completions — Jokainen kutsumasi päätepisteen pyyntökenttä, vastauskenttä ja striimitapahtuma.
  • Suoratoisto — Striimin kehykset, keep-alive-rivit ja virheet striimin sisällä.
  • Toiminto kutsu — Anna mallin kutsua funktioitasi.
  • Rajat ja saldo — Mitä pyyntö varaa ja maksaa, ja kuinka monta pyyntöä saat lähettää.
  • API Playground — Kokeile pyyntöjä selaimessa avaimellasi.