Тез баштоо
Биринчи сурам жасаңыз: ачкычыңызды алыңыз, бир билдирүү жөнөтүп, жоопту окуңуз. API OpenAI жана Anthropic форматтарында сүйлөйт, ошондуктан колдонуп жүргөн SDK'ңыз негизги URL менен ачкычты өзгөрткөндөн кийин иштейт.
1. Ачкычыңызды алыңыз
Ар бир аккаунтта бир API ачкыч бар. Кириңиз, Keys & usage бетин ачып, аны көчүрүңүз. Ачкыч ар бир endpoint'те жана ар бир модельде иштейт. Ачкычтар жана колдонуу
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 текст чыгарат. Алар бир эле моделдерге жетет; кодуңуз буга чейин колдонгон форматтагысын тандаңыз.
| Эндпоинт | Формат |
|---|---|
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'лер Models & pricing бетинде тизмеленген. | |
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 | Модельдин жообунун алдындагы reasoning'и, же жок болсо 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 жүргүзүп жатканда. Нөл же андан көп фрейм. | {"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 эмес. Models & pricing бетиндеги 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 — Сурамдарды ачкычыңыз менен браузерде сынаңыз.