Hızlı başlangıç

API, OpenAI ile uyumludur. Mevcut istemcinizde yalnızca adresi ve anahtarı değiştirmeniz yeterli.

Python

from openai import OpenAI

client = OpenAI(base_url="__ORIGIN__/v1", api_key="ep-...")

yanit = client.chat.completions.create(
    model="__MODEL__",
    messages=[{"role": "user", "content": "Merhaba!"}],
)
print(yanit.choices[0].message.content)

Node.js

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "__ORIGIN__/v1", apiKey: process.env.API_KEY });

const stream = await client.chat.completions.create({
  model: "__MODEL__",
  messages: [{ role: "user", content: "Merhaba!" }],
  stream: true,
});
for await (const parca of stream) process.stdout.write(parca.choices[0]?.delta?.content ?? "");

curl (Linux, macOS, Git Bash)

curl __ORIGIN__/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "__MODEL__", "messages": [{"role": "user", "content": "Merhaba!"}]}'

Windows PowerShell

PowerShell, curl.exe'ye geçirilen metindeki çift tırnakları siler ve istek "geçerli bir JSON değil" hatasıyla reddedilir. Tırnakların önüne ters eğik çizgi koyun ya da Invoke-RestMethod kullanın.

curl.exe __ORIGIN__/v1/chat/completions `
  -H "Authorization: Bearer $env:API_KEY" `
  -H "Content-Type: application/json" `
  -d '{\"model\": \"__MODEL__\", \"messages\": [{\"role\": \"user\", \"content\": \"Merhaba!\"}]}'
$govde = @{
  model    = "__MODEL__"
  messages = @(@{ role = "user"; content = "Merhaba!" })
} | ConvertTo-Json -Depth 5

$yanit = Invoke-RestMethod __ORIGIN__/v1/chat/completions -Method Post `
  -Headers @{ Authorization = "Bearer $env:API_KEY" } `
  -ContentType "application/json; charset=utf-8" `
  -Body ([Text.Encoding]::UTF8.GetBytes($govde))

$yanit.choices[0].message.content

Uç noktalar

Uç noktaAçıklama
POST /v1/chat/completionsSohbet; stream: true ile akış desteklenir
POST /v1/completionsDüz metin tamamlama
POST /v1/embeddingsMetin vektörleri
GET /v1/modelsKullanabileceğiniz modeller

Limitler ve yanıt başlıkları

Paketinizin üç limiti vardır: eşzamanlı istek, dakikalık istek ve dönemlik token kotası. Eşzamanlı limitinizi aşan istekler reddedilmez, sıraya alınır.

BaşlıkAnlamı
x-queue-wait-msİsteğin sırada beklediği süre
x-ratelimit-remaining-requestsBu dakika içinde kalan istek hakkı
x-quota-remaining-tokensDönem içinde kalan token
x-ratelimit-limit-requestsPaketinizin dakikalık istek limiti
x-request-idDestek taleplerinde belirtebileceğiniz istek kimliği

Hata kodları

HTTPKodNe yapmalı?
401invalid_api_keyAnahtarı kontrol edin; iptal edilmiş olabilir
403access_expiredPaket süresi dolmuş; uzatma için iletişime geçin
404model_not_found/v1/models listesindeki bir adı kullanın
429rate_limit_exceededRetry-After süresi kadar bekleyip tekrar deneyin
429insufficient_quotaToken kotası dolmuş; paket yükseltin
503queue_full, queue_timeoutSunucu yoğun; birkaç saniye sonra tekrar deneyin