Developer guide
ദ്രുതാരംഭം
ദ്രുതാരംഭം
ഈ പ്രമാണം CLEVI API കീ നേടുന്നതുമുതൽ ആദ്യ അഭ്യർത്ഥന അയച്ച് പ്രതികരണം സ്വീകരിക്കുന്നതുവരെയുള്ള കാര്യങ്ങൾ ഉൾക്കൊള്ളുന്നു. ഒരു വിലാസവും ഒരു കീയും ഉപയോഗിച്ച് cip-5.5-im, cip-5.5-mm എന്നിവ വിളിക്കാം. അഭ്യർത്ഥനകളും പ്രതികരണങ്ങളും OpenAI Chat Completions ഫോർമാറ്റ് പിന്തുടരുന്നതിനാൽ, നിങ്ങൾ ഉപയോഗിച്ചിരുന്ന OpenAI SDK-യിൽ base_url, api_key എന്നീ രണ്ട് മൂല്യങ്ങൾ മാത്രം മാറ്റിയാൽ മതി. Anthropic SDK-യ്ക്കുള്ള പാതകളും embedding, 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 ഫീൽഡിൽ താഴെക്കൊടുത്തിരിക്കുന്ന പേര് അതേപടി നൽകുക. രണ്ട് മോഡലുകളും ഒരേ വിലാസവും ഒരേ അഭ്യർത്ഥനാ ഫോർമാറ്റും ഉപയോഗിക്കുന്നു, കൂടാതെ ടെക്സ്റ്റും ചിത്രങ്ങളും ഇൻപുട്ടായി സ്വീകരിക്കുന്നു.
- 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 | അതെ | സംഭാഷണ സന്ദേശ ഒബ്ജക്റ്റുകളുടെ അറേ. കുറഞ്ഞത് 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-അനുയോജ്യമായ പാത, എംബെഡ്ഡിംഗ്·വോയ്സ് പാതകൾ, സ്ട്രീമിംഗ് നിയമങ്ങൾ
- പിശക് കോഡുകൾ: എല്ലാ സ്റ്റാറ്റസ് കോഡുകളുടെയും പട്ടികയും വീണ്ടും ശ്രമിക്കുന്നതിനുള്ള നിയമങ്ങളും
