Sohbet Tamamlamaları
POST /v1/chat/completions, her şeyi yapan tek endpoint'tir: tek turlu sorular, çok turlu konuşmalar, araç çağrısı ve görsel girişi; engelleyen (blocking) ya da akış (stream) hâlinde.
İstek
POST https://api.artfical.com/v1/chat/completions
Authorization: Bearer tai-sk-...
Content-Type: application/json
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| model | string | Evet | Modeller sayfasında listelenen model ID'lerinden biri, örn. "tai-4.1". Tanınmayan bir değer, herhangi bir üretim gerçekleşmeden önce 400 ile reddedilir. |
| messages | array | Evet | Şimdiye kadarki konuşma, en eskiden en yeniye doğru. Her girdinin yapısı için aşağıdaki Mesajlar bölümüne bakın. |
| stream | boolean | Hayır | Varsayılan false'tur. true olduğunda, yanıt tek bir JSON gövdesi yerine bir server-sent-events akışıdır; bkz. Aktarım. |
| tools | array | Hayır | Modelin çağırmayı seçebileceği, OpenAI biçiminde fonksiyon araç tanımları. Bkz. Araç Çağrısı. |
| temperature, top_p, presence_penalty, frequency_penalty, seed, stop | çeşitli | Hayır | Gönderildiği gibi iletilen örnekleme kontrolleri. Kabul edilen aralıklar için Örnekleme Parametreleri'ne bakın. |
Mesajlar
messages içindeki her girdinin bir role'ü ve bir content'i vardır. Dört rol tanınır:
| Rol | Anlamı |
|---|---|
| system | Konuşma için arka plan talimatları. Birden fazla system mesajı varsa, sırayla birleştirilir. Bir system mesajı tAI'nin kendi temel kimliğini ve davranış kurallarını asla geçersiz kılmaz; konuşmanın bağlamına eklenir, tAI'nin temelde ne olduğuna değil. |
| user | Kişinin (ya da onun adına uygulamanızın) söylediği bir şey. |
| assistant | Önceki bir model yanıtı. Konuşma geçmişini gönderirken önceki assistant mesajlarını dahil edin, böylece model yalnızca son kullanıcı mesajını değil, tüm karşılıklı geçmişi görür. Bir assistant mesajı ayrıca tool_calls taşıyabilir; bkz. Araç Çağrısı. |
| tool | Kendi kodunuzun çalıştırdığı bir araç çağrısının sonucu, tool_call_id ile çağrıya bağlanır. Bkz. Araç Çağrısı. |
Düz metin bir tur için content yalnızca bir string'dir:
{"role": "user", "content": "İstanbul'da bugün hava nasıl olur sence?"}
Metinle birlikte bir görsel eklemek için content, düz bir string yerine tipli parçalardan oluşan bir dizi hâline gelir; kesin yapı ve bunu hangi modellerin kabul ettiği için Görseller'e bakın.
Yanıt (streaming olmadan)
"stream": false ile (varsayılan), yanıt, üretim tamamlandığında bir kez döndürülen tek bir JSON nesnesidir:
{
"id": "chatcmpl-817c002145ac47feb83a0006c58ff43b",
"object": "chat.completion",
"created": 1788961617,
"model": "tai-4.1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Merhaba! Ben tAI, size nasıl yardımcı olabilirim?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1303,
"completion_tokens": 232,
"total_tokens": 1535
}
}
| Alan | Açıklama |
|---|---|
| id | Bu tamamlama için chatcmpl- önekli benzersiz bir tanımlayıcı. |
| choices | Her zaman tam olarak bir girdi içerir (index 0). tAI, tek bir istekten birden fazla aday tamamlama istemeyi desteklemez. |
| choices[].finish_reason | Normal, tamamlanmış bir yanıt için "stop", ya da model doğrudan yanıtlamak yerine bir veya daha fazla aracı çağırmak istediğinde "tool_calls". Bkz. Araç Çağrısı. |
| usage | Bu istek için token sayıları. completion_tokens, herhangi bir max_tokens tarzı üst sınırdan bağımsız olarak modelin fiilen ürettiğini yansıtır. |
Tam bir konuşma
Her istekte tüm geçmişi dahil edin; API durumsuzdur (stateless) ve önceki çağrılara dair kendi başına bir hafızası yoktur. Her istek, yalnızca kendisine gönderdiğiniz bağlamla tek başına ele alınır.
{
"model": "tai-4.1",
"messages": [
{"role": "system", "content": "Kısa ve net cevaplar ver."},
{"role": "user", "content": "3 çarpı 4 kaç eder?"},
{"role": "assistant", "content": "12."},
{"role": "user", "content": "Peki onu 2'ye böl."}
]
}
Yanıt uzunluğu
Şu anda bir yanıtın kaç token içerebileceğine dair istemci tarafından ayarlanabilen bir üst sınır yoktur; her modelin o model için ayarlanmış kendi dahili üst sınırı vardır. Bir isteğin uzun sürmek yerine hızlıca başarısız olmasını istiyorsanız, en güvenilir yöntem stop dizileridir (bkz. Örnekleme Parametreleri) ya da doğrudan promptun kendisinde kısalık istemektir.