Fanombohana haingana
Manaova fangatahana voalohany: raiso ny key-nao, alefaso hafatra iray ary vakio ny valiny. Ny API dia miteny amin'ny endrika OpenAI sy Anthropic, ka mandeha ny SDK efa ampiasainao aorian'ny fanovana ny base URL sy ny key-ny.
1. Raiso ny key-nao
Ny kaonty rehetra dia manana API key iray. Midira, sokafy ny Keys & usage ary adikao izany. Mandeha amin'ny endpoint sy model rehetra ny key. Keys & usage
2. Atondrony any amin'ny API ny client-nao
Ny endpoint rehetra dia ao ambanin'ny base URL iray. Ny SDK OpenAI dia maka azy miaraka amin'ny /v1 any amin'ny farany; ny SDK Anthropic kosa maka azy tsy misy, satria izy ihany no manampy ny /v1/messages.
| Client | Base URL |
|---|---|
| SDK OpenAI sy client mifanaraka amin'ny OpenAI | https://api.shannon-ai.com/v1 |
| SDK Anthropic | https://api.shannon-ai.com |
Endpoint telo no mamokatra soratra. Mahazo model mitovy izy ireo; fidio izay endrika efa ampiasain'ny kaody-nao.
| Endpoint | Endrika |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/messages | Anthropic Messages |
POST /v1/responses | OpenAI Responses |
3. Mandefasa fangatahana voalohany
Alefaso hafatra user iray any amin'ny shannon-3 amin'ny endpoint Chat Completions. Soloy ny key-nao ny 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
}' | Saha | Karazana | Default | Famaritana |
|---|---|---|---|
model | string | Ny id an'ny model mamaly. Voatanisa ao amin'ny Models & pricing ny id. | |
messages | array | Ny resaka hatramin'izao: object misy role sy content. Ny hafatra user farany no prompt. Ilaina. | |
max_tokens | integer | 4096 | Ny budget output an'ny fangatahana, manomboka amin'ny 1 hatramin'ny 65,536. Ny fangatahana dia mitahiry io habetsaka io avy amin'ny balance-nao ary vidiana araka izay nampiasainy marina. |
stream | boolean | false | Ny true dia mandefa ny valiny ampahany isan-tsombiny rehefa soratana. |
Ny body ny fangatahana dia JSON ary mila ny header Content-Type: application/json. Ny lisitra feno amin'ny saha dia ao amin'ny pejin'ny endpoint. Chat Completions
Ny valiny
Ny antso tsy misy stream dia mamerina object JSON iray rehefa vita ny valiny. Ohatra ny soratra sy isa etsy ambany.
{
"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
}
} | Saha | Karazana | Famaritana |
|---|---|---|
id | string | chatcmpl- arahin'ny tarehintsoratra hexadecimal 32. |
object | string | Foana chat.completion. |
created | integer | Ny fotoanan'ny valiny amin'ny segondra Unix. |
model | string | Ny id navoaka an'ny model namaly, na dia alias na fanoratana hafa aza no nalefanao. |
choices | array | Foana iray ny entry, miaraka amin'ny index 0. |
choices[0].message.role | string | Foana assistant. |
choices[0].message.content | string | null | Ny valiny. Mety ho null rehefa mitondra tool_calls ny valiny. |
choices[0].message.reasoning_content | string | null | Ny reasoning an'ny model alohan'ny valiny, na null raha tsy misy. |
choices[0].message.tool_calls | array | Misy rehefa miantso tool iray amin'ireo nambaranao ny model ihany. |
choices[0].finish_reason | string | stop ho an'ny valiny, tool_calls rehefa miantso tool ny model. |
usage.prompt_tokens | integer | Ny token novakin'ny model ho an'io valiny io. Amin'ny shannon-2-* sy ny fianakavian'i Shannon 3 dia mety ho be kokoa noho ny soratra nalefanao. |
usage.completion_tokens | integer | Ny token nosoratan'ny model. |
usage.total_tokens | integer | Ny totaly. Ny vidin'ny model Shannon dia kajina avy amin'io isa io. |
- Ny
usagedia misy isa token, fa tsy vola. Izay nalain'ny antso tamin'ny balance-nao dia aseho isaky ny fangatahana ao amin'ny Keys & usage; ny fomba fikajiana dia ao amin'ny Fetra sy balance. Fetra sy balance - Ny valiny rehetra, anisan'izany ny hadisoana sy ny stream, dia manana header
x-request-id. Raha mitondra headerx-request-idny fangatahana-nao dia miverina ny sandany; raha tsy izany dia tarehintsoratra hexadecimal 12 ny sanda. Tehirizo ao amin'ny log-nao izany: manonona ity fangatahana tokana ity.
Ny antso mitovy ho stream
Apetraho ho true ny stream hamakiana ny valiny rehefa soratana. Ny sisa rehetra ao amin'ny fangatahana dia tsy miova.
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
}' Ny frame tsirairay ao amin'ny stream dia andalana iray manomboka amin'ny data: ary misy object JSON. Frame iray, voasoratra amin'ny andalana maromaro:
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion.chunk",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"delta": {
"content": "Hello! "
},
"finish_reason": null
}
]
} | Frame, araka ny filaharana | delta | finish_reason |
|---|---|---|
| Raha mbola manao reasoning ny model. Frame aotra na maromaro. | {"reasoning_content": "…"} | null |
| Ny valiny, ampahany isan-tsombiny. Frame aotra na maromaro. | {"content": "…"} | null |
Ny frame JSON farany. Mitondra usage koa izy; tsy mila angatahana. | {} | "stop" |
Ny fiafaran'ny stream: ny andalana data: [DONE]. |
- Ny valiny dia manana status
200sycontent-type: text/event-stream. Ny frame tsirairay dia andalanadata: <json>arahin'ny andalana foana. - Ny andalana
: pingdia tonga isaky ny 15 segondra. Fanamarihana izany izay mitazona misokatra ny fifandraisana; tsy raharahain'ny client SSE. - Ny tsy fahombiazana aorian'ny fisokafan'ny stream dia tonga ho frame
data: {"error": {…}}. Mijanona200ny status, ka hamarino ny frame.
Raha tsy mahomby ny antso
Ny hadisoana dia object JSON misy error mitazona type sy message. Ireto no valiny hita matetika amin'ny antso voalohany.
| Status | Karazana | Hafatra | Izay dikany |
|---|---|---|---|
401 | authentication_error | Missing authentication | Tsy tonga tany amin'ny API ny key. Alefaso ny Authorization: Bearer arahin'ny key-nao. |
401 | authentication_error | Invalid API key | Tsy key ankehitriny an'ny kaonty ny key. Adikao indray avy ao amin'ny Keys & usage. |
400 | invalid_request_error | unknown model: <id> | Tsy id navoaka ny model. Ampiasao id avy ao amin'ny Models & pricing. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type… | Diso ny karazana JSON an'ny saha iray, na tsy misy ny messages. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | Tsy mifanaraka amin'ny balance-nao ny budget output an'ny fangatahana. |
Ho aiza avy eo
- Model & vidiny — Misafidiana model: id, context window ary vidiny.
- Chat Completions — Ny saha fangatahana rehetra, saha valiny ary stream event an'ny endpoint nantsoinao.
- Fandefasana mivantana — Ny frame an'ny stream, andalana keep-alive ary hadisoana ao anaty stream.
- Antso fiasa — Avelao hiantso ny function-nao ny model.
- Fetra sy balance — Izay itahirizan'ny fangatahana sy ny vidiny, ary firy ny fangatahana azonao alefa.
- API Playground — Andramo ao amin'ny browser miaraka amin'ny key-nao ny fangatahana.