Developer guide
ยืนยันตัวตนด้วยคีย์ API
เฮดเดอร์ที่ใส่คีย์ API และ base URL ที่ตั้งค่าใน SDK
เกตเวย์ CLEVI รองรับการยืนยันตัวตนสำหรับเส้นทางที่เข้ากันได้กับ OpenAI และเส้นทางที่เข้ากันได้กับ Anthropic ด้วยคีย์ API เดียว
ค่าที่ต้องตั้งค่าที่ไคลเอ็นต์มีสองรายการ ได้แก่ เฮดเดอร์การยืนยันตัวตนที่ใส่คีย์ และ base URL ของ SDK โดยรูปแบบเฮดเดอร์และ base URL ที่อนุญาตจะแตกต่างกันตามข้อกำหนด
หลังจากตั้งค่าแล้ว ให้เรียกดูรายการโมเดลเพื่อยืนยันสถานะการยืนยันตัวตนได้ทันที
หากการยืนยันตัวตนล้มเหลว ระบบจะส่งคืน 401 และหากยืนยันตัวตนผ่านแล้วแต่ไม่ตรงตามเงื่อนไขสิทธิ์หรือโควตา ระบบจะส่งคืน 403
ออกคีย์ API ได้จากหน้าคีย์ API ในคอนโซล คุณสามารถเพิกถอนคีย์และจัดการขอบเขตการใช้งานได้จากหน้าเดียวกัน
เฮดเดอร์การยืนยันตัวตน
ข้อกำหนดทั้งสองใช้เฮดเดอร์คำขอหนึ่งรายการเพื่อใส่คีย์ API โดยใช้เฮดเดอร์ X-API-Key หรือ Authorization อย่างใดอย่างหนึ่ง และรูปแบบที่อนุญาตจะแตกต่างกันตามข้อกำหนด
| เฮดเดอร์ | เข้ากันได้กับ OpenAI | เข้ากันได้กับ Anthropic |
|---|---|---|
| X-API-Key: <คีย์> | ใช้ได้ | ใช้ได้ |
| Authorization: Bearer <คีย์> | ใช้ได้ | ใช้ได้ |
| Authorization: <คีย์> (ไม่มี Bearer) | ปฏิเสธ | ใช้ได้ |
เมื่อใช้เฮดเดอร์ Authorization ในเส้นทางที่เข้ากันได้กับ OpenAI จำเป็นต้องมีคำนำหน้า Bearer หากส่งเฉพาะคีย์โดยไม่มีคำนำหน้า เกตเวย์จะปฏิเสธคำขอ
ชื่อเฮดเดอร์ไม่แยกความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ดังนั้นเฮดเดอร์ x-api-key ที่ Anthropic SDK ส่งมาก็ทำงานได้เช่นเดิม หากระบุเฮดเดอร์ทั้งสองรายการ ระบบจะใช้ค่า X-API-Key เป็นลำดับแรก
base URL
SDK ที่ใช้อยู่เดิมสามารถใช้งานต่อได้โดยเปลี่ยนเฉพาะ base URL เป็นที่อยู่ด้านล่าง ที่อยู่ทั้งสองแตกต่างกันตรงที่มี /v1 รวมอยู่ด้วยหรือไม่ ดังนั้นให้ระบุที่อยู่ที่ตรงกับข้อกำหนดนั้น ๆ โดยไม่เปลี่ยนแปลง
| ข้อกำหนด | base URL | กฎเส้นทาง |
|---|---|---|
| เข้ากันได้กับ OpenAI | https://platform.clevi.net/api/v2/aiservice/openai/v1 | รวม /v1 ไว้ใน base URL |
| เข้ากันได้กับ Anthropic | https://platform.clevi.net/api/v2/aiservice/anthropic | Anthropic SDK จะเพิ่ม /v1 ลงในเส้นทางคำขอโดยตรง ดังนั้นจึงสิ้นสุดก่อน /v1 |
ตรวจสอบการยืนยันตัวตน
หลังจากตั้งค่า API key และ base URL แล้ว ให้เรียกดูรายการโมเดลเพื่อยืนยันว่าการยืนยันตัวตนสำเร็จหรือไม่ ตัวอย่างด้านล่างเรียกใช้คำขอเดียวกันด้วย curl, OpenAI SDK และ Anthropic SDK แทนที่ sk-... ด้วยคีย์ที่ออกให้จากหน้าจอ API key
เมื่อเรียกดูด้วย curl ให้ระบุพาธเต็มจนถึง /v1/models สำหรับทั้งสองรูปแบบ คำสั่งแรกใช้เฮดเดอร์ X-API-Key กับพาธที่เข้ากันได้กับ OpenAI ส่วนคำสั่งที่สองใช้เฮดเดอร์ Authorization กับพาธที่เข้ากันได้กับ Anthropic
curl https://platform.clevi.net/api/v2/aiservice/openai/v1/models \
-H "X-API-Key: sk-..."
curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/models \
-H "Authorization: Bearer sk-..." \
-H "anthropic-version: 2023-06-01"OpenAI SDK ให้ระบุที่อยู่ที่รวม /v1 ไว้ใน base_url
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)
for model in client.models.list():
print(model.id)Anthropic SDK ให้ระบุ base_url ให้ลงท้ายก่อนถึง /v1
สำหรับการยืนยันตัวตน ให้ใช้เฮดเดอร์ x-api-key ที่ SDK ส่งมาโดยตรง
from anthropic import Anthropic
client = Anthropic(
api_key="sk-...",
base_url="https://platform.clevi.net/api/v2/aiservice/anthropic",
)
for model in client.models.list(limit=20).data:
print(model.id)หากการตอบกลับของตัวอย่างใดก็ตามเป็น 200 แสดงว่าการยืนยันตัวตนสำเร็จ และ data ในการตอบกลับจะมีรายการโมเดลที่สามารถเรียกใช้ด้วยคีย์นี้ หากเป็น 401 ให้ตรวจสอบสาเหตุตามลำดับในหัวข้อถัดไป
การยืนยันตัวตนล้มเหลว
หากส่งคีย์ที่ไม่มีอยู่ หมดอายุ หรือถูกเพิกถอน ระบบจะส่งคืน 401 เมื่อเรียกใช้พาธที่เข้ากันได้กับ OpenAI โดยไม่มีคีย์ ระบบจะส่งคืนเนื้อหาด้านล่าง ส่วนพาธที่เข้ากันได้กับ Anthropic จะมี error.type เป็น authentication_error
{
"error": {
"message": "API key is required.",
"type": "invalid_request_error"
}
}หากได้รับ 401 ให้ตรวจสอบตามลำดับต่อไปนี้
- ตรวจสอบสถานะคีย์ในหน้าจอ API key หากคีย์หมดอายุหรือถูกเพิกถอน ให้ขอคีย์ใหม่
- ตรวจสอบว่าชื่อเฮดเดอร์เป็น X-API-Key หรือ Authorization
- หากใช้เฮดเดอร์ Authorization กับพาธที่เข้ากันได้กับ OpenAI ให้ตรวจสอบว่ามีคำนำหน้า Bearer
หลังจากแก้ไขแล้ว ให้เรียกดูรายการโมเดลในหัวข้อการยืนยันตัวตนอีกครั้ง และตรวจสอบว่าได้รับ 200 หรือไม่
เฮดเดอร์ที่ใช้ร่วมกัน
เฮดเดอร์ต่อไปนี้เป็นตัวเลือกทั้งหมด เราขอแนะนำให้กำหนด X-Request-Id ไว้เพื่อให้ติดตามปัญหาได้
| เฮดเดอร์ | วัตถุประสงค์ | หากละเว้น |
|---|---|---|
| X-Request-Id | ตัวระบุสำหรับติดตามคำขอ เส้นทางที่เข้ากันได้กับ Anthropic จะส่งคืนค่าเดียวกันในเฮดเดอร์ request-id ของการตอบกลับ | เซิร์ฟเวอร์เป็นผู้ออกให้ |
| X-Region-Code | กำหนดรีเจียนที่เรียกใช้ | คือ global |
| X-Product-Sku (สามารถระบุด้วย query product_sku ได้เช่นกัน) | ระบุ Product SKU ที่จะใช้เรียกเก็บเงินโดยตรง เฮดเดอร์มีลำดับความสำคัญเหนือ query และใช้เป็นหลักในเส้นทางเสียงและวอยซ์ | ไม่สามารถละเว้นได้ในเส้นทางวอยซ์ ส่วน audio/speech และ audio/transcriptions จะเลือก Product ด้วยค่า model ในเนื้อหาคำขอ |
| anthropic-version / anthropic-beta | ส่งต่อโดยตรงในเส้นทางที่เข้ากันได้กับ Anthropic | เวอร์ชันคือ 2023-06-01 |
หากเกิด 5xx ซ้ำ ๆ โปรดแจ้งผ่านความช่วยเหลือและช่องทางติดต่อ พร้อมระบุ X-Request-Id หากเป็นค่าที่ระบุโดยตรง จะสามารถตรวจสอบเทียบกับบันทึกของไคลเอนต์ได้ทันที