ការផ្ទៀងផ្ទាត់
រាល់ request មាន API key របស់អ្នកក្នុង header។ key មួយក្នុងមួយគណនីដំណើរការលើគ្រប់ endpoint និងគ្រប់ម៉ូដែល ក្នុងទម្រង់ header ណាមួយក្នុងចំណោមពីរ។
Header · OpenAI SDK
Authorization: Bearer YOUR_API_KEY Header · Anthropic SDK
x-api-key: YOUR_API_KEY Header ដែលទទួលយក
header ទាំងពីរត្រូវបានអានលើគ្រប់ endpoint /v1 ទោះ endpoint និយាយទ្រង់ទ្រាយអ្វីក៏ដោយ។ សូមផ្ញើមួយក្នុងចំណោមពួកវា។
| Header | ការពិពណ៌នា |
|---|---|
Authorization: Bearer <key> | ពិនិត្យមុនគេ។ សរសេរ Bearer ដោយអក្សរ B ធំ និងដកឃ្លាមួយមុន key។ OpenAI SDK ផ្ញើ header នេះ។ |
x-api-key: <key> | អាននៅពេល request មិនមាន header Authorization: Bearer។ Anthropic SDK ផ្ញើ header នេះ។ |
ជាមួយ OpenAI SDK កំណត់ key និង 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 កំណត់ key និង 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 ណាខ្លះត្រូវការ key
| Endpoint | Key |
|---|---|
POST /v1/chat/completions | ត្រូវការ |
POST /v1/messages | ត្រូវការ |
POST /v1/responses | ត្រូវការ |
POST /v1/tokenize | ត្រូវការ |
POST /v1/messages/count_tokens | ត្រូវការ |
GET /v1/models | មិនត្រូវការ |
key របស់អ្នក
- key គឺ
sk-បន្តដោយតួអក្សរ 43 ពីA–Z,a–z,0–9,-និង_៖ សរុប 46 តួអក្សរ។ - រាល់គណនីមាន key តែមួយគត់។ វាត្រូវបានបង្កើតនៅលើកដំបូងដែលអ្នកបើក Keys & usage។
- key ផ្តល់សិទ្ធិចូលប្រើ API ពេញលេញសម្រាប់គណនីរបស់អ្នក៖ គ្រប់ endpoint គ្រប់ម៉ូដែល និងសមតុល្យទាំងមូល។
- key មិនមានកាលបរិច្ឆេទផុតកំណត់ទេ។ វាដំណើរការរហូតដល់អ្នកប្តូរ ឬដកហូតវា។
ប្តូរ និងដកហូត
អ្នកប្តូរ និងដកហូត key នៅទំព័រ Keys & usage។ Keys & usage
| សកម្មភាព | អ្វីដែលកើតឡើង |
|---|---|
| ប្តូរ | key ថ្មីត្រូវបានចេញឱ្យ ហើយ key ចាស់ឈប់ដំណើរការ។ key ថ្មីដំណើរការភ្លាមៗ។ |
| ដកហូត | key ឈប់ដំណើរការ ហើយមិនមាន key ថ្មីត្រូវបានចេញឱ្យទេ។ សូមប្តូរ key ដើម្បីទទួលបាន key ដែលដំណើរការម្តងទៀត។ |
- ទាំងពីរមានប្រសិទ្ធភាពភ្លាមៗ៖ request បន្ទាប់ដែលប្រើ key ចាស់នឹងត្រូវឆ្លើយ
401។ សូមចាត់ទុក 60 វិនាទីជាកម្រិតកំណត់ខ្ពស់បំផុត មុនពេល key ចាស់ត្រូវបានបដិសេធគ្រប់ទីកន្លែង។ - រាល់ client របស់គណនីប្រើ key ដូចគ្នា ដូច្នេះការប្តូរ key ប៉ះពាល់ដល់ពួកវាទាំងអស់។ សូមដាក់ key ថ្មីចូលក្នុង client របស់អ្នកភ្លាមៗក្រោយពេលប្តូរ។
- សមតុល្យ ការប្រើប្រាស់ និង flood protection ជារបស់គណនី មិនមែនរបស់ key ទេ។ key ថ្មីបន្តជាមួយសមតុល្យដដែល និងចំនួន request ដដែលសម្រាប់នាទីបច្ចុប្បន្ន។
កំហុស
រាល់ការបរាជ័យនៃការផ្ទៀងផ្ទាត់មានស្ថានភាព 401 និងប្រភេទ authentication_error។ សារប្រាប់ពីករណីនីមួយៗដាច់ពីគ្នា។
| ស្ថានភាព | ប្រភេទ | សារ | ពេលណា |
|---|---|---|---|
401 | authentication_error | Missing authentication | request មិនមាន header Authorization: Bearer ឬ header x-api-key ដែលចាប់ផ្តើមដោយ sk- ទេ។ នេះក៏ជាចម្លើយចំពោះ bearer អក្សរតូច និងតម្លៃ Authorization ដែលគ្មាន Bearer។ |
401 | authentication_error | Invalid API key | key មិនមែនជា key បច្ចុប្បន្នរបស់គណនីណាមួយទេ៖ វាត្រូវបានវាយខុស ត្រូវបានដកហូត ឬត្រូវបានជំនួសដោយការប្តូរ 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"
}
} - លើគ្រប់ path ក្រៅពី
/v1/messagesobjecterrorក៏មានcode: "invalid_api_key"សម្រាប់ key ដែលបាត់ផងដែរ និងparam: null។ - key ត្រូវបានពិនិត្យមុនពេលអានខ្លឹមសារ។ request ដែលគ្មាន key ត្រឹមត្រូវទទួលបាន
401ទោះបីខ្លឹមសារមិនត្រឹមត្រូវ ឬធំពេកក៏ដោយ។ - តម្លៃ
Authorization: Bearerដែលមិនចាប់ផ្តើមដោយsk-មិនត្រូវបានចាត់ទុកជា API key ទេ។ វាទទួលបាន401ជាមួយសារថា token មិនត្រឹមត្រូវ ឬផុតកំណត់។
Browser និង CORS
- API ឆ្លើយតប request ពី browser ឆ្លង origin តែសម្រាប់បញ្ជី origin ថេរប៉ុណ្ណោះ។ JavaScript នៅលើទំព័រនៃ origin ផ្សេងមិនអាចអានចម្លើយ
/v1បានទេ។ - ហៅ API ពី server របស់អ្នក ហើយឱ្យទំព័ររបស់អ្នកនិយាយជាមួយ server របស់អ្នក។ វាក៏រក្សា key ឱ្យនៅក្រៅប្រភពទំព័រផងដែរ។
- កូដនៅខាង server និងឧបករណ៍ command-line មិនរងផលប៉ះពាល់ទេ៖ ច្បាប់នេះត្រូវបានអនុវត្តដោយ browser ប៉ុណ្ណោះ។
- ការចូលគណនីនៅ shannon-ai.com មិនផ្ទៀងផ្ទាត់ request
/v1ទេ។ Cookie មិនត្រូវបានអាននៅទីនោះ; key គឺជាអត្តសញ្ញាណប័ណ្ណតែមួយគត់។ - សម្រាប់ origin ដែលត្រូវបានអនុញ្ញាត browser អាចផ្ញើ
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaនិងx-request-idហើយអាចអាន header ចម្លើយx-request-id។
ការរក្សា key ឱ្យមានសុវត្ថិភាព
- រក្សា key នៅលើ server។ កុំដាក់វាក្នុងទំព័រវេប កម្មវិធីទូរស័ព្ទ ឬ repository សាធារណៈ៖ អ្នកណាដែលកាន់វាអាចចំណាយសមតុល្យទាំងអស់របស់អ្នក។
- ផ្ទុក key ពី environment variable ឬកន្លែងរក្សាទុកសម្ងាត់ ជំនួសឱ្យការសរសេរវាចូលក្នុងកូដ។
- ប្រសិនបើ key អាចត្រូវបានលេចធ្លាយ សូមប្តូរវានៅ Keys & usage។ key ចាស់ឈប់ដំណើរការភ្លាមៗ។
- បន្ទាប់ពីការលេចធ្លាយ សូមអានបញ្ជី request នៅ Keys & usage។ វាបង្ហាញរាល់ request ដែល key បានធ្វើក្នុងរយៈពេល 30 ថ្ងៃចុងក្រោយ។