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 کلید صفحے سے حاصل کریں۔ اسی صفحے سے کلید منسوخ اور اس کے استعمال کا دائرہ کار منظم بھی کیا جا سکتا ہے۔ نیچے دیے گئے مراحل پر عمل کرنے سے آپ کو درخواستوں کے لیے ایک کلید مل جائے گی۔
- https://platform.clevi.net/account/login پر لاگ اِن کریں یا اکاؤنٹ بنائیں۔
- https://clevi.app/cloud پر ورک اسپیس شامل کریں۔
- https://clevi.app/cloud/keys پر جائیں۔
- نئی کلید حاصل کریں اور اس کی قدر کاپی کریں۔
- کاپی کی گئی قدر کو ماحولیاتی متغیر میں محفوظ کریں۔
اس دستاویز کی مثالوں میں sk-... کی جگہ حاصل کی گئی کلید درج کریں۔ نیچے دی گئی کمانڈ کے ذریعے اسے ماحولیاتی متغیر میں محفوظ کرنے سے آپ بعد کی مثالوں کو جوں کا توں کاپی کرکے چلا سکیں گے۔
export CLEVI_API_KEY="sk-..."ماڈل منتخب کریں
درخواست کے body کے model فیلڈ میں نیچے دیے گئے نام جوں کے توں درج کریں۔ دونوں ماڈل ایک ہی URL اور درخواست کا ایک ہی فارمیٹ استعمال کرتے ہیں، اور متن و تصاویر کو بطور input قبول کرتے ہیں۔
- cip-5.5-im
- cip-5.5-mm
| ماڈل ID | پیمانہ | input کی حد | زیادہ سے زیادہ output | موزوں کام |
|---|---|---|---|---|
| cip-5.5-im | 360B | 256K | 64K | واضح اہداف اور دائرہ کار والے کام۔ جواب کی رفتار اور throughput کو ترجیح دیتے ہیں۔ |
| cip-5.5-mm | 800B | 512K | 64K | متعدد مواد اور شرائط کو یکجا کرنے والے پیچیدہ کام۔ طویل سیاق و سباق کے تجزیے اور کثیر مرحلہ ایجنٹس کے لیے استعمال کریں۔ |
آپ کے اکاؤنٹ سے واقعی کال کیے جا سکنے والے ماڈلز کی بنیاد پلے گراؤنڈ میں موجود ماڈلز کی فہرست اور GET /models کے جواب پر ہے۔ مکمل ماڈل فہرست اور ہر ماڈل کے لیے مجاز کالز ماڈل دستاویز میں، جبکہ متوقع طور پر منہا ہونے والے کریڈٹس کنسول کے استعمال کے صفحے پر موجود ہیں۔
POST /api/v2/aiservice/openai/v1/chat/completions
پیغامات کی صف اور ماڈل کا نام لے کر، ماڈل کے تیار کردہ پیغام کو choices کی صف میں شامل کر کے واپس کرتا ہے۔ مکمل پتہ https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions ہے۔ درخواست کا باڈی application/json ہے، اور تصدیق کے لیے Authorization ہیڈر میں Bearer سابقہ اور کلید شامل کریں۔ آپ X-API-Key ہیڈر کے ذریعے بھی کلید بھیج سکتے ہیں، اور اگر دونوں ہیڈرز متعین کیے جائیں تو X-API-Key کی قدر کو ترجیح دی جائے گی۔
| نام | قسم | لازمی | وضاحت |
|---|---|---|---|
| model | string | ہاں | cip-5.5-im یا cip-5.5-mm |
| messages | array | ہاں | گفتگو کے پیغام آبجیکٹس کی صف۔ کم از کم 1 |
| messages[].role | string | ہاں | system · user · assistant میں سے ایک |
| messages[].content | string | ہاں | پیغام کا متن |
| stream | boolean | نہیں | true ہونے پر جواب کو Server-Sent Events کے حصوں میں تقسیم کر کے وصول کرتا ہے |
| max_tokens | integer | نہیں | جواب میں تیار کیے جانے والے ٹوکنز کی زیادہ سے زیادہ تعداد |
| temperature | number | نہیں | قدر جتنی زیادہ ہو گی، اسی درخواست پر مختلف جواب آنے کا امکان اتنا ہی زیادہ ہو گا |
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 محفوظ کر لیں۔
| کوڈ | مطلب | کارروائی |
|---|---|---|
| 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 سے مطابقت رکھنے والے راستے، ایمبیڈنگ اور آواز کے راستے، اسٹریمنگ کے قواعد
- خرابی کے کوڈز: تمام اسٹیٹس کوڈز کی جدول اور دوبارہ کوشش کے قواعد