Developer guide

فراخوانی API

مسیرهای سازگار با API و قوانین استریم و صدا

این صفحه مسیرهایی را پوشش می‌دهد که پس از احراز هویت، واقعاً فراخوانی می‌شوند.
این صفحه شامل فهرست مسیرهای سازگار با OpenAI و Anthropic، نحوه دریافت پاسخ هنگام فعال‌کردن stream در بدنه درخواست،
و ترتیب قوانین قابل‌اعمال فقط بر مسیرهای صدا و voice است.
شناسه مدل و فراخوانی‌های مجاز برای هر مدل در صفحه مدل‌ها، و هدر احراز هویت و base URL در صفحه احراز هویت با کلید API قرار دارند.

مسیر انجام کار

هر دو استاندارد سازگار از یک کلید API استفاده می‌کنند و مدل‌های استدلال مکالمه‌ای را می‌توان با هر یک از این دو استاندارد فراخوانی کرد. بر اساس کاری که می‌خواهید انجام دهید و SDK مورد استفاده‌تان، مسیر را انتخاب کنید.

کار موردنظراستانداردمسیر
استدلال مکالمه‌ای، استفاده از OpenAI SDKسازگار با OpenAIPOST /chat/completions یا POST /responses
استدلال مکالمه‌ای، استفاده از Anthropic SDKسازگار با AnthropicPOST /v1/messages
ایجاد embeddingسازگار با OpenAIPOST /embeddings
تولید و رونویسی صدا، مدیریت voiceسازگار با OpenAIمسیرهای زیر /audio و /voices
بررسی مدل‌های قابل فراخوانیهر دوGET /models

مسیر سازگار با OpenAI

base URL برابر با https://platform.clevi.net/api/v2/aiservice/openai/v1 است و بدنه درخواست و پاسخ از استاندارد OpenAI پیروی می‌کند. جدول زیر مسیرهای استدلال و مدل را نشان می‌دهد؛ مسیرهای صدا و voice در بخش بعدی به‌طور جداگانه آمده‌اند.

روشمسیرتوضیح
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}یک پاسخ ذخیره‌شده را دریافت می‌کند.
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ایجاد embedding. از پخش جریانی پشتیبانی نمی‌کند.
GET/api/v2/aiservice/openai/v1/modelsفهرست مدل‌هایی که می‌توان با این کلید فراخوانی کرد.
GET/api/v2/aiservice/openai/v1/models/{modelId}دریافت یک مدل. اگر قابل دسترسی نباشد، 404 است.
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": "안녕하세요"}]
  }'

در قسمت sk-... کلید صادرشده از صفحه کلید API و در قسمت model، ID صفحه مدل را وارد کنید.

مسیرهای دیگر

مسیرتوضیحات
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 از طریق واسطه‌گری POST با خطای 404 مواجه می‌شود و این چهار مورد توسط مسیرهای اختصاصی پردازش می‌شوند.

مسیرهای سازگار با Anthropic

base URL برابر با 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}دریافت یک مدل. اگر قابل دسترسی نباشد، خطای 404 رخ می‌دهد.
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": "안녕하세요"}]
  }'

پخش جریانی (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 رد می‌شود. این مسیری است که تا زمانی که امکان محاسبه دقیق و تنها یک‌باره میزان مصرف پاسخ‌های پس‌زمینه فراهم شود، بسته نگه داشته شده است.

همراه با اولین قطعه، سه هدر زیر ارسال می‌شوند. پس از آن، برای هر قطعه یک خط event: (فقط در صورتی که upstream نام رویداد را ارائه کرده باشد) و یک خط data: ارسال و بلافاصله flush می‌شود.

  • 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]

مسیرهای صوت و صدا

مسیرهای مدیریت صدا برای 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 برگردانده می‌شوند. مدت نگهداری 3 روز است و پس از آن 404 برگردانده می‌شود.
انتخاب Productبرای audio/speech و audio/transcriptions، Product با model موجود در بدنه انتخاب می‌شود. مسیرهای صدا و تشخیص به هدر X-Product-Sku یا پارامتر پرس‌وجوی product_sku نیاز دارند.
مالکیت صداصداهای ایجاد یا ثبت‌شده به ایجادکننده آن‌ها تعلق دارند. تلاش برای ترکیب یا حذف با صدای دیگران با خطای 403 مواجه می‌شود و فهرست GET /voices نیز فقط صداهای متعلق به خود کاربر را نشان می‌دهد.
اندازه و زمانحد بالای درخواست 28 MiB و محدودیت زمانی فراخوانی upstream، 5 دقیقه است.
ازدحام providerاگر upstream مشغول باشد، کد 409 بدون تغییر منتقل می‌شود و در صورت وجود Retry-After، آن مقدار نیز منتقل خواهد شد. دروازه دوباره تلاش نمی‌کند و درخواست را در صف قرار نمی‌دهد.
CLEVI

زبان و منطقه

زبان‌های ترجمه‌شده با ماشین علامت‌گذاری شده‌اند. دسترس‌پذیری بر اساس بسته منتشرشده سایت است.

۱۳۶ زبان

پیشنهادی

1

شرق آسیا

7

جنوب شرق آسیا

11

جنوب آسیا

18

آسیای مرکزی

5

خاورمیانه و قفقاز

10

غرب اروپا و جنوب اروپا

16

بریتانیا و ایرلند

4

شمال اروپا

10

اروپای مرکزی و بالکان

14

شرق اروپا

5

شرق افریقا

8

غرب افریقا و مرکز افریقا

9

جنوب افریقا

8

امریکا

5

اقیانوسیه

5