Tez boshlash
Birinchi so'rovni yuboring: kalitingizni oling, bitta xabar yuboring va javobni o'qing. API OpenAI va Anthropic formatlarida gaplashadi, shuning uchun siz allaqachon ishlatadigan SDK base URL va kalit o'zgartirilgach ishlaydi.
1. Kalitingizni oling
Har bir hisobda bitta API kalit bor. Tizimga kiring, Keys & usage'ni oching va uni nusxalang. Kalit har bir endpoint va har bir modelda ishlaydi. Keys & usage
2. Mijozingizni API'ga yo'naltiring
Barcha endpointlar bitta base URL ostida. OpenAI SDK uni oxirida /v1 bilan qabul qiladi; Anthropic SDK usiz qabul qiladi, chunki /v1/messagesni o'zi qo'shadi.
| Mijoz | Base URL |
|---|---|
| OpenAI SDK'lar va OpenAI bilan mos mijozlar | https://api.shannon-ai.com/v1 |
| Anthropic SDK'lar | https://api.shannon-ai.com |
Uchta endpoint matn hosil qiladi. Ular bir xil modellarga yetadi; kodingiz allaqachon ishlatadigan formatdagisini tanlang.
| Endpoint | Format |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/messages | Anthropic Messages |
POST /v1/responses | OpenAI Responses |
3. Birinchi so'rovni yuboring
Chat Completions endpointidagi shannon-3ga bitta user xabari yuboring. YOUR_API_KEYni kalitingiz bilan almashtiring.
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
}' | Maydon | Tur | Standart | Tavsif |
|---|---|---|---|
model | string | Javob beradigan modelning id'si. Id'lar Modellar va narxlar sahifasida sanab o'tilgan. | |
messages | array | Hozirgacha bo'lgan suhbat: role va contentli obyektlar. Oxirgi user xabari — prompt. Majburiy. | |
max_tokens | integer | 4096 | So'rovning chiqish byudjeti, 1 dan 65,536 gacha. So'rov bu miqdorni balansingizdan ajratib qo'yadi va haqiqatda ishlatgani uchun hisoblanadi. |
stream | boolean | false | true javobni yozilayotgan paytda bo'lak-bo'lak yuboradi. |
So'rov tanasi JSON va Content-Type: application/json sarlavhasini talab qiladi. Maydonlarning to'liq ro'yxati endpoint sahifasida. Chat Completions
Javob
streamsiz chaqiruv javob to'liq bo'lganda bitta JSON obyektini qaytaradi. Quyidagi matnlar va sonlar misollar.
{
"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
}
} | Maydon | Tur | Tavsif |
|---|---|---|
id | string | chatcmpl- va undan keyin 32 ta o'n oltilik belgi. |
object | string | Doim chat.completion. |
created | integer | Javob vaqti, Unix soniyalarida. |
model | string | Javob bergan modelning e'lon qilingan id'si, alias yoki boshqa yozuv yuborgan bo'lsangiz ham. |
choices | array | Doim bitta yozuv, index 0 bilan. |
choices[0].message.role | string | Doim assistant. |
choices[0].message.content | string | null | Javob. Javob tool_callsni olib kelganda u null bo'lishi mumkin. |
choices[0].message.reasoning_content | string | null | Modelning javobdan oldingi mulohazasi, yoki u bo'lmasa null. |
choices[0].message.tool_calls | array | Faqat model siz e'lon qilgan tool'lardan birini chaqirganda bo'ladi. |
choices[0].finish_reason | string | Javob uchun stop, model tool chaqirganda tool_calls. |
usage.prompt_tokens | integer | Model shu javob uchun o'qigan tokenlar. shannon-2-* va Shannon 3 oilasida bu siz yuborgan matndan ko'p bo'lishi mumkin. |
usage.completion_tokens | integer | Model yozgan tokenlar. |
usage.total_tokens | integer | Jami. Shannon modeli hisobi shu sondan hisoblanadi. |
-
usagepul emas, token sonlarini o'z ichiga oladi. Chaqiruv balansingizdan nima olgani har bir so'rov bo'yicha Keys & usage'da ko'rsatiladi; qanday hisoblanishi Limitlar va balans sahifasida. Limitlar va balans - Har bir javob, xato va oqim ham,
x-request-idsarlavhasiga ega. So'rovingizdax-request-idsarlavhasi bo'lsa, uning qiymati qaytadi; bo'lmasa qiymat 12 ta o'n oltilik belgi. Uni jurnallaringizda saqlang: u aynan shu bitta so'rovni nomlaydi.
Xuddi shu chaqiruv oqim sifatida
Javobni yozilayotgan paytda o'qish uchun streamni true qiling. So'rovdagi qolgan hamma narsa o'zgarmaydi.
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
}' Oqimning har bir freymi data: bilan boshlanadigan va JSON obyektini o'z ichiga olgan bitta satr. Bir nechta satrda chop etilgan bitta freym:
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion.chunk",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"delta": {
"content": "Hello! "
},
"finish_reason": null
}
]
} | Freymlar, tartibda | delta | finish_reason |
|---|---|---|
| Model mulohaza qilayotgan paytda. Nol yoki undan ko'p freym. | {"reasoning_content": "…"} | null |
| Javob, bo'lak-bo'lak. Nol yoki undan ko'p freym. | {"content": "…"} | null |
Oxirgi JSON freymi. U usageni ham olib keladi; buni so'rashingiz shart emas. | {} | "stop" |
Oqim oxiri: data: [DONE] satri. |
- Javob
200holati vacontent-type: text/event-streambilan keladi. Har bir freymdata: <json>satri va undan keyingi bo'sh satrdan iborat. - Har 15 soniyada
: pingsatri keladi. Bu ulanishni ochiq ushlab turadigan izoh; SSE mijozlari uni o'tkazib yuboradi. - Oqim ochilgandan keyingi nosozlik
data: {"error": {…}}freymi sifatida keladi. Holat200bo'lib qoladi, shuning uchun freymlarni tekshiring.
Chaqiruv muvaffaqiyatsiz bo'lsa
Xato — type va messageni o'z ichiga olgan errorli JSON obyekti. Birinchi chaqiruv eng ko'p duch keladigan javoblar shular.
| Holat | Tur | Xabar | Nimani anglatadi |
|---|---|---|---|
401 | authentication_error | Missing authentication | API'ga kalit yetib bormagan. Authorization: Bearer va undan keyin kalitingizni yuboring. |
401 | authentication_error | Invalid API key | Kalit hisobning joriy kaliti emas. Uni Keys & usage'dan qayta nusxalang. |
400 | invalid_request_error | unknown model: <id> | model e'lon qilingan id emas. Modellar va narxlar sahifasidagi id'dan foydalaning. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type… | Maydon noto'g'ri JSON turida yoki messages yo'q. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | So'rovning chiqish byudjeti balansingizga sig'maydi. |
Keyin qayerga borish kerak
- Modellar va narxlar — Model tanlang: id'lar, kontekst oynalari va narxlar.
- Chat Completions — Chaqirgan endpointingizning har bir so'rov maydoni, javob maydoni va oqim hodisasi.
- Oqim — Oqim freymlari, keep-alive satrlari va oqim ichidagi xatolar.
- Funksiya chaqirish — Modelga funksiyalaringizni chaqirtiring.
- Limitlar va balans — So'rov nimani ajratib qo'yishi va qancha turishi hamda qancha so'rov yuborishingiz mumkinligi.
- API Playground — So'rovlarni brauzerda kalitingiz bilan sinab ko'ring.