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) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const response = await client.chat.completions.create({
model: 'shannon-3',
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
],
max_tokens: 1024
});
console.log(response.choices[0].message.content); package main
import (
"context"
"fmt"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("YOUR_API_KEY")
config.BaseURL = "https://api.shannon-ai.com/v1"
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "shannon-3",
Messages: []openai.ChatCompletionMessage{
{Role: "user", Content: "Hello, Shannon!"},
},
MaxTokens: 1024,
},
)
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
} curl -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
],
"max_tokens": 1024
}' | 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.
{
"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-idgoiburua dute. Zure eskaerakx-request-idgoiburu 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) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const stream = await client.chat.completions.create({
model: 'shannon-3',
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
],
max_tokens: 1024,
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
} curl -N -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
],
"max_tokens": 1024,
"stream": true
}' Streamaren frame bakoitza data: hasten den eta JSON objektu bat duen lerro bat da. Frame bat, hainbat lerrotan inprimatua:
{
"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
200egoera etacontent-type: text/event-streamditu. Frame bakoitzadata: <json>lerro bat da, ondoren lerro huts bat duena. : pinglerro 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. Egoerak200izaten jarraitzen du, beraz egiaztatu frame-ak.
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. |
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.