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નો ઉપયોગ | OpenAI સુસંગત | POST /chat/completions અથવા POST /responses |
| સંવાદાત્મક રીઝનિંગ, Anthropic SDKનો ઉપયોગ | Anthropic સુસંગત | POST /v1/messages |
| એમ્બેડિંગ બનાવવું | OpenAI સુસંગત | POST /embeddings |
| વૉઇસ સંશ્લેષણ તથા ટ્રાન્સક્રિપ્શન, વૉઇસ મેનેજમેન્ટ | OpenAI સુસંગત | /audio અને /voices હેઠળના પાથ |
| કૉલ કરી શકાય તેવા મોડેલ તપાસવા | બંને | GET /models |
OpenAI સુસંગત પાથ
OpenAI સુસંગત સ્પેસિફિકેશનનું base URL 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} | સંગ્રહિત પ્રતિસાદમાંથી એક મેળવે છે. |
| 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 | એમ્બેડિંગ બનાવે છે. સ્ટ્રીમિંગ સપોર્ટ કરતું નથી. |
| GET | /api/v2/aiservice/openai/v1/models | આ કી વડે કૉલ કરી શકાય તેવા મોડેલોની સૂચિ પરત કરે છે. |
| GET | /api/v2/aiservice/openai/v1/models/{modelId} | એક મોડેલ મેળવે છે. ઍક્સેસ ન કરી શકાય તેવા મોડેલ માટે 404 પરત કરે છે. |
chat/completions કૉલ કરવાનું ન્યૂનતમ ઉદાહરણ છે. sk-... ની જગ્યાએ API કી સ્ક્રીન પરથી મેળવેલી કી અને model માં મોડેલ પેજની ID દાખલ કરો.
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 સુસંગત માર્ગો
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 પરત મળે છે. |
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 હેડર્સને પ્રતિસાદમાં સામેલ કરવામાં આવે છે. |
| Product પસંદગી | audio/speech અને audio/transcriptions વિનંતીના મુખ્ય ભાગમાંના model દ્વારા Product પસંદ કરે છે. વૉઇસ અને ડાયગ્નોસ્ટિક માર્ગો માટે X-Product-Sku હેડર અથવા product_sku ક્વેરી જરૂરી છે. |
| વૉઇસ માલિકી | ક્લોન કરેલા અથવા નોંધાયેલા વૉઇસ તે બનાવનાર સત્તાધિકારીને સોંપવામાં આવે છે. અન્ય માલિકના વૉઇસથી સંશ્લેષણ કરવાનો અથવા તેને કાઢી નાખવાનો પ્રયાસ કરવામાં આવે તો 403 પરત કરવામાં આવે છે, અને GET /voices સૂચિમાં પણ માત્ર પોતાના માલિકીના વૉઇસ સામેલ હોય છે. |
| કદ અને સમય | વિનંતીની મહત્તમ મર્યાદા 28 MiB છે અને અપસ્ટ્રીમ કૉલ માટેની સમય મર્યાદા 5 મિનિટ છે. |
| provider ભીડ | અપસ્ટ્રીમમાં ભીડ હોય તો 409 જેમનું તેમ ફોરવર્ડ કરવામાં આવે છે, અને Retry-After ઉપલબ્ધ હોય તો તેનું મૂલ્ય પણ સાથે મોકલવામાં આવે છે. ગેટવે ફરી પ્રયાસ કરતું નથી કે કતારમાં મૂકતું નથી. |