Жылдам бастау
Алғашқы сұрауды жасаңыз: кілтіңізді алыңыз, бір хабарлама жіберіңіз және жауапты оқыңыз. API OpenAI және Anthropic форматтарында сөйлеседі, сондықтан өзіңіз қолданатын SDK базалық URL мен кілтті ауыстырғаннан кейін жұмыс істейді.
1. Кілтіңізді алыңыз
Әр аккаунтта бір API кілті бар. Кіріңіз, Keys & usage бетін ашып, оны көшіріңіз. Кілт әр endpoint пен әр модельде жұмыс істейді. Keys & usage
2. Клиентіңізді API-ге бағыттаңыз
Барлық endpoint-тер бір базалық URL астында тұрады. OpenAI SDK оны соңында /v1 мен алады; Anthropic SDK оны онсыз алады, өйткені /v1/messages жолын өзі қосады.
| Клиент | Базалық URL |
|---|---|
| OpenAI SDK-лары және OpenAI үйлесімді клиенттер | https://api.shannon-ai.com/v1 |
| Anthropic SDK-лары | https://api.shannon-ai.com |
Мәтінді үш endpoint шығарады. Олар бір модельдерге жетеді; кодыңыз қазірдің өзінде қолданатын форматтағысын таңдаңыз.
| Endpoint | Формат |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/messages | Anthropic Messages |
POST /v1/responses | OpenAI Responses |
3. Алғашқы сұрауды жіберіңіз
Chat Completions endpoint-інде shannon-3 моделіне бір user хабарламасын жіберіңіз. YOUR_API_KEY орнына кілтіңізді қойыңыз.
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
}' | Өріс | Түрі | Әдепкі | Сипаттама |
|---|---|---|---|
model | string | Жауап беретін модельдің id-і. id-лер «Модельдер және бағалар» бетінде тізімделген. | |
messages | array | Осы уақытқа дейінгі сөйлесу: role және content бар нысандар. Соңғы user хабарламасы — промпт. Міндетті. | |
max_tokens | integer | 4096 | Сұраудың шығыс бюджеті, 1-ден 65,536-ға дейін. Сұрау осы соманы балансыңыздан резервтейді және нақты жұмсағаны үшін есептеледі. |
stream | boolean | false | true жауапты жазылып жатқанда бөлек-бөлек жібереді. |
Сұрау денесі — JSON және Content-Type: application/json тақырыбын қажет етеді. Өрістердің толық тізімі endpoint бетінде. Chat Completions
Жауап
stream жоқ шақыру жауап толық болғанда бір 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
}
} | Өріс | Түрі | Сипаттама |
|---|---|---|
id | string | chatcmpl- және одан кейін 32 оналтылық таңба. |
object | string | Әрқашан chat.completion. |
created | integer | Жауап уақыты, Unix секундтарымен. |
model | string | Жауап берген модельдің жарияланған id-і, бүркеншік ат немесе басқа жазылуды жіберсеңіз де. |
choices | array | Әрқашан бір жазба, index мәні 0. |
choices[0].message.role | string | Әрқашан assistant. |
choices[0].message.content | string | null | Жауап. Жауап tool_calls алып жүргенде ол null болуы мүмкін. |
choices[0].message.reasoning_content | string | null | Модельдің жауабының алдындағы пайымдауы, немесе ол болмаса null. |
choices[0].message.tool_calls | array | Тек модель жариялаған құралдардың бірін шақырғанда болады. |
choices[0].finish_reason | string | Жауап үшін stop, модель құралды шақырғанда tool_calls. |
usage.prompt_tokens | integer | Модель осы жауап үшін оқыған токендер. shannon-2-* және Shannon 3 отбасында бұл жіберген мәтіннен көп болуы мүмкін. |
usage.completion_tokens | integer | Модель жазған токендер. |
usage.total_tokens | integer | Жиыны. Shannon моделінің ақысы осы саннан есептеледі. |
-
usageақшаны емес, токен санын қамтиды. Шақыру балансыңыздан не алғаны Keys & usage ішінде сұрау бойынша көрсетіледі; оның қалай есептелетіні «Шектеулер және баланс» бетінде. Шектеулер және баланс - Әр жауапта, қате мен стримде де,
x-request-idтақырыбы бар. Сұрауыңызx-request-idтақырыбын алып жүрсе, оның мәні қайтады; әйтпесе мән 12 оналтылық таңба болады. Оны журналдарыңызда сақтаңыз: ол дәл осы бір сұрауды атайды.
Сол шақыру стрим ретінде
Жауапты жазылып жатқанда оқу үшін stream мәнін true етіп орнатыңыз. Сұраудың қалған бөлігі өзгеріссіз қалады.
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
}' Стримнің әр кадры — data: әрпінен басталатын және JSON нысанын қамтитын бір жол. Бір кадр, бірнеше жолға басылған:
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion.chunk",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"delta": {
"content": "Hello! "
},
"finish_reason": null
}
]
} | Кадрлар, ретімен | delta | finish_reason |
|---|---|---|
| Модель пайымдап жатқанда. Нөл немесе одан көп кадр. | {"reasoning_content": "…"} | null |
| Жауап бөлік-бөлігімен. Нөл немесе одан көп кадр. | {"content": "…"} | null |
Соңғы JSON кадры. Ол usage мәліметін де алып жүреді; оны сұрау қажет емес. | {} | "stop" |
Стримнің соңы: data: [DONE] жолы. |
- Жауаптың мәртебесі
200жәнеcontent-type: text/event-stream. Әр кадр —data: <json>жолы және одан кейін бос жол. : pingжолы әр 15 секунд сайын келеді. Бұл қосылымды ашық ұстайтын түсініктеме; SSE клиенттері оны өткізіп жібереді.- Стрим ашылғаннан кейінгі ақау
data: {"error": {…}}кадры ретінде келеді. Мәртебе200күйінде қалады, сондықтан кадрларды тексеріңіз.
Шақыру сәтсіз болса
Қате — type және message бар error өрісі бар JSON нысаны. Бұл — алғашқы шақыру ең жиі кездестіретін жауаптар.
| Мәртебе | Түрі | Хабарлама | Нені білдіреді |
|---|---|---|---|
401 | authentication_error | Missing authentication | API-ге ешбір кілт жетпеді. Authorization: Bearer және одан кейін кілтіңізді жіберіңіз. |
401 | authentication_error | Invalid API key | Кілт аккаунттың ағымдағы кілті емес. Оны Keys & usage бетінен қайта көшіріңіз. |
400 | invalid_request_error | unknown model: <id> | model жарияланған id емес. «Модельдер және бағалар» бетіндегі id-ді қолданыңыз. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type… | Өрістің JSON түрі қате, немесе messages жоқ. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | Сұраудың шығыс бюджеті балансыңызға сыймайды. |
Әрі қарай қайда баруға болады
- Модельдер және бағалар — Модельді таңдаңыз: id-лер, контекст терезелері және бағалар.
- Chat Completions — Шақырған endpoint-тің әр сұрау өрісі, жауап өрісі және стрим оқиғасы.
- Стриминг — Стрим кадрлары, keep-alive жолдары және стрим ішіндегі қателер.
- Функция шақыру — Модель функцияларыңызды шақырсын.
- Шектеулер және баланс — Сұрау нені резервтейді және қанша тұрады, және қанша сұрау жібере аласыз.
- API Playground — Сұрауларды браузерде кілтіңізбен байқап көріңіз.