Panduan Akses OpenAI API: Kompatibilitas Chat Completions dan Konfigurasi Kunci

Panggil model besar situs kami dengan cara yang kompatibel dengan OpenAI Chat Completions: alamat antarmuka, autentikasi, contoh curl dan SDK, field permintaan/respons, streaming, dan kode kesalahan umum.

I. Ikhtisar

Situs ini menyediakan akses yang kompatibel dengan format OpenAI Chat Completions (/v1/chat/completions). Untuk kode yang sudah berjalan di SDK resmi OpenAI atau klien yang kompatibel dengan OpenAI, Anda cukup mengarahkan alamat permintaan ke gateway OpenAI situs kami, ganti api_key dengan kunci sk- dari situs ini, dan cara pemanggilan lainnya tetap sama.

Model seri GPT yang tersedia saat ini mengacu pada Model Marketplace (seperti gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, dll.), daftar lengkap dan harga satuan dapat diperiksa melalui GET /v1/models.

II. Alamat Antarmuka (API Endpoint)

MetodePathKeterangan
POST/v1/chat/completionsPenyelesaian obrolan (non-streaming / streaming), badan permintaan adalah payload OpenAI
GET/v1/modelsDaftar 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, isi path sesuai dengan aslinya.

III. Cara Autentikasi

Authorization: Bearer sk-kunci_anda

Buat kunci yang diawali dengan sk- di "Pusat Pengguna → Kunci API". Menggunakan header autentikasi yang sama dengan OpenAI resmi, SDK akan secara otomatis menambahkan header Authorization.

IV. Memulai dengan Cepat

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.5",
    "messages": [
      {"role": "system", "content": "Anda adalah asisten yang 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.5",
    messages=[{"role": "user", "content": "Halo"}],
)
print(resp.choices[0].message.content)

Setelah mengatur base_url ke entri OpenAI pada tabel di atas dan mengganti api_key, metode pemanggilan lainnya benar-benar identik dengan SDK resmi.

V. Parameter Permintaan

FieldTipeWajibKeterangan
modelstringYaSlug model, misal gpt-5.5
messagesarrayYaDaftar pesan, elemen berupa {role, content}; nilai role: system / user / assistant
temperaturenumberTidakSuhu sampling, default 1.0
top_pnumberTidakSampling nukleus, default 1.0
max_tokensintTidakJumlah token output maksimum
streamboolTidakApakah menggunakan streaming, default false
stopstring / arrayTidakUrutan berhenti (stop sequence)
presence_penalty / frequency_penaltynumberTidakPenalti pengulangan, rentang -2~2

VI. Struktur Respons

{
  "id": "chatcmpl-123456",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "gpt-5.5",
  "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
  }
}
FieldKeterangan
idID unik untuk penyelesaian ini
choices[].messageBalasan asisten, content berisi teks
choices[].finish_reasonAlasan selesai: stop / length / content_filter
usage.prompt_tokensJumlah token input (dasar penagihan)
usage.completion_tokensJumlah token output (dasar penagihan)
usage.total_tokensTotal jumlah token

VII. Output Streaming

Setelah menambahkan "stream": true ke badan permintaan, sistem akan mengembalikan aliran SSE, 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] berarti aliran berakhir. OpenAI SDK akan menangani peristiwa ini secara otomatis setelah mengirim stream=True.

VIII. Kode Kesalahan Umum

Kode Status HTTPMaknaSaran Penanganan
400Parameter permintaan tidak valid (model tidak ada, messages kosong, dll.)Periksa field badan permintaan
401Kunci API tidak valid atau hilangPeriksa header Authorization dan format kunci
403Kunci dinonaktifkan, saldo tidak cukup, atau kunci tidak diotorisasi untuk model/rute iniLakukan pengisian ulang atau periksa otorisasi kunci
404Path atau model tidak ditemukanKonfirmasi base_url dan nama model
429Pemicu limit (Rate limit)Coba lagi dengan algoritma exponential backoff
500Kesalahan internal serverCoba lagi nanti, jika tetap异常 hubungi layanan pelanggan

Badan respons kesalahan diseragamkan dengan struktur {"code": kode_status, "message": "Keterangan kesalahan", "data": null}.

IX. Penjelasan Kompatibilitas

  • Mendukung OpenAI SDK (Python / Node.js, dll.) melalui kustomisasi base_url.
  • Mendukung berbagai klien yang kompatibel dengan OpenAI (LobeChat, ChatBox, NextChat, One API, dll.) dengan mengonfigurasi alamat antarmuka kustom.
  • Nama model mengacu pada slug yang dikembalikan oleh GET /v1/models.

Penjelasan Base URL: Situs ini menerima /v1beta/models/... dan /v1beta/v1beta/models/... (serta /v1/... dan /v1/v1/...), jadi apakah klien menambahkan /v1, /v1beta sendiri atau tidak, tidak akan mempengaruhi pemanggilan: Base URL dapat diisi dengan root domain atau alamat yang menyertakan /v1beta. ID model dapat dicari dan disalin di "ID Model" di sudut kanan atas halaman "Token" di konsol.