Արագ մեկնարկ
Կատարեք առաջին հարցումը՝ ստացեք բանալին, ուղարկեք մեկ հաղորդագրություն և կարդացեք պատասխանը։ API-ն խոսում է OpenAI և Anthropic ձևաչափերով, ուստի ձեր արդեն օգտագործվող SDK-ն աշխատում է base URL-ը և բանալին փոխելուց հետո։
1. Ստացեք ձեր բանալին
Յուրաքանչյուր հաշիվ ունի մեկ API բանալի։ Մուտք գործեք, բացեք «Բանալիներ և օգտագործում» և պատճենեք այն։ Բանալին աշխատում է յուրաքանչյուր endpoint-ում և յուրաքանչյուր մոդելի վրա։ Բանալիներ և օգտագործում
2. Ուղղեք ձեր կլիենտը դեպի API
Բոլոր endpoint-ները գտնվում են մեկ base URL-ի տակ։ OpenAI SDK-ն այն վերցնում է վերջում /v1-ով, Anthropic SDK-ն՝ առանց դրա, որովհետև ինքն է ավելացնում /v1/messages։
| Կլիենտ | Base 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. Ուղարկեք առաջին հարցումը
Ուղարկեք մեկ user հաղորդագրություն shannon-3-ին Chat Completions endpoint-ում։ 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 հաղորդագրությունը prompt-ն է։ Պարտադիր է։ | |
max_tokens | integer | 4096 | Հարցման ելքի բյուջեն՝ 1-ից 65,536։ Հարցումը վերապահում է այս քանակը ձեր մնացորդից և գանձվում է իրականում օգտագործածի համար։ |
stream | boolean | false | true-ը պատասխանն ուղարկում է կտոր առ կտոր՝ գրվելու ընթացքում։ |
Հարցման մարմինը JSON է և պահանջում է Content-Type: application/json header։ Դաշտերի լրիվ ցանկը 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-ն՝ նաև այն դեպքում, երբ ուղարկել եք alias կամ այլ գրելաձև։ |
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-ը պարունակում է թոքենների քանակներ, ոչ թե գումար։ Այն, ինչ կանչը վերցրել է ձեր մնացորդից, ցույց է տրվում յուրաքանչյուր հարցման համար «Բանալիներ և օգտագործում» էջում. ինչպես է հաշվարկվում՝ «Սահմանաչափեր և մնացորդ» էջում։ Սահմանաչափեր և մնացորդ - Յուրաքանչյուր պատասխան, նաև սխալն ու հոսքը, ունի
x-request-idheader։ Եթե ձեր հարցումը կրում էx-request-idheader, դրա արժեքը վերադառնում է. այլապես արժեքը 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, ուստի ստուգեք շրջանակները։
Եթե կանչը ձախողվի
Սխալը JSON օբյեկտ է error-ով, որը պարունակում է type և message։ Սրանք այն պատասխաններն են, որոնց առաջին կանչը ամենահաճախ հանդիպում է։
| Կարգավիճակ | Տեսակ | Հաղորդագրություն | Ինչ է նշանակում |
|---|---|---|---|
401 | authentication_error | Missing authentication | Ոչ մի բանալի չի հասել API-ին։ Ուղարկեք Authorization: Bearer՝ ձեր բանալիով։ |
401 | authentication_error | Invalid API key | Բանալին հաշվի ընթացիկ բանալին չէ։ Պատճենեք այն նորից «Բանալիներ և օգտագործում» էջից։ |
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 — Փորձեք հարցումները բրաուզերում՝ ձեր բանալիով։