Developer guide

فراخوانی API

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

مسیرهای فراخوانی در دروازه CLEVI به مشخصات سازگار با OpenAI و مشخصات سازگار با Anthropic تقسیم می‌شوند.
هر دو مشخصات از یک کلید API استفاده می‌کنند و مدل‌های استدلالی مکالمه‌ای را می‌توان با هر یک از این مشخصات فراخوانی کرد.
مسیرهای embedding و صوت و voice فقط در مشخصات سازگار با OpenAI ارائه می‌شوند و
مشخصات سازگار با Anthropic سه مسیر messages، count_tokens و models را ارائه می‌دهد.

استریم با گزینه stream در بدنه درخواست فعال می‌شود و embedding و برخی مدل‌ها و مسیرها از آن پشتیبانی نمی‌کنند. مسیرهای صوت و voice از قوانین متفاوتی نسبت به استدلال معمول پیروی می‌کنند؛ برای مثال، صوت را بدون تغییر برمی‌گردانند و خروجی‌ها را به مدت ۳ روز در CleviDrive نگهداری می‌کنند.

شناسه مدل و فراخوانی‌های مجاز برای هر مدل در صفحه مدل‌ها، و هدر احراز هویت و base URL در صفحه احراز هویت با کلید API قرار دارند.

انتخاب مسیر

بر اساس کاری که می‌خواهید انجام دهید و SDK مورد استفاده، مسیر را انتخاب کنید. مسیرهای جدول، مسیرهای نسبی‌ای هستند که پس از base URL هر مشخصات قرار می‌گیرند.

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

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

base URL مشخصات سازگار با OpenAI برابر با https://platform.clevi.net/api/v2/aiservice/openai/v1 است. بدنه درخواست و پاسخ از مشخصات OpenAI پیروی می‌کنند. جدول زیر مسیرهای استدلال و مدل را به‌صورت مسیر کامل بر اساس میزبان نشان می‌دهد؛ مسیرهای صوت و voice در بخش‌های بعدی مربوط به مسیرهای صوت و 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/embeddingsEmbedding ایجاد می‌کند. از پخش جریانی پشتیبانی نمی‌کند.
GET/api/v2/aiservice/openai/v1/modelsفهرست مدل‌هایی را که می‌توان با این کلید فراخوانی کرد، برمی‌گرداند.
GET/api/v2/aiservice/openai/v1/models/{modelId}یک مدل را دریافت می‌کند. اگر مدل قابل دسترسی نباشد، 404 برمی‌گرداند.

این یک نمونه حداقلی برای فراخوانی chat/completions است. به‌جای sk-... کلیدی را که در صفحه کلید API صادر کرده‌اید و در 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 توسط مسیرهای اختصاصی پردازش می‌شوند، اگر با رله POST فراخوانی شوند، 404 برگردانده می‌شود.

تمام فیلدهای درخواست و پاسخ را می‌توان در سند 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فهرست مدل‌ها را به‌صورت صفحه‌بندی مبتنی بر cursor برمی‌گرداند. limit بین 1 تا 1000 است و در صورت خارج شدن از این محدوده، 400 برگردانده می‌شود.
GET/api/v2/aiservice/anthropic/v1/models/{modelId}یک مدل را دریافت می‌کند. اگر مدل قابل دسترسی نباشد، 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=true400 را برمی‌گرداند. این مسیری است که تا زمان امکان محاسبه دقیق و فقط یک‌باره میزان مصرف پاسخ‌های پس‌زمینه بسته نگه داشته شده است.

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

زبان و منطقه

زبان‌های ترجمه‌شده به‌صورت ماشینی توسط clevi/cip-5.5-im ترجمه می‌شوند و به‌عنوان ترجمه ماشینی علامت‌گذاری می‌شوند. این موضوع درباره زبان‌هایی اعمال می‌شود که بسته سایت منتشرشده دارند.

۱۳۷ زبان

پیشنهادی

1

شرق آسیا

7

جنوب شرق آسیا

11

جنوب آسیا

18

آسیای مرکزی

5

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

10

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

17

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

4

شمال اروپا

10

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

14

شرق اروپا

5

شرق افریقا

8

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

9

جنوب افریقا

8

امریکا

5

اقیانوسیه

5