Artfical AI / API
API anahtarı alın tAI'yi Aç
Başlarken

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
AlanTürZorunluAçıklama
modelstringEvetModeller 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.
messagesarrayEvetŞ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.
streambooleanHayırVarsayılan false'tur. true olduğunda, yanıt tek bir JSON gövdesi yerine bir server-sent-events akışıdır; bkz. Aktarım.
toolsarrayHayırModelin ç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şitliHayırGö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:

RolAnlamı
systemKonuş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.
userKiş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ı.
toolKendi 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
  }
}
AlanAçıklama
idBu tamamlama için chatcmpl- önekli benzersiz bir tanımlayıcı.
choicesHer zaman tam olarak bir girdi içerir (index 0). tAI, tek bir istekten birden fazla aday tamamlama istemeyi desteklemez.
choices[].finish_reasonNormal, 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ı.
usageBu 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.