Developer guide
Hızlı başlangıç
Hızlı başlangıç
Bu belge, CLEVI API anahtarının alınmasından ilk isteğin gönderilip yanıtın alınmasına kadar olan süreci kapsar. Tek bir adres ve tek bir anahtarla cip-5.5-im ve cip-5.5-mm çağrılır. İstek ve yanıtlar OpenAI Chat Completions biçimini izlediğinden, kullandığınız OpenAI SDK'sında yalnızca base_url ve api_key değerlerini değiştirmeniz yeterlidir. Anthropic SDK için yol ile embedding ve ses yolları API çağırma belgesinde yer alır.
API anahtarı alma
Anahtarı CLEVI Cloud konsolundaki API anahtarı ekranından alabilirsiniz. Aynı ekrandan anahtarı iptal edebilir ve kullanım kapsamını yönetebilirsiniz. Aşağıdaki adımları izleyerek isteklerde kullanacağınız bir anahtar elde edebilirsiniz.
- https://platform.clevi.net/account/login adresinden giriş yapın veya hesap oluşturun.
- https://clevi.app/cloud adresinden bir çalışma alanı ekleyin.
- https://clevi.app/cloud/keys adresine gidin.
- Yeni bir anahtar oluşturun ve değerini kopyalayın.
- Kopyaladığınız değeri bir ortam değişkenine kaydedin.
Bu belgedeki örneklerde sk-... yerine aldığınız anahtarı girin. Aşağıdaki komutla anahtarı bir ortam değişkenine kaydederseniz sonraki örnekleri olduğu gibi kopyalayıp çalıştırabilirsiniz.
export CLEVI_API_KEY="sk-..."Model seçme
İstek gövdesinin model alanına aşağıdaki adları olduğu gibi girin. İki model de aynı adresi ve aynı istek biçimini kullanır; metin ve görselleri girdi olarak alır.
- cip-5.5-im
- cip-5.5-mm
| Model kimliği | Ölçek | Girdi sınırı | Maksimum çıktı | Uygun görevler |
|---|---|---|---|---|
| cip-5.5-im | 360B | 256K | 64K | Hedefi ve kapsamı net olan işler. Yanıt hızına ve işleme kapasitesine öncelik verir. |
| cip-5.5-mm | 800B | 512K | 64K | Birden fazla materyal ve koşulun bir arada değerlendirilmesini gerektiren karmaşık işler. Uzun bağlam analizinde ve çok aşamalı ajanlarda kullanılır. |
Hesabınızdan gerçekten çağrılabilen modeller için temel alınacak kaynak, playground'daki model listesi ve GET /models yanıtıdır. Tüm model listesi ve model bazında izin verilen çağrılar model belgelerinde, tahmini düşülecek kredi miktarı ise konsolun kullanım ekranında yer alır.
POST /api/v2/aiservice/openai/v1/chat/completions
Mesaj dizisini ve model adını alır, modelin oluşturduğu mesajı choices dizisi içinde döndürür. Tam adres https://platform.clevi.net/api/v2/aiservice/openai/v1/chat/completions şeklindedir. İstek gövdesi application/json formatındadır ve kimlik doğrulama için Authorization başlığına Bearer ön ekiyle birlikte anahtar eklenir. Anahtarı X-API-Key başlığıyla da gönderebilirsiniz; her iki başlık da belirtilirse X-API-Key değeri öncelikli olarak uygulanır.
| Ad | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| model | string | Evet | cip-5.5-im veya cip-5.5-mm |
| messages | array | Evet | Konuşma mesajı nesnelerinden oluşan dizi. En az 1 adet |
| messages[].role | string | Evet | system · user · assistant değerlerinden biri |
| messages[].content | string | Evet | Mesaj gövdesi |
| stream | boolean | Hayır | true ise yanıtı Server-Sent Events parçaları olarak alır |
| max_tokens | integer | Hayır | Yanıtta oluşturulacak maksimum token sayısı |
| temperature | number | Hayır | Değer ne kadar yüksekse aynı istek için farklı yanıtlar alma olasılığı o kadar artar |
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);Yanıt örneğidir. id, created ve usage değerleri her istekte farklıdır.
{
"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 ile çağrı yapma
OpenAI SDK'sinin base_url değerini https://platform.clevi.net/api/v2/aiservice/openai/v1 olarak değiştirin ve api_key alanına CLEVI anahtarını ekleyin. Diğer çağrı kodunu olduğu gibi bırakın.
# 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);Akış olarak alma
İstek gövdesine stream değerini true olarak eklerseniz sunucu Server-Sent Events ile yanıt verir. İlk parça ile birlikte Content-Type: text/event-stream, Cache-Control: no-cache, X-Accel-Buffering: no başlıkları gönderilir ve sonraki her parçada data: satırında bir chat.completion.chunk nesnesi bulunur. Son satır data: [DONE] olur. Aşağıdaki Python ve TypeScript örnekleri önceki bölümde oluşturulan client'ı olduğu gibi kullanır.
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 ?? "");
}Parça örneğidir.
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]Akış sırasında bir hata oluşursa aynı hata JSON'ı data: satırı olarak gelir ve HTTP durum kodu da buna göre değişir.
Hata
Başarısız istekler nedeni HTTP durum koduyla bildirir. Upstream 4xx·5xx döndürürse bu kod olduğu gibi iletilir. Önce aşağıdaki tablodaki çözümü kontrol edin; aynı kod tekrarlanırsa istek zamanını, gönderilen gövdeyi ve X-Request-Id değerini kaydedin.
| Kod | Anlamı | Çözüm |
|---|---|---|
| 400 | İstek gövdesi biçime uygun değil | model ve messages alanlarının mevcut olduğunu ve JSON’un kapatıldığını kontrol edin |
| 401 | Anahtar yok, süresi dolmuş veya iptal edilmiş | API anahtarları ekranından anahtarın durumunu kontrol edin ve Authorization başlığının Bearer ile başladığını doğrulayın |
| 403 | Modele erişim izniniz yok, kullanım sınırını aştınız veya krediniz yetersiz | Nedeni error.message üzerinden kontrol edin. Sınırı Genel Bakış’taki Atanan kullanım sınırı bölümünden, bakiyeyi ve planı ise Plan ve krediler bölümünden görebilirsiniz |
| 404 | Model yok, bu anahtarla erişilemiyor veya yol mevcut değil | GET /models yanıtında model adının bulunduğunu ve adresin /api/v2/aiservice/openai/v1/chat/completions ile bittiğini kontrol edin |
| 429 | Yukarı akış sağlayıcısı hız sınırı uyguladı | Retry-After başlığı varsa belirtilen süre kadar bekleyin; yoksa yeniden deneme aralığını her seferinde iki katına çıkararak tekrar gönderin |
| 5xx | Ağ geçidinde veya yukarı akışta geçici bir hata oluştu | Yeniden deneme aralığını her seferinde iki katına çıkararak tekrar gönderin; sorun tekrarlanırsa Yardım ve İletişim üzerinden X-Request-Id ile bildirin |
402 döndürülmez. Yetersiz kredi ve kullanım sınırının aşılması 403 olarak döner. Hata gövdesi aşağıdaki biçimdedir ve neden error.message içinde yer alır.
{"error":{"message":"API key is required.","type":"invalid_request_error"}}İsteğe X-Request-Id başlığını eklerseniz iletişim kurduğunuzda bu değerle izleme yapılır. Göndermezseniz sunucu bir değer oluşturur.
Sonraki adımlar
Model adlarını ve parametreleri değiştirerek sonuçları karşılaştırmak için oyun alanını kullanın. Yeni anahtar oluşturmak veya anahtarı iptal etmek için API anahtarları ekranını kullanın. Sırada okuyabileceğiniz belgeler şunlardır.
- Modeller: Tüm model listesi, model bazında özellikler ve izin verilen çağrılar
- API çağrısı yapma: Anthropic uyumlu yol, yerleştirme ve ses yolları, akış kuralları
- Hata kodları: Tüm durum kodlarının tablosu ve yeniden deneme kuralları