Isiqalo esisheshayo
Yenza isicelo sokuqala: thola i-key yakho, thumela umlayezo owodwa bese ufunda impendulo. I-API ikhuluma izimo ze-OpenAI ne-Anthropic, ngakho i-SDK oyisebenzisa kakade isebenza ngemuva kokushintsha i-base URL ne-key yayo.
1. Thola i-key yakho
I-akhawunti ngayinye inayo i-API key eyodwa. Ngena, vula i-Keys & usage bese uyikopisha. I-key isebenza kuwo wonke ama-endpoint nawo wonke ama-model. Ama-key nokusetshenziswa
2. Khomba i-client yakho ku-API
Wonke ama-endpoint angaphansi kwe-base URL eyodwa. I-SDK ye-OpenAI iyamukela nge-/v1 ekugcineni; i-SDK ye-Anthropic iyamukela ngaphandle kwayo, ngoba izengeza yona i-/v1/messages.
| I-client | I-base URL |
|---|---|
| Ama-SDK e-OpenAI nama-client ahambisana ne-OpenAI | https://api.shannon-ai.com/v1 |
| Ama-SDK e-Anthropic | https://api.shannon-ai.com |
Ama-endpoint amathathu akhiqiza umbhalo. Afinyelela kuma-model afanayo; khetha lowo isimo sawo ikhodi yakho esisebenzisa kakade.
| I-endpoint | Isimo |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/messages | Anthropic Messages |
POST /v1/responses | OpenAI Responses |
3. Thumela isicelo sokuqala
Thumela umlayezo owodwa we-user ku-shannon-3 ku-endpoint ye-Chat Completions. Shintsha i-YOUR_API_KEY nge-key yakho.
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
}' | I-field | Uhlobo | Okuzenzakalelayo | Incazelo |
|---|---|---|---|
model | string | I-id ye-model ephendulayo. Ama-id abhalwe ku-Models & pricing. | |
messages | array | Ingxoxo kuze kube manje: ama-object ane-role ne-content. Umlayezo wokugcina we-user yi-prompt. Iyadingeka. | |
max_tokens | integer | 4096 | Isabelomali sokuphumayo sesicelo, kusuka ku-1 kuya ku-65,536. Isicelo sigcina leli nani ku-balance yakho futhi sikhokhiswa lokho esikusebenzise ngempela. |
stream | boolean | false | I-true ithumela impendulo ucezu ngocezu ngenkathi ibhalwa. |
Umzimba wesicelo yi-JSON futhi udinga i-header ethi Content-Type: application/json. Uhlu olugcwele lwama-field lusekhasini le-endpoint. Chat Completions
Impendulo
Isicelo esingenayo i-stream lubuyisa i-JSON object eyodwa lapho impendulo iphelele. Imibhalo nezinombolo ezingezansi yizibonelo.
{
"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
}
} | I-field | Uhlobo | Incazelo |
|---|---|---|
id | string | chatcmpl- elandelwa yizinhlamvu ze-hexadecimal ezingu-32. |
object | string | Njalo chat.completion. |
created | integer | Isikhathi sempendulo ngamasekhondi e-Unix. |
model | string | I-id eshicilelwe ye-model ephendulile, nalapho uthumele i-alias noma ukubhala okunye. |
choices | array | Njalo into eyodwa, ene-index 0. |
choices[0].message.role | string | Njalo assistant. |
choices[0].message.content | string | null | Impendulo. Ingaba null lapho impendulo iphethe i-tool_calls. |
choices[0].message.reasoning_content | string | null | Ukucabanga kwe-model ngaphambi kwempendulo yayo, noma null uma kungekho. |
choices[0].message.tool_calls | array | Ikhona kuphela lapho i-model ibiza elinye lamathuluzi owachazile. |
choices[0].finish_reason | string | stop empendulweni, tool_calls lapho i-model ibiza ithuluzi. |
usage.prompt_tokens | integer | Ama-token i-model eyawafundile kule mpendulo. Ku-shannon-2-* nomndeni we-Shannon 3 lokhu kungaba ngaphezu kombhalo owuthumele. |
usage.completion_tokens | integer | Ama-token i-model eyawabhala. |
usage.total_tokens | integer | Isamba. Inani lokukhokha le-model ye-Shannon libalwa kulesi sibalo. |
- I-
usageiphethe izibalo zama-token, hhayi imali. Lokho ucingo oluthathe ku-balance yakho kukhonjiswa ngesicelo ngasinye ku-Keys & usage; ukuthi kubalwa kanjani kusekhasini le-Limits and balance. Imikhawulo ne-balance - Yonke impendulo, kuhlanganise nephutha ne-stream, inayo i-header ethi
x-request-id. Uma isicelo sakho siphethe i-header ethix-request-id, inani layo liyabuya; ngaphandle kwalokho inani lizinhlamvu ze-hexadecimal ezingu-12. Ligcine kumalogi akho: lithi lesi sicelo esisodwa.
Isicelo esifanayo njenge-stream
Setha i-stream ibe true ukuze ufunde impendulo ngenkathi ibhalwa. Konke okunye esicelweni kuyahlala kunjalo.
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
}' I-frame ngayinye ye-stream ngumugqa owodwa oqala ngo-data: futhi uphethe i-JSON object. I-frame eyodwa, ephrintwe emigqeni eminingi:
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion.chunk",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"delta": {
"content": "Hello! "
},
"finish_reason": null
}
]
} | Ama-frame, ngokulandelana | delta | finish_reason |
|---|---|---|
| Ngenkathi i-model icabanga. Ama-frame angu-zero noma ngaphezulu. | {"reasoning_content": "…"} | null |
| Impendulo, ucezu ngocezu. Ama-frame angu-zero noma ngaphezulu. | {"content": "…"} | null |
I-frame yokugcina ye-JSON. Iphinde iphathe i-usage; akudingeki uyicele. | {} | "stop" |
Ukuphela kwe-stream: umugqa othi data: [DONE]. |
- Impendulo inesimo
200ne-content-type: text/event-stream. I-frame ngayinye ngumugqa othidata: <json>ulandelwa umugqa ongenalutho. - Umugqa othi
: pingufika njalo ngamasekhondi angu-15. Yinoma egcina uxhumano luvulekile; ama-SSE client ayiweqa. - Ukwehluleka ngemuva kokuba i-stream ivuliwe kufika njenge-frame
data: {"error": {…}}. Isimo sihlala siyi-200, ngakho hlola ama-frame.
Uma isicelo sehluleka
Iphutha yi-JSON object ene-error ephethe type ne-message. Lezi yizimpendulo ezivame ukuhlangatshezwana nazo ngesicelo sokuqala.
| Isimo | Uhlobo | Umlayezo | Okushoyo |
|---|---|---|---|
401 | authentication_error | Missing authentication | Akukho key efinyelele ku-API. Thumela Authorization: Bearer elandelwa yi-key yakho. |
401 | authentication_error | Invalid API key | I-key akuyona i-key yamanje ye-akhawunti. Yikopishe futhi ku-Keys & usage. |
400 | invalid_request_error | unknown model: <id> | I-model akuyona i-id eshicilelwe. Sebenzisa i-id evela ku-Models & pricing. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type… | I-field inohlobo lwe-JSON olungalungile, noma i-messages ayikho. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | Isabelomali sokuphumayo sesicelo asifaneleki ku-balance yakho. |
Kuyaphi okulandelayo
- Ama-model namanani — Khetha i-model: ama-id, ama-context window namanani.
- Chat Completions — Wonke ama-field esicelo, ama-field empendulo nama-stream event e-endpoint oyibizile.
- Ukusakaza — Ama-frame e-stream, imigqa ye-keep-alive namaphutha ngaphakathi kwe-stream.
- Ukubiza umsebenzi — Vumela i-model ibize imisebenzi yakho.
- Imikhawulo ne-balance — Lokho isicelo esikugcinayo nokubiza kwaso, nokuthi zingaki izicelo ongazithumela.
- I-API Playground — Zama izicelo ku-browser nge-key yakho.