ማረጋገጫ
እያንዳንዱ ጥያቄ የAPI ቁልፍዎን በheader ይይዛል። በመለያ አንድ ቁልፍ በእያንዳንዱ endpoint እና በእያንዳንዱ ሞዴል ላይ ይሰራል፣ ከሁለት የheader ቅርጾች በአንዱ።
Header · የOpenAI SDKs
Authorization: Bearer YOUR_API_KEY Header · የAnthropic SDKs
x-api-key: YOUR_API_KEY የሚቀበሉ headers
ሁለቱም headers በእያንዳንዱ /v1 endpoint ላይ ይነበባሉ፣ endpointው የትኛውን ቅርጸት ቢናገርም። ከሁለቱ አንዱን ይላኩ።
| Header | መግለጫ |
|---|---|
Authorization: Bearer <key> | መጀመሪያ ይፈተሻል። Bearerን በትልቅ B እና ከቁልፉ በፊት በአንድ ክፍተት ይጻፉ። የOpenAI SDKs ይህንን header ይልካሉ። |
x-api-key: <key> | ጥያቄው Authorization: Bearer header ሲጎድለው ይነበባል። Anthropic SDKs ይህንን 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 ቁልፉንና /v1 የሌለውን base URL ያዘጋጁ፤ 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!"}
]
}' የትኞቹ endpoints ቁልፍ ይፈልጋሉ
| ኤንድ-ፖይንት (Endpoint) | ቁልፍ |
|---|---|
POST /v1/chat/completions | ያስፈልጋል |
POST /v1/messages | ያስፈልጋል |
POST /v1/responses | ያስፈልጋል |
POST /v1/tokenize | ያስፈልጋል |
POST /v1/messages/count_tokens | ያስፈልጋል |
GET /v1/models | አያስፈልግም |
ቁልፍዎ
- ቁልፍ
sk-እና ከዚያ ከA–Z,a–z,0–9,-እና_የተውጣጡ 43 ቁምፊዎች ነው፦ በጠቅላላው 46 ቁምፊዎች። - እያንዳንዱ መለያ በትክክል አንድ ቁልፍ አለው። Keys & usageን መጀመሪያ ሲከፍቱ ይፈጠራል።
- ቁልፉ ለመለያዎ ወደ API ሙሉ መዳረሻ ይሰጣል፦ ሁሉም endpoint፣ ሁሉም ሞዴል እና ቀሪ ሂሳቡ በሙሉ።
- ቁልፍ የሚያበቃበት ቀን የለውም። እስኪቀይሩት ወይም እስኪሰርዙት ድረስ ይሰራል።
መቀየርና መሰረዝ
ቁልፉን የሚቀይሩትና የሚሰርዙት በKeys & usage ገጽ ላይ ነው። Keys & usage
| እርምጃ | ምን ይሆናል |
|---|---|
| ቀይር | አዲስ ቁልፍ ይሰጣል እና የድሮው ቁልፍ መስራት ያቆማል። አዲሱ ቁልፍ ወዲያውኑ ይሰራል። |
| ሰርዝ | ቁልፉ መስራት ያቆማል እና አዲስ ቁልፍ አይሰጥም። እንደገና የሚሰራ ቁልፍ ለማግኘት ይቀይሩ። |
- ሁለቱም ወዲያውኑ ተግባራዊ ይሆናሉ፦ በድሮው ቁልፍ የሚቀጥለው ጥያቄ በ
401ይመለሳል። የድሮው ቁልፍ በሁሉም ቦታ እስኪከለከል ድረስ 60 ሰከንድ እንደ ከፍተኛ ገደብ ይቁጠሩ። - የመለያው እያንዳንዱ ክላይንት ተመሳሳይ ቁልፍ ይጠቀማል፣ ስለዚህ መቀየር ሁሉንም ይነካል። ከቀየሩ በኋላ አዲሱን ቁልፍ ወዲያውኑ ወደ ክላይንቶችዎ ያስገቡ።
- ቀሪ ሂሳብ፣ አጠቃቀም እና flood protection የመለያው ናቸው እንጂ የቁልፉ አይደሉም። አዲስ ቁልፍ በተመሳሳይ ቀሪ ሂሳብ እና ለአሁኑ ደቂቃ በተመሳሳይ የጥያቄ ቆጠራ ይቀጥላል።
ስህተቶች
እያንዳንዱ የማረጋገጫ ውድቀት ሁኔታ 401 እና ዓይነት authentication_error አለው። መልእክቱ ጉዳዮቹን ይለያል።
| ሁኔታ | ዓይነት | መልእክት | መቼ |
|---|---|---|---|
401 | authentication_error | Missing authentication | ጥያቄው Authorization: Bearer header የለውም፣ በsk- የሚጀምር x-api-key header ወይም የለውም። ይህ ለትንሽ ፊደል bearer እና Bearer ለሌለው Authorization እሴትም ምላሹ ነው። |
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። - ቁልፉ አካሉ ከመነበቡ በፊት ይፈተሻል። ትክክለኛ ቁልፍ የሌለው ጥያቄ አካሉ ልክ ባይሆንም ወይም ቢበዛም
401ያገኛል። - በ
sk-የማይጀምርAuthorization: Bearerእሴት እንደ API ቁልፍ አይቆጠርም። tokenው ልክ እንዳልሆነ ወይም እንዳለፈበት መልእክት ያለው401ያገኛል።
አሳሾችና CORS
- API ለcross-origin የአሳሽ ጥያቄዎች የሚመልሰው ለተወሰነ የorigins ዝርዝር ብቻ ነው። በሌላ origin ገጽ ላይ ያለ JavaScript የ
/v1ምላሾችን ማንበብ አይችልም። - APIን ከሰርቨርዎ ይጥሩ እና ገጽዎ ከሰርቨርዎ ጋር እንዲነጋገር ያድርጉ። ይህ ቁልፉን ከገጹ ምንጭ ውጭ ያደርገዋል።
- የሰርቨር-ጎን ኮድ እና የcommand-line መሣሪያዎች አይነኩም፦ ይህ ደንብ በአሳሾች ብቻ ይተገበራል።
- በshannon-ai.com መግባት የ
/v1ጥያቄዎችን አያረጋግጥም። ኩኪዎች እዚያ አይነበቡም፤ ቁልፉ ብቸኛው ማረጋገጫ ነው። - ለተፈቀደ origin፣ አሳሽ
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaእናx-request-idሊልክ ይችላል፣ እና የምላሹን headerx-request-idሊያነብ ይችላል።
ቁልፉን በደህንነት መያዝ
- ቁልፉን በሰርቨር ላይ ያስቀምጡ። ወደ ድር ገጾች፣ የሞባይል መተግበሪያዎች ወይም የህዝብ repositories አያስገቡ፦ የያዘው ሰው ቀሪ ሂሳብዎን በሙሉ ሊያወጣ ይችላል።
- ቁልፉን በኮድ ውስጥ ከመጻፍ ይልቅ ከenvironment variable ወይም ከሚስጥር ማከማቻ ይጫኑ።
- ቁልፉ የወጣ ከሆነ በKeys & usage ላይ ይቀይሩት። የድሮው ቁልፍ ወዲያውኑ መስራት ያቆማል።
- ከመውጣት በኋላ በKeys & usage ላይ የጥያቄ ዝርዝሩን ያንብቡ። ቁልፉ ባለፉት 30 ቀናት ያደረጋቸውን ሁሉንም ጥያቄዎች ያሳያል።