Developer guide
छिटो सुरु गर्नुहोस्
छिटो सुरु गर्नुहोस्
यो दस्तावेजमा CLEVI API कुञ्जी जारी गर्ने, पहिलो अनुरोध पठाउने र प्रतिक्रिया प्राप्त गर्ने प्रक्रियाबारे वर्णन गरिएको छ। एउटा URL र एउटा कुञ्जी प्रयोग गरेर cip-5.5-im र cip-5.5-mm लाई कल गर्न सकिन्छ। अनुरोध र प्रतिक्रियाले OpenAI Chat Completions ढाँचा पालना गर्ने भएकाले, तपाईंले प्रयोग गर्दै आएको OpenAI SDK मा base_url र api_key का दुई मान मात्र परिवर्तन गरे पुग्छ। Anthropic SDK का लागि मार्ग तथा embeddings र voice मार्गहरू 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-..."मोडेल छनोट गर्नुहोस्
अनुरोधको model फिल्डमा तलका नामहरू जस्ताको तस्तै राख्नुहोस्। दुवै मोडेलले एउटै URL र एउटै अनुरोध ढाँचा प्रयोग गर्छन् तथा इनपुटका रूपमा पाठ र छवि स्वीकार गर्छन्।
- cip-5.5-im
- cip-5.5-mm
| मोडेल ID | आकार | इनपुट सीमा | अधिकतम आउटपुट | उपयुक्त कार्य |
|---|---|---|---|---|
| cip-5.5-im | 360B | 256K | 64K | लक्ष्य र दायरा स्पष्ट भएका कार्यहरू। प्रतिक्रिया गति र थ्रुपुटलाई प्राथमिकता दिइन्छ। |
| 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 | हो | वार्तालाप सन्देश वस्तुहरूको एरे। न्यूनतम १ वटा |
| 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);स्ट्रिमिङमार्फत प्राप्त गर्ने
अनुरोधको body मा 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 फिर्ता गरेमा त्यही कोड जस्ताको तस्तै पठाइन्छ। तलको तालिकामा दिइएको उपाय पहिले जाँच गर्नुहोस्, र उही कोड दोहोरिएमा अनुरोधको समय, पठाइएको body, र 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-संगत पथ, एम्बेडिङ·आवाज पथ र स्ट्रिमिङ नियमहरू
- त्रुटि कोड: सम्पूर्ण स्थिति कोड तालिका र पुनः प्रयास नियमहरू
