ავთენტიკაცია
ყოველი მოთხოვნა header-ში თქვენს API გასაღებს ატარებს. ანგარიშზე ერთი გასაღები მუშაობს ყველა endpoint-სა და ყველა მოდელზე, header-ის ორი ფორმიდან ნებისმიერით.
Header · OpenAI SDK-ები
Authorization: Bearer YOUR_API_KEY Header · Anthropic SDK-ები
x-api-key: YOUR_API_KEY მისაღები header-ები
ორივე header იკითხება ყველა /v1 endpoint-ზე, რა ფორმატზეც არ უნდა მუშაობდეს endpoint. გააგზავნეთ ერთ-ერთი.
| Header | აღწერა |
|---|---|
Authorization: Bearer <key> | მოწმდება პირველი. Bearer დაწერეთ დიდი B-თი და გასაღების წინ ერთი ინტერვალით. OpenAI SDK-ები ამ header-ს აგზავნიან. |
x-api-key: <key> | იკითხება, როცა მოთხოვნას Authorization: Bearer header არ აქვს. Anthropic SDK-ები ამ header-ს აგზავნიან. |
OpenAI SDK-ით დააყენეთ გასაღები და base URL; SDK აგზავნის 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!"}
]
}' Anthropic SDK-ით დააყენეთ გასაღები და base URL /v1-ის გარეშე; SDK აგზავნის 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!"}
]
}' რომელ endpoint-ებს სჭირდება გასაღები
| Endpoint | გასაღები |
|---|---|
POST /v1/chat/completions | სავალდებულოა |
POST /v1/messages | სავალდებულოა |
POST /v1/responses | სავალდებულოა |
POST /v1/tokenize | სავალდებულოა |
POST /v1/messages/count_tokens | სავალდებულოა |
GET /v1/models | არ არის საჭირო |
თქვენი გასაღები
- გასაღები არის
sk-, რასაც მოჰყვება 43 სიმბოლოA–Z,a–z,0–9,-და_სიმბოლოებიდან: სულ 46 სიმბოლო. - ყველა ანგარიშს აქვს ზუსტად ერთი გასაღები. ის იქმნება, როცა პირველად გახსნით გვერდს Keys & usage.
- გასაღები თქვენი ანგარიშისთვის API-ზე სრულ წვდომას იძლევა: ყველა endpoint-ზე, ყველა მოდელზე და მთელ ბალანსზე.
- გასაღებს ვადის გასვლის თარიღი არ აქვს. ის მუშაობს მანამ, სანამ როტაციას ან გაუქმებას არ გაუკეთებთ.
როტაცია და გაუქმება
გასაღების როტაციასა და გაუქმებას გააკეთებთ გვერდზე Keys & usage. გასაღებები და გამოყენება
| მოქმედება | რა ხდება |
|---|---|
| როტაცია | გაიცემა ახალი გასაღები და ძველი მუშაობას წყვეტს. ახალი გასაღები მაშინვე მუშაობს. |
| გაუქმება | გასაღები მუშაობას წყვეტს და ახალი არ გაიცემა. სამუშაო გასაღების მისაღებად გააკეთეთ როტაცია. |
- ორივე მაშინვე ამოქმედდება: ძველი გასაღებით შემდეგ მოთხოვნას უპასუხებს
401. ძველი გასაღების ყველგან უარყოფამდე ზედა ზღვრად 60 წამი ჩათვალეთ. - ანგარიშის ყველა კლიენტი ერთსა და იმავე გასაღებს იყენებს, ამიტომ როტაცია ყველას შეეხება. ახალი გასაღები კლიენტებში როტაციისთანავე ჩასვით.
- ბალანსი, გამოყენება და flood protection ეკუთვნის ანგარიშს და არა გასაღებს. ახალი გასაღები აგრძელებს იმავე ბალანსითა და მიმდინარე წუთის მოთხოვნების იმავე მთვლელით.
შეცდომები
ავთენტიკაციის ყოველი შეცდომის სტატუსია 401 და ტიპი authentication_error. შემთხვევებს შეტყობინება არჩევს.
| სტატუსი | ტიპი | შეტყობინება | როდის |
|---|---|---|---|
401 | authentication_error | Missing authentication | მოთხოვნას არც Authorization: Bearer header აქვს და არც x-api-key header, რომელიც sk--ით იწყება. ეს არის პასუხი აგრეთვე მცირე ასოებით დაწერილ bearer-ზე და Authorization-ის მნიშვნელობაზე Bearer-ის გარეშე. |
401 | authentication_error | Invalid API key | გასაღები არ არის ანგარიშის მიმდინარე გასაღები: არასწორადაა აკრეფილი, გაუქმებულია ან როტაციით ჩანაცვლდა. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - ყველა გზაზე
/v1/messages-ის გარდაerrorობიექტი ასევე შეიცავსcode: "invalid_api_key"-ს, გასაღების არარსებობის შემთხვევაშიც, დაparam: null-ს. - გასაღები მოწმდება body-ის წაკითხვამდე. მოთხოვნას ვალიდური გასაღების გარეშე ეძლევა
401მაშინაც, როცა მისი body არასწორია ან ზედმეტად დიდია. Authorization: Bearerმნიშვნელობა, რომელიცsk--ით არ იწყება, API გასაღებად არ განიხილება. ის იღებს401-ს შეტყობინებით, რომ ტოკენი არასწორია ან ვადაგასულია.
ბრაუზერები და CORS
- API cross-origin ბრაუზერის მოთხოვნებს პასუხობს მხოლოდ origin-ების ფიქსირებული სიისთვის. სხვა origin-ის გვერდზე JavaScript-ს
/v1პასუხების წაკითხვა არ შეუძლია. - გამოიძახეთ API თქვენი სერვერიდან და თქვენი გვერდი თქვენს სერვერთან ალაპარაკეთ. ასე გასაღებიც გვერდის წყაროს კოდში არ მოხვდება.
- სერვერული კოდი და ბრძანების ხაზის ინსტრუმენტები ამას არ ეხება: ეს წესი მხოლოდ ბრაუზერებში მოქმედებს.
- shannon-ai.com-ზე შესვლა
/v1მოთხოვნებს არ აავთენტიკებს. Cookie-ები იქ არ იკითხება; გასაღები ერთადერთი რწმუნებათა სიგელია. - დაშვებული origin-ისთვის ბრაუზერს შეუძლია გააგზავნოს
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaდაx-request-idდა წაიკითხოს პასუხის headerx-request-id.
გასაღების დაცვა
- გასაღები სერვერზე შეინახეთ. ნუ ჩასვამთ მას ვებგვერდებში, მობილურ აპებში ან საჯარო რეპოზიტორიებში: ვისაც ის აქვს, მას თქვენი მთელი ბალანსის დახარჯვა შეუძლია.
- გასაღები ჩატვირთეთ გარემოს ცვლადიდან ან საიდუმლოებების საცავიდან და არა კოდში ჩაწერით.
- თუ გასაღები შესაძლოა გაჟონილა, გააკეთეთ მისი როტაცია გვერდზე Keys & usage. ძველი გასაღები მაშინვე შეწყვეტს მუშაობას.
- გაჟონვის შემდეგ წაიკითხეთ მოთხოვნების სია გვერდზე Keys & usage. ის აჩვენებს გასაღებით ბოლო 30 დღეში შესრულებულ ყველა მოთხოვნას.