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 कुञ्जी स्क्रिनबाट जारी गरिन्छ। यही स्क्रिनबाट कुञ्जी रद्द गर्ने र यसको प्रयोगको दायरा व्यवस्थापन गर्ने काम पनि गर्न सकिन्छ। तलका चरणहरू पालना गरेपछि तपाईंले अनुरोधमा प्रयोग गर्न मिल्ने एउटा कुञ्जी प्राप्त गर्नुहुनेछ।

  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 एरेमा राखी फर्काउँछ। पूर्ण ठेगाना 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होवार्तालाप सन्देश वस्तुहरूको एरे। न्यूनतम १ वटा
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);

स्ट्रिमिङमार्फत प्राप्त गर्ने

अनुरोधको 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 सुरक्षित राख्नुहोस्।

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

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

मेसिनबाट अनुवाद गरिएका भाषाहरूलाई चिन्ह लगाइएको छ। उपलब्धता प्रकाशित साइट बन्डलअनुसार हुन्छ।

१३६ भाषा

सिफारिस गरिएको

1

पूर्वी एशिया

7

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

11

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

18

केन्द्रीय एशिया

5

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

10

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

16

संयुक्त अधिराज्य र आयरल्याण्ड

4

उत्तरी युरोप

10

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

14

पूर्वी युरोप

5

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

8

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

9

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

8

अमेरिकास

5

ओसनिया

5