Developer guide

त्वरित शुरुआत

त्वरित शुरुआत

यह दस्तावेज़ CLEVI API कुंजी प्राप्त करने से लेकर अपना पहला अनुरोध भेजने और प्रतिक्रिया प्राप्त करने तक की प्रक्रिया को कवर करता है। एक URL और एक कुंजी से cip-5.5-im और cip-5.5-mm को कॉल किया जाता है, और अनुरोध व प्रतिक्रियाएँ OpenAI Chat Completions प्रारूप का पालन करती हैं। इसलिए, आपके द्वारा उपयोग किए जा रहे OpenAI SDK में केवल base_url और api_key के दो मान बदलने होंगे। Anthropic SDK के लिए पथ और एम्बेडिंग व वॉइस पथ API कॉल करना दस्तावेज़ में दिए गए हैं।

API कुंजी प्राप्त करना

कुंजी CLEVI Cloud कंसोल के API कुंजी पृष्ठ से प्राप्त की जाती है। इसी पृष्ठ से आप कुंजी रद्द कर सकते हैं और उसके उपयोग का दायरा प्रबंधित कर सकते हैं। नीचे दिए गए क्रम का पालन करने पर आपको अनुरोधों के लिए उपयोग करने योग्य एक कुंजी मिल जाएगी।

  1. https://platform.clevi.net/account/login पर लॉग इन करें या खाता बनाएँ।
  2. https://clevi.app/cloud पर वर्कस्पेस जोड़ें।
  3. https://clevi.app/cloud/keys पर जाएँ।
  4. नई कुंजी जारी करें और उसका मान कॉपी करें।
  5. कॉपी किए गए मान को पर्यावरण चर में संग्रहीत करें।

इस दस्तावेज़ के उदाहरणों में sk-... की जगह प्राप्त की गई कुंजी डालें। नीचे दिए गए कमांड से इसे पर्यावरण चर में संग्रहीत करने पर आप बाद के उदाहरणों को सीधे कॉपी करके चला सकते हैं।

export CLEVI_API_KEY="sk-..."

मॉडल चुनना

अनुरोध के मुख्य भाग के model फ़ील्ड में नीचे दिए गए नामों को हूबहू डालें। दोनों मॉडल एक ही URL और एक ही अनुरोध प्रारूप का उपयोग करते हैं तथा इनपुट के रूप में टेक्स्ट और छवियाँ स्वीकार करते हैं।

  • cip-5.5-im
  • cip-5.5-mm
मॉडल IDआकारइनपुट सीमाअधिकतम आउटपुटउपयुक्त कार्य
cip-5.5-im360B256K64Kऐसे कार्य जिनके लक्ष्य और दायरे स्पष्ट हों। प्रतिक्रिया गति और थ्रूपुट को प्राथमिकता दी जाती है।
cip-5.5-mm800B512K64Kऐसे जटिल कार्य जिनमें कई सामग्रियों और शर्तों का समेकन आवश्यक हो। लंबे संदर्भ के विश्लेषण और बहु-चरणीय एजेंटों के लिए उपयोग करें।

आपके खाते से वास्तव में कॉल किए जा सकने वाले मॉडल का आधार प्लेग्राउंड में मॉडल सूची और GET /models की प्रतिक्रिया है। पूरी मॉडल सूची और प्रत्येक मॉडल के लिए अनुमत कॉल मॉडल दस्तावेज़ में दिए गए हैं, जबकि अपेक्षित कटने वाले क्रेडिट की मात्रा कंसोल के उपयोग पृष्ठ पर उपलब्ध है।

POST /api/v2/aiservice/openai/v1/chat/completions

संदेशों की सरणी और मॉडल का नाम लेकर, मॉडल द्वारा जनरेट किए गए संदेशों को choices सरणी में शामिल करके लौटाता है। पूरा URL https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions है। अनुरोध का मुख्य भाग application/json है, और प्रमाणीकरण के लिए Authorization हेडर में Bearer उपसर्ग और कुंजी भेजी जाती है। कुंजी X-API-Key हेडर के माध्यम से भी भेजी जा सकती है; यदि दोनों हेडर निर्दिष्ट किए जाएँ, तो X-API-Key का मान प्राथमिकता से लागू होता है।

अनुरोध पैरामीटर
नामप्रारूपआवश्यकविवरण
modelstringहाँcip-5.5-im या cip-5.5-mm
messagesarrayहाँसंवाद संदेश ऑब्जेक्ट की सरणी। न्यूनतम 1
messages[].rolestringहाँsystem · user · assistant में से एक
messages[].contentstringहाँसंदेश का मुख्य भाग
streambooleanनहींtrue होने पर प्रतिक्रिया को Server-Sent Events खंडों में विभाजित करके प्राप्त किया जाता है
max_tokensintegerनहींप्रतिक्रिया में जनरेट किए जाने वाले टोकनों की अधिकतम संख्या
temperaturenumberनहींमान जितना अधिक होगा, उसी अनुरोध पर अलग-अलग प्रतिक्रियाएँ आने की संभावना उतनी ही अधिक होगी
curl https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions \
  -H "Authorization: Bearer $CLEVI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cip-5.5-im",
    "messages": [
      {"role": "user", "content": "CLEVI API를 한 문장으로 설명해 줘."}
    ]
  }'
import os
import requests

url = "https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions"

response = requests.post(
    url,
    headers={"Authorization": f"Bearer {os.environ['CLEVI_API_KEY']}"},
    json={
        "model": "cip-5.5-im",
        "messages": [{"role": "user", "content": "CLEVI API를 한 문장으로 설명해 줘."}],
    },
    timeout=60,
)

print(response.json()["choices"][0]["message"]["content"])
const url =
  "https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions";

const response = await fetch(url, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CLEVI_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "cip-5.5-im",
    messages: [{ role: "user", content: "CLEVI API를 한 문장으로 설명해 줘." }],
  }),
});

const data = await response.json();
console.log(data.choices[0].message.content);

प्रतिक्रिया का उदाहरण है। id, created और usage के मान प्रत्येक अनुरोध के लिए अलग-अलग होते हैं।

{
  "id": "chatcmpl-3f0a9c72",
  "object": "chat.completion",
  "created": 1755500000,
  "model": "cip-5.5-im",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "CLEVI API는 주소 하나로 여러 모델을 호출하는 채팅 완료 API입니다."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 19,
    "total_tokens": 40
  }
}

OpenAI SDK से कॉल करना

OpenAI SDK के base_url को https://platform.clevi.net/api/v2/aiservice/openai/v1 में बदलें और api_key में CLEVI कुंजी डालें। बाकी कॉल कोड को अपरिवर्तित रखें।

# pip install openai
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["CLEVI_API_KEY"],
    base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)

completion = client.chat.completions.create(
    model="cip-5.5-mm",
    messages=[{"role": "user", "content": "CLEVI API를 한 문장으로 설명해 줘."}],
)

print(completion.choices[0].message.content)
// npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.CLEVI_API_KEY,
  baseURL: "https://platform.clevi.net/api/v2/aiservice/openai/v1",
});

const completion = await client.chat.completions.create({
  model: "cip-5.5-mm",
  messages: [{ role: "user", content: "CLEVI API를 한 문장으로 설명해 줘." }],
});

console.log(completion.choices[0].message.content);

स्ट्रीमिंग के माध्यम से प्राप्त करना

अनुरोध के मुख्य भाग में stream को true पर सेट करने पर सर्वर Server-Sent Events के रूप में प्रतिक्रिया देता है। पहले खंड के साथ Content-Type: text/event-stream, Cache-Control: no-cache, X-Accel-Buffering: no हेडर भेजे जाते हैं, और इसके बाद हर खंड में data: पंक्ति में chat.completion.chunk ऑब्जेक्ट शामिल होता है। अंतिम पंक्ति data: [DONE] होती है। नीचे दिए गए Python और TypeScript उदाहरण पिछले अनुभाग में बनाए गए client का ही उपयोग करते हैं।

curl -N https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions \
  -H "Authorization: Bearer $CLEVI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cip-5.5-im",
    "messages": [{"role": "user", "content": "CLEVI API를 한 문장으로 설명해 줘."}],
    "stream": true
  }'
stream = client.chat.completions.create(
    model="cip-5.5-im",
    messages=[{"role": "user", "content": "CLEVI API를 한 문장으로 설명해 줘."}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="")
const stream = await client.chat.completions.create({
  model: "cip-5.5-im",
  messages: [{ role: "user", content: "CLEVI API를 한 문장으로 설명해 줘." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

यह खंड का एक उदाहरण है।

data: {"id":"chatcmpl-3f0a9c72","object":"chat.completion.chunk","model":"cip-5.5-im","choices":[{"index":0,"delta":{"content":"CLEVI"},"finish_reason":null}]}

data: {"id":"chatcmpl-3f0a9c72","object":"chat.completion.chunk","model":"cip-5.5-im","choices":[{"index":0,"delta":{"content":" API는"},"finish_reason":null}]}

data: {"id":"chatcmpl-3f0a9c72","object":"chat.completion.chunk","model":"cip-5.5-im","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

स्ट्रीमिंग के दौरान कोई त्रुटि होने पर वही त्रुटि JSON एक data: पंक्ति के रूप में आती है और HTTP स्थिति कोड भी बदल जाता है।

त्रुटि

विफल अनुरोध का कारण HTTP स्थिति कोड से पता चलता है। यदि अपस्ट्रीम 4xx·5xx लौटाता है, तो वही कोड आगे भेजा जाता है। पहले नीचे दी गई तालिका में दिए गए समाधान की जाँच करें और यदि वही कोड बार-बार आता है, तो अनुरोध का समय, भेजा गया मुख्य भाग और X-Request-Id सुरक्षित रखें।

HTTP स्थिति कोड
कोडअर्थसमाधान
400अनुरोध का मुख्य भाग निर्धारित प्रारूप के अनुरूप नहीं हैजाँचें कि model और messages मौजूद हैं और JSON बंद है
401कुंजी मौजूद नहीं है या समाप्त हो चुकी अथवा निरस्त की जा चुकी हैAPI कुंजी स्क्रीन पर कुंजी की स्थिति जाँचें और देखें कि Authorization हेडर Bearer से शुरू होता है
403मॉडल तक पहुँच की अनुमति नहीं है, उपयोग सीमा पार हो गई है, या क्रेडिट अपर्याप्त हैंकारण जानने के लिए error.message जाँचें। सीमा की जानकारी अवलोकन में आवंटित उपयोग सीमा से, और शेष राशि व प्लान की जानकारी प्लान और क्रेडिट से देखें
404मॉडल मौजूद नहीं है, इस कुंजी से उस तक पहुँच नहीं है, या पथ मौजूद नहीं हैजाँचें कि GET /models के प्रत्युत्तर में मॉडल का नाम मौजूद है और पता /api/v2/aiservice/openai/v1/chat/completions पर समाप्त होता है
429अपस्ट्रीम प्रदाता ने गति सीमा लागू की हैयदि Retry-After हेडर मौजूद है, तो उतने समय तक प्रतीक्षा करें; यदि नहीं है, तो पुनः प्रयास के बीच का अंतराल हर बार दोगुना करके अनुरोध फिर भेजें
5xxगेटवे या अपस्ट्रीम में अस्थायी त्रुटि हैपुनः प्रयास के बीच का अंतराल हर बार दोगुना करके अनुरोध फिर भेजें और समस्या दोहराए जाने पर सहायता और संपर्क के माध्यम से X-Request-Id के साथ सूचित करें

402 लौटाया नहीं जाता। क्रेडिट की कमी और उपयोग सीमा पार होने की स्थिति 403 के रूप में आती है। त्रुटि का मुख्य भाग नीचे दिए गए प्रारूप में होता है और कारण error.message में शामिल होता है।

{"error":{"message":"API key is required.","type":"invalid_request_error"}}

अनुरोध में X-Request-Id हेडर शामिल करने पर, संपर्क करते समय उसी मान से अनुरेखण किया जा सकता है। यदि इसे नहीं भेजा जाता है, तो सर्वर इसे जारी करता है।

अगले चरण

मॉडल के नाम और पैरामीटर बदलकर परिणामों की तुलना प्लेग्राउंड में करें। नई कुंजी बनाना या कुंजी निरस्त करना API कुंजी स्क्रीन पर करें। आगे पढ़ने के लिए दस्तावेज़ ये हैं।

  • मॉडल: मॉडलों की पूरी सूची, प्रत्येक मॉडल की विशिष्टताएँ और अनुमत कॉल
  • API कॉल करना: Anthropic-संगत पथ, एम्बेडिंग और वॉइस पथ, स्ट्रीमिंग नियम
  • त्रुटि कोड: सभी स्थिति कोड की तालिका और पुनः प्रयास के नियम

प्लेग्राउंड खोलें

API कुंजियाँ प्रबंधित करें

CLEVI

भाषा और क्षेत्र

मशीन-अनुवादित भाषाओं पर चिह्न लगा है। उपलब्धता प्रकाशित साइट बंडल के अनुसार है।

136 भाषाएँ

अनुशंसित

1

पूर्वी एशिया

7

दक्षिण-पूर्व एशिया

11

दक्षिणी एशिया

18

मध्य एशिया

5

मध्य पूर्व और काकेशस

10

पश्चिमी यूरोप और दक्षिणी यूरोप

16

यूनाइटेड किंगडम और आयरलैंड

4

उत्तरी यूरोप

10

मध्य यूरोप और बाल्कन

14

पूर्वी यूरोप

5

पूर्वी अफ़्रीका

8

पश्चिमी अफ़्रीका और मध्य अफ़्रीका

9

दक्षिणी अफ़्रीका

8

अमेरिकाज़

5

ओशिआनिया

5