Panduan Akses API OpenAI: Kompatibilitas Chat Completions dan Konfigurasi Kunci
Panduan akses model besar menggunakan metode yang kompatibel dengan OpenAI Chat Completions: mencakup alamat antarmuka, autentikasi, contoh curl dan SDK, field request/response, streaming, serta kode error umum.
I. Ringkasan
Situs ini menyediakan akses kompatibel untuk OpenAI Chat Completions (/v1/chat/completions). Kode yang sudah berjalan di SDK resmi OpenAI atau klien yang kompatibel dengan OpenAI dapat digunakan di sini dengan cukup mengarahkan URL permintaan ke gateway OpenAI situs ini dan mengganti api_key dengan kunci sk- milik Anda. Cara pemanggilan lainnya tetap sama.
Model seri GPT yang tersedia saat ini mengacu pada model di pusat model kami (seperti gpt-5.4, gpt-5.5, gpt-5.4-mini, gpt-4o, dll.). Daftar lengkap dan harga satuan dapat diperiksa melalui GET /v1/models.
II. Alamat Antarmuka (Endpoint)
| Metode | Path | Keterangan |
|---|---|---|
| POST | /v1/chat/completions | Penyelesaian obrolan (non-streaming / streaming), body permintaan menggunakan payload OpenAI |
| GET | /v1/models | Daftar model dan harga satuan (tidak perlu autentikasi) |
Alamat Gateway: https://www.relay-api.com. Untuk pemanggilan yang kompatibel dengan OpenAI, silakan kirim permintaan ke POST https://www.relay-api.com/v1, dengan path yang sama seperti aslinya.
III. Cara Autentikasi
Authorization: Bearer sk-kunci-anda
Buat kunci yang dimulai dengan sk- di "Pusat Pengguna → API Key". Gunakan header autentikasi yang sama dengan OpenAI resmi; SDK akan menambahkan header Authorization secara otomatis.
IV. Panduan Memulai
4.1 curl (Non-streaming)
curl -X POST https://www.relay-api.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-kunci-anda" \
-d '{
"model": "gpt-5.4",
"messages": [
{"role": "system", "content": "Anda adalah asisten yang sangat membantu."},
{"role": "user", "content": "Perkenalkan diri Anda dalam tiga kalimat"}
],
"temperature": 0.7,
"max_tokens": 512
}'
4.2 OpenAI SDK (Python)
from openai import OpenAI
client = OpenAI(
base_url="https://www.relay-api.com/v1",
api_key="sk-kunci-anda",
)
resp = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Halo"}],
)
print(resp.choices[0].message.content)
Setelah mengatur base_url ke endpoint OpenAI di atas dan mengganti api_key, cara pemanggilan lainnya benar-benar identik dengan SDK resmi.
V. Parameter Permintaan
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
| model | string | Ya | Slug model, misalnya gpt-5.4 |
| messages | array | Ya | Daftar pesan, elemen berupa {role, content}; nilai role: system / user / assistant |
| temperature | number | Tidak | Suhu pengambilan sampel, default 1.0 |
| top_p | number | Tidak | Pengambilan sampel nukleus, default 1.0 |
| max_tokens | int | Tidak | Jumlah token output maksimum |
| stream | bool | Tidak | Apakah menggunakan streaming, default false |
| stop | string / array | Tidak | Urutan berhenti (stop sequences) |
| presence_penalty / frequency_penalty | number | Tidak | Penalti repetisi, rentang -2~2 |
VI. Struktur Respons
{
"id": "chatcmpl-123456",
"object": "chat.completion",
"created": 1710000000,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "Halo! Senang bertemu dengan Anda."},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 12,
"total_tokens": 30
}
}
| Field | Keterangan |
|---|---|
| id | ID unik untuk penyelesaian ini |
| choices[].message | Balasan asisten, content adalah konten teks |
| choices[].finish_reason | Alasan berhenti: stop / length / content_filter |
| usage.prompt_tokens | Jumlah token input (dasar penagihan) |
| usage.completion_tokens | Jumlah token output (dasar penagihan) |
| usage.total_tokens | Jumlah total token |
VII. Output Streaming
Setelah menambahkan "stream": true pada body permintaan, respons akan berupa stream SSE, di mana setiap baris data: adalah sebuah chunk:
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}]}
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"content": "Halo"}, "finish_reason": null}]}
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}
data: [DONE]
Klien dapat menggabungkan choices[0].delta.content dari setiap chunk untuk mendapatkan balasan lengkap; menerima [DONE] menandakan aliran selesai. SDK OpenAI akan menangani event ini secara otomatis jika stream=True diatur.
VIII. Kode Kesalahan Umum
| Status HTTP | Arti | Saran Penanganan |
|---|---|---|
| 400 | Parameter tidak valid (model tidak ada, messages kosong, dll.) | Periksa field body permintaan |
| 401 | API key tidak valid atau hilang | Periksa header Authorization dan format kunci |
| 403 | Kunci dinonaktifkan, saldo kurang, atau kunci tidak berwenang untuk model/rute ini | Lakukan pengisian saldo atau periksa otorisasi kunci |
| 404 | Path atau model tidak ditemukan | Konfirmasi base_url dan nama model |
| 429 | Limit terlampaui (rate limit) | Coba lagi setelah jeda eksponensial (exponential backoff) |
| 500 | Kesalahan internal server | Coba lagi nanti, hubungi layanan pelanggan jika masalah berlanjut |
Body respons kesalahan distandarisasi menjadi struktur {"code": status_code, "message": "pesan kesalahan", "data": null}.
IX. Catatan Kompatibilitas
- Mendukung SDK OpenAI (Python / Node.js, dll.) melalui kustomisasi
base_url. - Mendukung berbagai klien yang kompatibel dengan OpenAI (LobeChat, ChatBox, NextChat, One API, dll.) dengan mengonfigurasi URL antarmuka kustom.
- Nama model mengacu pada slug yang dikembalikan oleh
GET /v1/models.
