Hızlı başlangıç
API, OpenAI ile uyumludur. Mevcut istemcinizde yalnızca adresi ve anahtarı değiştirmeniz yeterli.
- Adres:
__ORIGIN__/v1 - Kimlik doğrulama:
Authorization: Bearer <API anahtarınız> - Varsayılan model:
__MODEL__(tam liste:GET /v1/models)
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ç nokta | Açıklama |
|---|---|
POST /v1/chat/completions | Sohbet; stream: true ile akış desteklenir |
POST /v1/completions | Düz metin tamamlama |
POST /v1/embeddings | Metin vektörleri |
GET /v1/models | Kullanabileceğ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ık | Anlamı |
|---|---|
x-queue-wait-ms | İsteğin sırada beklediği süre |
x-ratelimit-remaining-requests | Bu dakika içinde kalan istek hakkı |
x-quota-remaining-tokens | Dönem içinde kalan token |
x-ratelimit-limit-requests | Paketinizin dakikalık istek limiti |
x-request-id | Destek taleplerinde belirtebileceğiniz istek kimliği |
Hata kodları
| HTTP | Kod | Ne yapmalı? |
|---|---|---|
| 401 | invalid_api_key | Anahtarı kontrol edin; iptal edilmiş olabilir |
| 403 | access_expired | Paket süresi dolmuş; uzatma için iletişime geçin |
| 404 | model_not_found | /v1/models listesindeki bir adı kullanın |
| 429 | rate_limit_exceeded | Retry-After süresi kadar bekleyip tekrar deneyin |
| 429 | insufficient_quota | Token kotası dolmuş; paket yükseltin |
| 503 | queue_full, queue_timeout | Sunucu yoğun; birkaç saniye sonra tekrar deneyin |