Panduan Akses API OpenAI: Kompatibilitas Chat Completions dan Konfigurasi Kunci

  • 发布时间
  • 语言id

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)

MetodePathKeterangan
POST/v1/chat/completionsPenyelesaian obrolan (non-streaming / streaming), body permintaan menggunakan 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, 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

FieldTipeWajibKeterangan
modelstringYaSlug model, misalnya gpt-5.4
messagesarrayYaDaftar pesan, elemen berupa {role, content}; nilai role: system / user / assistant
temperaturenumberTidakSuhu pengambilan sampel, default 1.0
top_pnumberTidakPengambilan sampel nukleus, default 1.0
max_tokensintTidakJumlah token output maksimum
streamboolTidakApakah menggunakan streaming, default false
stopstring / arrayTidakUrutan berhenti (stop sequences)
presence_penalty / frequency_penaltynumberTidakPenalti 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
  }
}
FieldKeterangan
idID unik untuk penyelesaian ini
choices[].messageBalasan asisten, content adalah konten teks
choices[].finish_reasonAlasan berhenti: stop / length / content_filter
usage.prompt_tokensJumlah token input (dasar penagihan)
usage.completion_tokensJumlah token output (dasar penagihan)
usage.total_tokensJumlah 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 HTTPArtiSaran Penanganan
400Parameter tidak valid (model tidak ada, messages kosong, dll.)Periksa field body permintaan
401API key tidak valid atau hilangPeriksa header Authorization dan format kunci
403Kunci dinonaktifkan, saldo kurang, atau kunci tidak berwenang untuk model/rute iniLakukan pengisian saldo atau periksa otorisasi kunci
404Path atau model tidak ditemukanKonfirmasi base_url dan nama model
429Limit terlampaui (rate limit)Coba lagi setelah jeda eksponensial (exponential backoff)
500Kesalahan internal serverCoba 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.