Developer guide

การเรียกใช้ API

เส้นทางที่เข้ากันได้กับ API และกฎการสตรีม·เสียง

เส้นทางการเรียกใช้ของเกตเวย์ CLEVI แบ่งออกเป็นข้อกำหนดที่เข้ากันได้กับ OpenAI และข้อกำหนดที่เข้ากันได้กับ Anthropic
ทั้งสองข้อกำหนดใช้คีย์ API เดียวกัน และสามารถเรียกใช้โมเดลการอนุมานแบบสนทนาได้ด้วยข้อกำหนดใดก็ได้
เส้นทางการสร้างเวกเตอร์ฝังตัวและเส้นทางเสียง·วอยซ์มีเฉพาะในข้อกำหนดที่เข้ากันได้กับ OpenAI เท่านั้น
ส่วนข้อกำหนดที่เข้ากันได้กับ Anthropic มีเส้นทาง messages, count_tokens และ models

เปิดใช้การสตรีมด้วย stream ในเนื้อหาคำขอ และไม่รองรับการฝังตัวและโมเดล·เส้นทางบางส่วน เส้นทางเสียง·วอยซ์ปฏิบัติตามกฎที่แตกต่างจากการอนุมานทั่วไป เช่น ส่งคืนเสียงโดยตรงและจัดเก็บผลลัพธ์ไว้ใน CleviDrive เป็นเวลา 3 วัน

ID โมเดลและการเรียกใช้ที่อนุญาตสำหรับแต่ละโมเดลอยู่ในหน้าของโมเดล ส่วนส่วนหัวการยืนยันตัวตนและ base URL อยู่ในหน้าการยืนยันตัวตนด้วยคีย์ API

การเลือกเส้นทาง

เลือกเส้นทางตามสิ่งที่คุณต้องการทำและ SDK ที่ใช้งานอยู่ เส้นทางในตารางคือเส้นทางสัมพัทธ์ที่ต่อท้าย base URL ของแต่ละข้อกำหนด

สิ่งที่ต้องการทำข้อกำหนดเส้นทาง
การอนุมานแบบสนทนา ใช้ OpenAI SDKเข้ากันได้กับ OpenAIPOST /chat/completions หรือ POST /responses
การอนุมานแบบสนทนา ใช้ Anthropic SDKเข้ากันได้กับ AnthropicPOST /v1/messages
การสร้างเวกเตอร์ฝังตัวเข้ากันได้กับ OpenAIPOST /embeddings
การสังเคราะห์·ถอดเสียง การจัดการวอยซ์เข้ากันได้กับ OpenAIเส้นทางภายใต้ /audio และ /voices
ตรวจสอบโมเดลที่สามารถเรียกใช้ได้ทั้งสองแบบGET /models

เส้นทางที่เข้ากันได้กับ OpenAI

base URL ของข้อกำหนดที่เข้ากันได้กับ OpenAI คือ https://platform.clevi.net/api/v2/aiservice/openai/v1 เนื้อหาคำขอและการตอบกลับเป็นไปตามข้อกำหนดของ OpenAI ตารางด้านล่างแสดงเส้นทางทั้งหมดตามโฮสต์สำหรับเส้นทางการอนุมานและโมเดล ส่วนเส้นทางเสียง·วอยซ์สรุปไว้ในส่วนเส้นทางเสียงและวอยซ์ด้านล่าง

เมธอดเส้นทางคำอธิบาย
POST/api/v2/aiservice/openai/v1/chat/completionsส่งคำขอการอนุมานแบบสนทนา หากเปิดใช้ stream ระบบจะตอบกลับผ่าน SSE
POST/api/v2/aiservice/openai/v1/responsesเรียกใช้งานตามข้อกำหนด Responses รองรับ stream
GET/api/v2/aiservice/openai/v1/responses/{responseId}ดึงข้อมูลการตอบกลับที่จัดเก็บไว้ 1 รายการ
GET/api/v2/aiservice/openai/v1/responses/{responseId}/input_itemsดึงรายการอินพุตของการตอบกลับที่จัดเก็บไว้
POST/api/v2/aiservice/openai/v1/responses/{responseId}/cancelยกเลิกการตอบกลับที่กำลังดำเนินการอยู่เบื้องหลัง
DELETE/api/v2/aiservice/openai/v1/responses/{responseId}ลบการตอบกลับที่จัดเก็บไว้
POST/api/v2/aiservice/openai/v1/completionsส่งคำขอการเติมข้อความแบบเดิม รองรับ stream
POST/api/v2/aiservice/openai/v1/embeddingsสร้าง embeddings ไม่รองรับการสตรีม
GET/api/v2/aiservice/openai/v1/modelsส่งคืนรายการโมเดลที่สามารถเรียกใช้งานด้วยคีย์นี้ได้
GET/api/v2/aiservice/openai/v1/models/{modelId}ดึงข้อมูลโมเดล 1 รายการ หากไม่สามารถเข้าถึงโมเดลได้ ระบบจะส่งคืน 404

นี่คือตัวอย่างขั้นต่ำสำหรับเรียกใช้ chat/completions แทนที่ sk-... ด้วยคีย์ที่ออกให้จากหน้าคีย์ API และใส่ ID จากหน้ารุ่นโมเดลในช่อง model

curl https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions \
  -H "X-API-Key: sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cip-5.5-im",
    "messages": [{"role": "user", "content": "안녕하세요"}]
  }'

เส้นทางอื่นๆ

เส้นทางต่อไปนี้มีไว้สำหรับการวินิจฉัย ความเข้ากันได้กับระบบเดิม และการส่งต่อ

เส้นทางคำอธิบาย
GET /api/v2/aiservice/openai/v1/healthzตรวจสอบสถานะของ provider เสียง
/api/v2/aiservice/openai/v1/api/status · /api/options · /api/generate · /outputs/{filename}เส้นทางสำหรับตรวจสอบสถานะและตัวเลือกของ Cosa รุ่นเก่า เรียกใช้การสร้าง (multipart) และดาวน์โหลดผลลัพธ์
/api/v2/aiservice/openai/v1/{routeKey} (GET · POST · PUT · PATCH · DELETE)ถ่ายทอดเส้นทางของ provider ที่ไม่มีอยู่ในตารางด้านบนโดยใช้กฎที่กำหนด เส้นทาง chat/completions, completions, embeddings และ responses ดำเนินการโดยเส้นทางเฉพาะ จึงจะส่งคืน 404 หากเรียกใช้ผ่านการถ่ายทอด POST

สามารถตรวจสอบฟิลด์ทั้งหมดของคำขอและการตอบกลับได้ในเอกสาร OpenAPI 3.0 https://platform.clevi.net/api/v2/console/openapi/cloud-inference-v1 รายการเส้นทางสร้างขึ้นจากเอกสารนี้ และเอกสารจะเปิดได้เฉพาะผ่านเซสชันที่เข้าสู่ระบบคอนโซลเท่านั้น คุณสามารถสร้างไคลเอ็นต์จากเอกสารเดียวกันนี้ได้

เส้นทางที่เข้ากันได้กับ Anthropic

base URL ของข้อกำหนดที่เข้ากันได้กับ Anthropic คือ https://platform.clevi.net/api/v2/aiservice/anthropic และ Anthropic SDK จะเพิ่ม /v1 ลงในเส้นทางคำขอโดยตรง เนื้อหาคำขอและการตอบกลับเป็นไปตามข้อกำหนด Anthropic Messages

เมธอดเส้นทางคำอธิบาย
POST/api/v2/aiservice/anthropic/v1/messagesเรียกใช้ตามข้อกำหนด Messages โดยต้องระบุ model, messages และ max_tokens และรองรับ stream
POST/api/v2/aiservice/anthropic/v1/messages/count_tokensประมาณจำนวนโทเค็นอินพุตเท่านั้นโดยไม่มีค่าใช้จ่าย ไม่จำเป็นต้องระบุ max_tokens
GET/api/v2/aiservice/anthropic/v1/modelsส่งคืนรายการโมเดลด้วยวิธีการแบ่งหน้าโดยใช้เคอร์เซอร์ ค่า limit อยู่ระหว่าง 1~1000 และหากอยู่นอกช่วงจะส่งคืน 400
GET/api/v2/aiservice/anthropic/v1/models/{modelId}เรียกดูโมเดล 1 รายการ หากไม่สามารถเข้าถึงโมเดลได้ จะส่งคืน 404

ตัวอย่างขั้นต่ำสำหรับการเรียกใช้ messages

curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/messages \
  -H "X-API-Key: sk-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cip-5.5-im",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "안녕하세요"}]
  }'

หากละเว้นส่วนหัว anthropic-version ระบบจะถือว่าเป็น 2023-06-01 เกตเวย์จะส่งต่อส่วนหัว anthropic-version และ anthropic-beta ตามเดิม

การสตรีม (SSE)

เมื่อตั้งค่า stream เป็น true ในเนื้อหาคำขอ เซิร์ฟเวอร์จะตอบกลับเป็น Server-Sent Events การรองรับจะแตกต่างกันตามเส้นทางและโมเดลดังต่อไปนี้

เป้าหมายการทำงาน
OpenAI ที่เข้ากันได้ POST /chat/completions · POST /completions · POST /responsesรองรับ stream
Anthropic ที่เข้ากันได้ POST /v1/messagesรองรับ stream
POST /embeddingsไม่รองรับการสตรีม
โมเดลกลุ่มการค้นหาของ Ivy (เช่น ivy-4-mm-search)แม้จะเปิด stream เซิร์ฟเวอร์จะปิดใช้งานและตอบกลับทั้งหมดในครั้งเดียว
GET /responses/{responseId}?stream=trueส่งคืน 400 เส้นทางนี้ถูกปิดไว้จนกว่าจะสามารถวัดปริมาณการใช้งานของการตอบกลับเบื้องหลังได้อย่างถูกต้องเพียงครั้งเดียว

เซิร์ฟเวอร์จะส่งส่วนหัวสามรายการต่อไปนี้พร้อมกับชังก์แรก หลังจากนั้นจะส่งบรรทัด data: ในแต่ละชังก์และ flush ทันที โดยจะส่งบรรทัด event: มาพร้อมกันเฉพาะเมื่ออัปสตรีมให้ชื่อเหตุการณ์มาเท่านั้น

  • Content-Type: text/event-stream
  • Cache-Control: no-cache
  • X-Accel-Buffering: no

ชังก์ของเส้นทางที่เข้ากันได้กับ Anthropic จะจับคู่บรรทัด event กับบรรทัด data

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"안"}}

ชังก์ของ chat/completions จะมาในรูปแบบบรรทัด data และส่งต่อ data: [DONE] ตามเดิมในตอนท้าย

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[...]}

data: [DONE]

หากเกิดข้อผิดพลาดระหว่างการสตรีม ระบบจะส่ง JSON ข้อผิดพลาดเช่นเดียวกับการเรียกใช้ทั่วไปในบรรทัด data: เดียว และรหัสสถานะ HTTP จะเปลี่ยนแปลงไปพร้อมกัน

เส้นทางเสียงและวอยซ์

เส้นทาง TTS·STT และการจัดการวอยซ์ของ Cosa อยู่ในข้อกำหนดที่เข้ากันได้กับ OpenAI และมีกฎบางประการที่แตกต่างจากการอนุมานทั่วไป โปรดตรวจสอบในตาราง Cosa ของหน้าโมเดลว่าโมเดลใดอนุญาตให้ใช้เส้นทางใด

เมธอดเส้นทางคำอธิบาย
POST/api/v2/aiservice/openai/v1/audio/speechสังเคราะห์ข้อความเป็นเสียงและส่งคืนเสียงโดยตรง
POST/api/v2/aiservice/openai/v1/audio/transcriptionsถอดเสียงเป็นข้อความ (multipart)
POST/api/v2/aiservice/openai/v1/audio/speech/cloneสังเคราะห์เสียงด้วยวอยซ์ที่โคลน (multipart)
GET/api/v2/aiservice/openai/v1/voicesส่งคืนรายการวอยซ์ที่ผู้เรียกใช้สามารถใช้งานได้
POST/api/v2/aiservice/openai/v1/voicesลงทะเบียนวอยซ์จากตัวอย่างเสียง (multipart)
POST/api/v2/aiservice/openai/v1/voices/designสร้างวอยซ์สังเคราะห์จากคำอธิบาย
DELETE/api/v2/aiservice/openai/v1/voices/{voiceId}ลบวอยซ์ เฉพาะเจ้าของเท่านั้นที่สามารถลบได้

กฎต่อไปนี้ใช้กับเส้นทางเสียงและวอยซ์เท่านั้น

กฎเนื้อหา
การส่งไบนารีการตอบกลับสำเร็จของ audio/speech, audio/speech/clone และ outputs/{filename} จะส่งไฟล์เสียงโดยตรงพร้อมบันทึกลงใน CleviDrive
ส่วนหัวใบเสร็จรวมส่วนหัว X-Clevi-Drive-File-Id, X-Clevi-Drive-File-Version-Id, X-Clevi-Drive-Download-Url, X-Clevi-Drive-Expires-At, X-Clevi-Drive-Retention-Days: 3 ไว้ในการตอบกลับ
การเลือก Productaudio/speech และ audio/transcriptions ใช้ model ในเนื้อหาคำขอเพื่อเลือก Product เส้นทางเสียงและการวินิจฉัยต้องใช้ส่วนหัว X-Product-Sku หรือคำค้น product_sku
สิทธิ์ความเป็นเจ้าของเสียงเสียงที่โคลนหรือลงทะเบียนจะเป็นของผู้สร้าง หากพยายามสังเคราะห์หรือลบเสียงของเจ้าของรายอื่น ระบบจะส่งคืน 403 และรายการ GET /voices จะรวมเฉพาะเสียงของผู้ใช้เอง
ขนาดและเวลาขนาดคำขอสูงสุดคือ 28 MiB และระยะเวลาจำกัดของการเรียกอัปสตรีมคือ 5 นาที
ความแออัดของ providerหากอัปสตรีมมีความแออัด ระบบจะส่งต่อ 409 โดยตรง และหากมี Retry-After ก็จะส่งต่อค่านั้นไปพร้อมกัน เกตเวย์จะไม่ลองใหม่หรือใส่ลงคิว

ภาษาและภูมิภาค

ภาษาที่แปลโดยเครื่องแปลจะถูกแปลโดย clevi/cip-5.5-im และมีการระบุว่าเป็นภาษาที่แปลโดยเครื่องแปล ใช้กับภาษาที่มีชุดเว็บไซต์เผยแพร่แล้ว

137 ภาษา

แนะนำ

1

เอเชียตะวันออก

7

เอเชียตะวันออกเฉียงใต้

11

เอเชียใต้

18

เอเชียกลาง

5

ตะวันออกกลางและคอเคซัส

10

ยุโรปตะวันตกและยุโรปใต้

17

สหราชอาณาจักรและไอร์แลนด์

4

ยุโรปเหนือ

10

ยุโรปกลางและบอลข่าน

14

ยุโรปตะวันออก

5

แอฟริกาตะวันออก

8

แอฟริกาตะวันตกและแอฟริกากลาง

9

แอฟริกาตอนใต้

8

อเมริกา

5

โอเชียเนีย

5