> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a chat completion

Verilen sohbet konuşması için bir model yanıtı isteği gönderir. Hem akış hem de akış dışı modları destekler. OpenAI Chat Completions API formatıyla uyumludur.

## Kimlik Doğrulama

<ParamField header="Authorization" type="string" required>
  Bearer token. Authorization başlığında API anahtarınızı bearer token olarak kullanın.

  Format: `Bearer <SUNRA_KEY>`
</ParamField>

## İstek

Bu endpoint bir JSON nesnesi bekler.

<ParamField body="model" type="string" required>
  Tamamlama için kullanılacak model. Mevcut modelleri [sunra.ai/models](https://sunra.ai/models) adresinde inceleyin.
</ParamField>

<ParamField body="messages" type="object[]" required>
  Konuşma için mesaj listesi.

  <Expandable title="özellikler">
    <ParamField body="role" type="string" required>
      Mesaj yazarının rolü. Desteklenen değerler: `system`, `user`, `assistant`.
    </ParamField>

    <ParamField body="content" type="string" required>
      Mesajın içeriği.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="stream" type="boolean" default={false}>
  `true` olarak ayarlanırsa, kısmi mesaj deltaları server-sent events (SSE) olarak gönderilir.
</ParamField>

<ParamField body="max_tokens" type="integer">
  Tamamlamada üretilecek maksimum token sayısı.
</ParamField>

<ParamField body="temperature" type="number">
  0 ile 2 arasında örnekleme sıcaklığı. 0.8 gibi yüksek değerler çıktıyı daha rastgele yapar, 0.2 gibi düşük değerler daha odaklı ve belirleyici yapar.
</ParamField>

<ParamField body="top_p" type="number">
  Çekirdek örnekleme parametresi (0-1). Modelin top\_p olasılık kütlesine sahip tokenleri değerlendirdiği, sıcaklık örneklemesine bir alternatif.
</ParamField>

<ParamField body="frequency_penalty" type="number">
  -2.0 ile 2.0 arasında bir sayı. Pozitif değerler, yeni tokenleri metindeki mevcut sıklıklarına göre cezalandırarak modelin aynı satırı kelimesi kelimesine tekrarlama olasılığını azaltır.
</ParamField>

<ParamField body="presence_penalty" type="number">
  -2.0 ile 2.0 arasında bir sayı. Pozitif değerler, yeni tokenleri metinde daha önce görünüp görünmediklerine göre cezalandırarak modelin yeni konular hakkında konuşma olasılığını artırır.
</ParamField>

<ParamField body="stop" type="string | string[]">
  API'nin daha fazla token üretmeyi durduracağı en fazla 4 dizi.
</ParamField>

## Yanıt

Başarılı sohbet tamamlama yanıtı.

<ResponseField name="id" type="string">
  Benzersiz tamamlama tanımlayıcısı.
</ResponseField>

<ResponseField name="object" type="string">
  Nesne türü. Her zaman `chat.completion`.
</ResponseField>

<ResponseField name="created" type="integer">
  Oluşturulma Unix zaman damgası.
</ResponseField>

<ResponseField name="model" type="string">
  Tamamlama için kullanılan model.
</ResponseField>

<ResponseField name="choices" type="object[]">
  Tamamlama seçeneklerinin listesi.

  <Expandable title="özellikler">
    <ResponseField name="index" type="integer">
      Listedeki seçeneğin dizini.
    </ResponseField>

    <ResponseField name="message" type="object">
      Üretilen mesaj.

      <Expandable title="özellikler">
        <ResponseField name="role" type="string">
          Mesaj yazarının rolü. Her zaman `assistant`.
        </ResponseField>

        <ResponseField name="content" type="string">
          Mesajın içeriği.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="finish_reason" type="string">
      Modelin üretmeyi durdurma nedeni. `stop`, `length` veya `content_filter` olabilir.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="usage" type="object">
  Token kullanım istatistikleri.

  <Expandable title="özellikler">
    <ResponseField name="prompt_tokens" type="integer">
      İstemdeki token sayısı.
    </ResponseField>

    <ResponseField name="completion_tokens" type="integer">
      Üretilen tamamlamadaki token sayısı.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Kullanılan toplam token sayısı (istem + tamamlama).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api-llm.sunra.ai/v1/chat/completions \
    -H "Authorization: Bearer <SUNRA_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "openai/gpt-4o",
      "messages": [
        {
          "role": "system",
          "content": "You are a helpful assistant."
        },
        {
          "role": "user",
          "content": "What is the capital of France?"
        }
      ]
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-llm.sunra.ai/v1/chat/completions",
      headers={
          "Authorization": "Bearer <SUNRA_KEY>",
          "Content-Type": "application/json"
      },
      json={
          "model": "openai/gpt-4o",
          "messages": [
              {"role": "system", "content": "You are a helpful assistant."},
              {"role": "user", "content": "What is the capital of France?"}
          ]
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api-llm.sunra.ai/v1/chat/completions", {
    method: "POST",
    headers: {
      "Authorization": "Bearer <SUNRA_KEY>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "openai/gpt-4o",
      messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "What is the capital of France?" }
      ]
    })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677652288,
    "model": "openai/gpt-4o",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "The capital of France is Paris."
        },
        "finish_reason": "stop"
      }
    ],
    "system_fingerprint": "fp_44709d6fcb",
    "usage": {
      "prompt_tokens": 25,
      "completion_tokens": 8,
      "total_tokens": 33
    }
  }
  ```
</ResponseExample>
