Joan edukira
Hasiera azkarra

Hasiera azkarra

Egin lehen eskaera: lortu zure gakoa, bidali mezu bat eta irakurri erantzuna. APIak OpenAI eta Anthropic formatuak hitz egiten ditu, beraz jada erabiltzen duzun SDK-ak funtzionatzen du bere base URL-a eta gakoa aldatu ondoren.

1. Lortu zure gakoa

Kontu bakoitzak API gako bat du. Hasi saioa, ireki Gakoak eta erabilera eta kopiatu. Gakoak endpoint eta modelo guztietan balio du. Gakoak eta erabilera

2. Zuzendu zure bezeroa APIra

Endpoint guztiak base URL bakar baten azpian daude. OpenAI SDK batek amaieran /v1-ekin hartzen du; Anthropic SDK batek gabe, /v1/messages berak gehitzen duelako.

Bezeroa Base URL-a
OpenAI SDK-ak eta OpenAI-rekin bateragarriak diren bezeroak https://api.shannon-ai.com/v1
Anthropic SDK-ak https://api.shannon-ai.com

Hiru endpoint-ek sortzen dute testua. Modelo berberetara iristen dira; aukeratu zure kodeak jada erabiltzen duen formatukoa.

Endpoint-a Formatua
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Bidali lehen eskaera

Bidali user mezu bat shannon-3 modeloari Chat Completions endpoint-ean. Ordeztu YOUR_API_KEY zure gakoarekin.

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)
Eremua Mota Lehenetsia Deskribapena
model string Erantzuten duen modeloaren id-a. Id-ak Modeloak eta prezioak orrialdean zerrendatzen dira.
messages array Orain arteko elkarrizketa: role eta content dituzten objektuak. Azken user mezua prompt-a da. Beharrezkoa.
max_tokens integer 4096 Eskaeraren irteera-aurrekontua, 1etik 65,536ra. Eskaerak kopuru hau erreserbatzen du zure saldotik eta benetan erabilitakoagatik kobratzen da.
stream boolean false true balioak erantzuna zati-zati bidaltzen du idazten den heinean.

Eskaera-gorputza JSON da eta Content-Type: application/json goiburua behar du. Eremuen zerrenda osoa endpoint-orrialdean dago. Chat Completions

Erantzuna

stream gabeko deiak JSON objektu bakar bat itzultzen du erantzuna osatzen denean. Beheko testuak eta zenbakiak adibideak dira.

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
  }
}
Eremua Mota Deskribapena
id string chatcmpl- eta ondoren 32 karaktere hexadezimal.
object string Beti chat.completion.
created integer Erantzunaren unea Unix segundotan.
model string Erantzun duen modeloaren id argitaratua, alias bat edo beste idazkera bat bidali duzunean ere.
choices array Beti sarrera bakarra, index 0 duena.
choices[0].message.role string Beti assistant.
choices[0].message.content string | null Erantzuna. null izan daiteke erantzunak tool_calls dituenean.
choices[0].message.reasoning_content string | null Modeloaren arrazonamendua bere erantzunaren aurretik, edo null ezer ez dagoenean.
choices[0].message.tool_calls array Modeloak zuk deklaratutako tresnetako bati deitzen dionean bakarrik dago.
choices[0].finish_reason string stop erantzun baterako, tool_calls modeloak tresna bati deitzen dionean.
usage.prompt_tokens integer Modeloak erantzun honetarako irakurritako tokenak. shannon-2-* eta Shannon 3 familian bidali duzun testua baino gehiago izan daiteke.
usage.completion_tokens integer Modeloak idatzitako tokenak.
usage.total_tokens integer Guztizkoa. Shannon modelo baten kobrantza zenbaki honetatik kalkulatzen da.
  • usage-k token-kontaketak ditu, ez dirua. Deiak zure saldotik zer hartu duen eskaera bakoitzeko erakusten da Gakoak eta erabilera orrialdean; nola kalkulatzen den Mugak eta saldoa orrialdean dago. Mugak eta saldoa
  • Erantzun guztiek, errore batek eta stream batek ere, x-request-id goiburua dute. Zure eskaerak x-request-id goiburu bat badu, haren balioa itzultzen da; bestela balioa 12 karaktere hexadezimal da. Gorde zure erregistroetan: eskaera bakar hau izendatzen du.

Dei bera stream gisa

Ezarri stream true gisa erantzuna idazten den heinean irakurtzeko. Eskaeraren gainerako guztia berdin geratzen da.

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)

Streamaren frame bakoitza data: hasten den eta JSON objektu bat duen lerro bat da. Frame bat, hainbat lerrotan inprimatua:

Frame bat
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Frame-ak, ordenan delta finish_reason
Modeloak arrazoitzen duen bitartean. Zero frame edo gehiago. {"reasoning_content": "…"} null
Erantzuna, zati-zati. Zero frame edo gehiago. {"content": "…"} null
Azken JSON frame-a. usage ere badu; ez duzu eskatu behar. {} "stop"
Streamaren amaiera: data: [DONE] lerroa.
  • Erantzunak 200 egoera eta content-type: text/event-stream ditu. Frame bakoitza data: <json> lerro bat da, ondoren lerro huts bat duena.
  • : ping lerro bat iristen da 15 segundoz behin. Konexioa irekita mantentzen duen iruzkin bat da; SSE bezeroek saltatzen dute.
  • Stream-a ireki ondorengo hutsegite bat data: {"error": {…}} frame gisa iristen da. Egoerak 200 izaten jarraitzen du, beraz egiaztatu frame-ak.

Streaminga

Deiak huts egiten badu

Errore bat type eta message dituen error bat duen JSON objektu bat da. Hauek dira lehen dei batek maizen aurkitzen dituen erantzunak.

Egoera Mota Mezua Zer esan nahi duen
401 authentication_error Missing authentication Ez da gakorik iritsi APIra. Bidali Authorization: Bearer eta ondoren zure gakoa.
401 authentication_error Invalid API key Gakoa ez da kontu baten uneko gakoa. Kopiatu berriro Gakoak eta erabilera orrialdetik.
400 invalid_request_error unknown model: <id> model ez da argitaratutako id bat. Erabili Modeloak eta prezioak orrialdeko id bat.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Eremu batek JSON mota okerra du, edo messages falta da.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Eskaeraren irteera-aurrekontua ez da zure saldoan sartzen.

Errore‑kudeaketa

Nora joan ondoren

  • Modeloak eta prezioak — Aukeratu modelo bat: id-ak, testuinguru-leihoak eta prezioak.
  • Chat Completions — Deitu duzun endpoint-aren eskaera-eremu, erantzun-eremu eta stream-gertaera guztiak.
  • Streaminga — Stream baten frame-ak, keep-alive lerroak eta streamen barruko erroreak.
  • Funtzio-deiak — Utzi modeloari zure funtzioei deitzen.
  • Mugak eta saldoa — Eskaera batek zer erreserbatzen eta zenbat kostatzen duen, eta zenbat eskaera bidal ditzakezun.
  • API jolasgunea — Probatu eskaerak nabigatzailean zure gakoarekin.