Chat Completions
Metin üretmenin ana yoludur: sohbet, soru-cevap, özetleme, araç çağırma ve görsel anlama hep bu uç noktadan geçer.
POST/v1/chat/completions
İstek parametreleri
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
model | string | ✓ | Model adı (örn. verinova) |
messages | dizi | ✓ | Sohbet mesajları (aşağıya bakın) |
stream | boolean | true ise SSE akışı döner | |
stream_options | obje | { "include_usage": true } ile akışta token bilgisi | |
max_tokens | integer | Üretilecek azami token | |
max_completion_tokens | integer | max_tokens'ın yeni adı | |
temperature | number | Yaratıcılık (0–2). Düşük = tutarlı | |
top_p | number | Çekirdek örnekleme | |
tools | dizi | Modelin çağırabileceği fonksiyonlar | |
tool_choice | string/obje | Araç seçim davranışı | |
response_format | obje | { "type": "json_object" } veya json_schema | |
stop | string/dizi | Durdurma dizileri | |
frequency_penalty / presence_penalty | number | Tekrar cezaları | |
seed | number | Tekrarlanabilirlik için | |
user | string | Son kullanıcı tanımlayıcısı |
messages öğesi
| Alan | Tip | Açıklama |
|---|---|---|
role | string | system, user veya assistant |
content | string | dizi | Düz metin veya çok parçalı içerik (metin + görsel) |
tool_calls | dizi | (assistant) Model tarafından istenen araç çağrıları |
tool_call_id | string | (tool) Hangi araç çağrısına yanıt |
Temel örnek
bash
curl https://app.qevron.ai/v1/chat/completions \
-H "Authorization: Bearer $QEVRON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "verinova",
"messages": [
{ "role": "system", "content": "Sen yardımcı bir asistansın." },
{ "role": "user", "content": "Python'\''da bir listeyi nasıl ters çeviririm?" }
]
}'python
resp = client.chat.completions.create(
model="verinova",
messages=[
{"role": "system", "content": "Sen yardımcı bir asistansın."},
{"role": "user", "content": "Python'da bir listeyi nasıl ters çeviririm?"},
],
)
print(resp.choices[0].message.content)javascript
const resp = await client.chat.completions.create({
model: "verinova",
messages: [
{ role: "system", content: "Sen yardımcı bir asistansın." },
{ role: "user", content: "Python'da bir listeyi nasıl ters çeviririm?" },
],
});
console.log(resp.choices[0].message.content);Yanıt
json
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1716200000,
"model": "verinova",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "list.reverse() ile yerinde, veya list[::-1] ile yeni liste olarak..."
},
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 31, "completion_tokens": 42, "total_tokens": 73 }
}| Alan | Açıklama |
|---|---|
choices[].message.content | Üretilen yanıt metni |
choices[].finish_reason | stop, length, tool_calls, content_filter |
usage | Token kullanımı |
Akış (Streaming)
"stream": true ekleyin; yanıt SSE parçaları olarak gelir. Ayrıntı: Akış.
Görsel anlama (Vision)
Görsel destekleyen modellerde (örn. spook-vision) content'i çok parçalı gönderin:
json
{
"model": "spook-vision",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Bu görselde ne var?" },
{ "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,..." } }
]
}
]
}image_url.url bir genel URL veya data: base64 olabilir. Tam rehber: Görsel Anlama.
Araç çağırma (Tools)
json
{
"model": "verinova",
"messages": [{ "role": "user", "content": "İstanbul'da hava nasıl?" }],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Bir şehrin hava durumunu getirir",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
]
}Model bir aracı çağırmak isterse yanıtın choices[0].message.tool_calls alanı dolar; siz fonksiyonu çalıştırıp sonucu role: "tool" mesajı olarak geri gönderirsiniz.
JSON çıktı
json
"response_format": { "type": "json_object" }veya şema zorunlu kılmak için:
json
"response_format": {
"type": "json_schema",
"json_schema": { "name": "kisi", "schema": { "type": "object", "properties": { "ad": {"type":"string"} } } }
}