Ātrais sākums
Veiciet pirmo pieprasījumu: iegūstiet atslēgu, nosūtiet vienu ziņojumu un izlasiet atbildi. API runā OpenAI un Anthropic formātos, tāpēc SDK, ko jau lietojat, darbojas pēc tam, kad nomaināt tā bāzes URL un atslēgu.
1. Iegūstiet atslēgu
Katram kontam ir viena API atslēga. Pierakstieties, atveriet Atslēgas un izmantošana un nokopējiet to. Atslēga darbojas katrā galapunktā un ar katru modeli. Atslēgas un izmantošana
2. Norādiet klientam API
Visi galapunkti atrodas zem viena bāzes URL. OpenAI SDK to pieņem ar /v1 beigās; Anthropic SDK pieņem bez tā, jo /v1/messages pievieno pats.
| Klients | Bāzes URL |
|---|---|
| OpenAI SDK un ar OpenAI savietojami klienti | https://api.shannon-ai.com/v1 |
| Anthropic SDK | https://api.shannon-ai.com |
Tekstu veido trīs galapunkti. Tie sasniedz tos pašus modeļus; izvēlieties to, kura formātu jūsu kods jau izmanto.
| Endpoints | Formāts |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/messages | Anthropic Messages |
POST /v1/responses | OpenAI Responses |
3. Nosūtiet pirmo pieprasījumu
Nosūtiet vienu user ziņojumu modelim shannon-3 galapunktā Chat Completions. Aizstājiet YOUR_API_KEY ar savu atslēgu.
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
}' | Lauks | Tips | Noklusējums | Apraksts |
|---|---|---|---|
model | string | Modeļa, kas atbild, id. Id ir uzskaitīti lapā Modeļi un cenas. | |
messages | array | Saruna līdz šim: objekti ar role un content. Pēdējais user ziņojums ir uzvedne. Obligāts. | |
max_tokens | integer | 4096 | Pieprasījuma izvades budžets, no 1 līdz 65,536. Pieprasījums rezervē šo summu no jūsu atlikuma un tiek rēķināts par to, ko patiešām izmantoja. |
stream | boolean | false | true sūta atbildi pa gabaliem, kamēr tā tiek rakstīta. |
Pieprasījuma pamatteksts ir JSON, un tam vajadzīga galvene Content-Type: application/json. Pilns lauku saraksts ir galapunkta lapā. Chat Completions
Atbilde
Izsaukums bez stream atgriež vienu JSON objektu, kad atbilde ir pilnīga. Tālāk redzamie teksti un skaitļi ir piemēri.
{
"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
}
} | Lauks | Tips | Apraksts |
|---|---|---|
id | string | chatcmpl-, kam seko 32 heksadecimālas rakstzīmes. |
object | string | Vienmēr chat.completion. |
created | integer | Atbildes laiks Unix sekundēs. |
model | string | Modeļa, kas atbildēja, publicētais id, arī tad, ja nosūtījāt aizstājvārdu vai citu pierakstu. |
choices | array | Vienmēr viens ieraksts ar index 0. |
choices[0].message.role | string | Vienmēr assistant. |
choices[0].message.content | string | null | Atbilde. Tā var būt null, ja atbilde nes tool_calls. |
choices[0].message.reasoning_content | string | null | Modeļa spriešana pirms atbildes vai null, ja tās nav. |
choices[0].message.tool_calls | array | Ir tikai tad, ja modelis izsauc vienu no jūsu deklarētajiem rīkiem. |
choices[0].finish_reason | string | stop atbildei, tool_calls, kad modelis izsauc rīku. |
usage.prompt_tokens | integer | Tokeni, ko modelis nolasīja šai atbildei. Modeļiem shannon-2-* un Shannon 3 saimei tas var būt vairāk nekā jūsu nosūtītais teksts. |
usage.completion_tokens | integer | Tokeni, ko modelis uzrakstīja. |
usage.total_tokens | integer | Kopsumma. Shannon modeļa maksa tiek aprēķināta no šī skaitļa. |
-
usagesatur tokenu skaitu, nevis naudu. Ko izsaukums paņēma no jūsu atlikuma, redzams katram pieprasījumam lapā Atslēgas un izmantošana; kā tas tiek aprēķināts, ir lapā Ierobežojumi un atlikums. Ierobežojumi un atlikums - Katrai atbildei, arī kļūdai un straumei, ir galvene
x-request-id. Ja jūsu pieprasījumam ir galvenex-request-id, tās vērtība atgriežas; citādi vērtība ir 12 heksadecimālas rakstzīmes. Glabājiet to savos žurnālos: tā nosauc tieši šo pieprasījumu.
Tas pats izsaukums kā straume
Iestatiet stream uz true, lai lasītu atbildi, kamēr tā tiek rakstīta. Viss pārējais pieprasījumā paliek nemainīts.
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
}' Katrs straumes kadrs ir viena rinda, kas sākas ar data: un satur JSON objektu. Viens kadrs, izdrukāts vairākās rindās:
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion.chunk",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"delta": {
"content": "Hello! "
},
"finish_reason": null
}
]
} | Kadri secībā | delta | finish_reason |
|---|---|---|
| Kamēr modelis spriež. Nulle vai vairāk kadru. | {"reasoning_content": "…"} | null |
| Atbilde pa gabaliem. Nulle vai vairāk kadru. | {"content": "…"} | null |
Pēdējais JSON kadrs. Tas nes arī usage; tā pieprasīšana nav vajadzīga. | {} | "stop" |
Straumes beigas: rinda data: [DONE]. |
- Atbildei ir statuss
200uncontent-type: text/event-stream. Katrs kadrs ir rindadata: <json>, kam seko tukša rinda. - Rinda
: pingierodas ik pēc 15 sekundēm. Tas ir komentārs, kas patur savienojumu atvērtu; SSE klienti to izlaiž. - Kļūme pēc straumes atvēršanas ierodas kā kadrs
data: {"error": {…}}. Statuss paliek200, tāpēc pārbaudiet kadrus.
Ja izsaukums neizdodas
Kļūda ir JSON objekts ar error, kas satur type un message. Šīs ir atbildes, ar kurām pirmais izsaukums sastopas visbiežāk.
| Statuss | Veids | Ziņojums | Ko tas nozīmē |
|---|---|---|---|
401 | authentication_error | Missing authentication | Neviena atslēga API nesasniedza. Sūtiet Authorization: Bearer, kam seko jūsu atslēga. |
401 | authentication_error | Invalid API key | Atslēga nav konta pašreizējā atslēga. Nokopējiet to vēlreiz no lapas Atslēgas un izmantošana. |
400 | invalid_request_error | unknown model: <id> | model nav publicēts id. Izmantojiet id no lapas Modeļi un cenas. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type… | Laukam ir nepareizs JSON tips, vai trūkst messages. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | Pieprasījuma izvades budžets neietilpst jūsu atlikumā. |
Kur iet tālāk
- Modeļi un cenas — Izvēlieties modeli: id, konteksta logi un cenas.
- Chat Completions — Katrs tā galapunkta pieprasījuma lauks, atbildes lauks un straumes notikums, ko izsaucāt.
- Straumēšana — Straumes kadri, keep-alive rindas un kļūdas straumes iekšienē.
- Funkciju izsaukšana — Ļaujiet modelim izsaukt jūsu funkcijas.
- Ierobežojumi un atlikums — Ko pieprasījums rezervē un cik maksā un cik pieprasījumu drīkstat sūtīt.
- API spēļlaukums — Izmēģiniet pieprasījumus pārlūkā ar savu atslēgu.