Chat completions

Struktur permintaan/respons, streaming, dan endpoint padanannya pada protokol Anthropic dan Gemini.

Chat completion adalah endpoint yang paling banyak dipakai: kirim daftar pesan ke model dan dapatkan balasan yang dihasilkan. Pintu masuk utama platform adalah protokol kompatibel OpenAI; protokol Anthropic dan Gemini merupakan padanan yang isomorfik.

Bentuk permintaan (kompatibel OpenAI)

POST {base}/chat/completions — autentikasi di Autentikasi:

{
  "model": "your-model",
  "messages": [
    {"role": "system", "content": "You are a support assistant."},
    {"role": "user", "content": "Where is my order?"},
    {"role": "assistant", "content": "Sure, may I have the order number?"},
    {"role": "user", "content": "A1024"}
  ],
  "temperature": 0.7,
  "max_tokens": 1024,
  "stream": false
}
  • messages adalah riwayat percakapan yang berurutan; role bernilai system / user / assistant. Untuk percakapan multi-giliran, klien menggabungkan seluruh riwayat dan mengirimkannya ulang setiap kali;
  • temperature yang lebih tinggi berarti keluaran lebih bervariasi (umumnya 0–1); max_tokens membatasi panjang balasan;
  • Streaming: dengan "stream": true respons dikirim secara bertahap melalui SSE (choices[0].delta) — ideal untuk menampilkan teks sambil dihasilkan. SDK resmi: berikan stream=True lalu iterasi.

Bentuk respons

Kolom penting dari respons non-streaming:

{
  "choices": [
    {
      "message": {"role": "assistant", "content": "..."},
      "finish_reason": "stop"
    }
  ],
  "usage": {"prompt_tokens": 58, "completion_tokens": 132, "total_tokens": 190}
}
  • choices[0].message.content memuat balasan; finish_reason stop berarti selesai secara alami, length berarti terpotong oleh max_tokens;
  • usage adalah konsumsi token panggilan ini — penagihan dan halaman "Usage" keduanya berdasarkan ini.

Endpoint padanan di protokol lain

  • Anthropic: POST {base}/v1/messages — nama kolom berbeda (max_tokens wajib, balasan berada di array content), semantiknya selebihnya identik;
  • Gemini: POST {base}/v1beta/models/{model}:generateContent — pesan masuk ke array contents.

Ketiga protokol bersifat isomorfik; migrasinya sebagian besar hanya mengganti nama kolom. Langkah praktisnya adalah memakai SDK resmi yang sesuai (openai / @anthropic-ai/sdk / @google/genai) dengan base_url diarahkan ke platform.