Autentifikavimas
Kiekviena užklausa antraštėje turi jūsų API raktą. Vienas paskyros raktas veikia su kiekvienu galiniu tašku ir kiekvienu modeliu, naudojant bet kurią iš dviejų antraštės formų.
Antraštė · OpenAI SDK
Authorization: Bearer YOUR_API_KEY Antraštė · Anthropic SDK
x-api-key: YOUR_API_KEY Priimamos antraštės
Abi antraštės skaitomos kiekviename /v1 galiniame taške, kad ir kokiu formatu jis kalbėtų. Siųskite vieną iš jų.
| Antraštė | Aprašymas |
|---|---|
Authorization: Bearer <key> | Tikrinama pirmiausia. Bearer rašykite didžiąja B ir su vienu tarpu prieš raktą. OpenAI SDK siunčia šią antraštę. |
x-api-key: <key> | Skaitoma, kai užklausoje nėra Authorization: Bearer antraštės. Anthropic SDK siunčia šią antraštę. |
Naudodami OpenAI SDK, nustatykite raktą ir bazinį URL; SDK siunčia Authorization: Bearer.
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!"}
]
)
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!' }
]
});
console.log(response.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!"}
]
}' Naudodami Anthropic SDK, nustatykite raktą ir bazinį URL be /v1; SDK siunčia x-api-key.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com"
)
message = client.messages.create(
model="shannon-3",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Shannon!"}
]
)
print("".join(block.text for block in message.content if block.type == "text")) import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com'
});
const message = await client.messages.create({
model: 'shannon-3',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
]
});
console.log(message.content.filter((block) => block.type === 'text').map((block) => block.text).join('')); curl -X POST "https://api.shannon-ai.com/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
]
}' Kuriems galiniams taškams reikia rakto
| Galutinis taškas | Raktas |
|---|---|
POST /v1/chat/completions | Privalomas |
POST /v1/messages | Privalomas |
POST /v1/responses | Privalomas |
POST /v1/tokenize | Privalomas |
POST /v1/messages/count_tokens | Privalomas |
GET /v1/models | Nereikia |
Jūsų raktas
- Raktas yra
sk-ir 43 simboliai išA–Z,a–z,0–9,-ir_: iš viso 46 simboliai. - Kiekviena paskyra turi lygiai vieną raktą. Jis sukuriamas pirmą kartą atidarius Raktai ir naudojimas.
- Raktas suteikia visišką prieigą prie API jūsų paskyrai: visus galinius taškus, visus modelius ir visą balansą.
- Raktas neturi galiojimo pabaigos datos. Jis veikia, kol jį pakeisite ar atšauksite.
Keitimas ir atšaukimas
Raktą keičiate ir atšaukiate puslapyje Raktai ir naudojimas. Raktai ir naudojimas
| Veiksmas | Kas nutinka |
|---|---|
| Pakeisti | Išduodamas naujas raktas, o senasis nustoja veikti. Naujas raktas veikia iškart. |
| Atšaukti | Raktas nustoja veikti ir naujas neišduodamas. Pakeiskite raktą, kad vėl turėtumėte veikiantį. |
- Abu veiksmai įsigalioja iškart: kita užklausa su senuoju raktu bus atmesta su
401. Laikykite 60 sekundžių viršutine riba, kol senasis raktas bus atmetamas visur. - Visi paskyros klientai naudoja tą patį raktą, todėl pakeitimas paliečia juos visus. Naują raktą įrašykite į savo klientus iškart po pakeitimo.
- Balansas, naudojimas ir apsauga nuo užplūdimo priklauso paskyrai, o ne raktui. Naujas raktas tęsia su tuo pačiu balansu ir tuo pačiu dabartinės minutės užklausų skaičiumi.
Klaidos
Kiekviena autentifikavimo klaida turi būseną 401 ir tipą authentication_error. Atvejus skiria pranešimas.
| Būsena | Tipas | Pranešimas | Kada |
|---|---|---|---|
401 | authentication_error | Missing authentication | Užklausoje nėra nei Authorization: Bearer antraštės, nei x-api-key antraštės, prasidedančios sk-. Tai taip pat atsakymas į bearer mažosiomis raidėmis ir į Authorization reikšmę be Bearer. |
401 | authentication_error | Invalid API key | Raktas nėra dabartinis paskyros raktas: jis įvestas su klaida, buvo atšauktas arba pakeistas. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - Visuose keliuose, išskyrus
/v1/messages,errorobjekte taip pat yracode: "invalid_api_key", net jei rakto nėra, irparam: null. - Raktas tikrinamas prieš skaitant turinį. Užklausa be galiojančio rakto gauna
401, net jei jos turinys neteisingas ar per didelis. Authorization: Bearerreikšmė, kuri neprasidedask-, nelaikoma API raktu. Ji gauna401su pranešimu, kad tokenas neteisingas arba nebegalioja.
Naršyklės ir CORS
- API atsako į naršyklių kryžminės kilmės užklausas tik fiksuotam kilmių sąrašui. Kitos kilmės puslapio JavaScript negali skaityti
/v1atsakymų. - Kreipkitės į API iš savo serverio, o puslapis tegul kreipiasi į jūsų serverį. Taip raktas ir nepateks į puslapio šaltinį.
- Serverio pusės kodo ir komandinės eilutės įrankių tai neliečia: šią taisyklę taiko tik naršyklės.
- Prisijungimas shannon-ai.com neautentifikuoja
/v1užklausų. Slapukai ten neskaitomi; raktas yra vienintelis prisijungimo duomuo. - Leidžiamos kilmės atveju naršyklė gali siųsti
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betairx-request-idir gali skaityti atsakymo antraštęx-request-id.
Rakto apsauga
- Laikykite raktą serveryje. Nedėkite jo į tinklalapius, mobiliąsias programas ar viešas saugyklas: kas jį turi, gali išleisti visą jūsų balansą.
- Raktą įkelkite iš aplinkos kintamojo arba paslapčių saugyklos, o ne įrašykite į kodą.
- Jei raktas galėjo nutekėti, pakeiskite jį puslapyje Raktai ir naudojimas. Senasis raktas nustoja veikti iškart.
- Po nutekėjimo peržiūrėkite užklausų sąrašą puslapyje Raktai ir naudojimas. Jame matomos visos raktu per pastarąsias 30 dienų pateiktos užklausos.