Messages (Anthropic)
Endpoint POST /v1/messages kompatibel dengan Anthropic Messages API, jadi bisa dipakai sebagai pengganti langsung untuk Anthropic base URL. Arahkan SDK Anthropic ke https://kenari.id/v1, ganti API key dengan key kenari (kn-...), dan respons akan mengikuti bentuk message Anthropic.
Request
Section titled “Request”Field yang wajib ada: model dan messages. max_tokens opsional. Bila tidak dikirim, server memakai default 65.536 token.
| Field | Tipe | Keterangan |
|---|---|---|
model | string | Wajib. Id model, misalnya step-3-7-flash. |
max_tokens | integer | Opsional. Batas token yang dihasilkan. Default 65.536 bila tidak dikirim. |
messages | array | Wajib. Daftar pesan percakapan. |
system | string | Opsional. Instruksi sistem. |
stream | boolean | Opsional. Aktifkan streaming. |
temperature | number | Opsional. |
top_p | number | Opsional. |
top_k | integer | Opsional. |
stop_sequences | array | Opsional. Daftar string penghenti. |
tools | array | Opsional. Definisi tool, lihat Tools. |
tool_choice | object | Opsional. Pengaturan pemilihan tool. |
thinking | object | Opsional. Untuk model penalaran, lihat Penalaran. |
messages
Section titled “messages”Field messages adalah array objek {role, content}. Nilai role salah satu dari user atau assistant. Nilai content bisa berupa string biasa, atau array content block (misalnya blok teks atau blok gambar).
{ "model": "step-3-7-flash", "max_tokens": 512, "messages": [ {"role": "user", "content": "Halo!"} ]}Response
Section titled “Response”Respons mengikuti bentuk message Anthropic.
| Field | Tipe | Keterangan |
|---|---|---|
id | string | Id message. |
type | string | Selalu "message". |
role | string | Selalu "assistant". |
model | string | Model yang menjawab. |
content | array | Daftar content block, misalnya {"type": "text", "text": "..."}. |
stop_reason | string | Alasan berhenti. |
stop_sequence | string | Stop sequence yang cocok, atau null. |
usage | object | {input_tokens, output_tokens}. |
{ "id": "msg_...", "type": "message", "role": "assistant", "model": "step-3-7-flash", "content": [ {"type": "text", "text": "Halo! Ada yang bisa saya bantu?"} ], "stop_reason": "end_turn", "stop_sequence": null, "usage": {"input_tokens": 9, "output_tokens": 12}}Contoh
Section titled “Contoh”Anthropic SDK Python:
import anthropic
client = anthropic.Anthropic(base_url="https://kenari.id/v1", api_key="kn-...")message = client.messages.create( model="step-3-7-flash", max_tokens=512, messages=[{"role": "user", "content": "Halo!"}],)print(message.content[0].text)Anthropic SDK TypeScript:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "https://kenari.id/v1", apiKey: "kn-..." });const msg = await client.messages.create({ model: "step-3-7-flash", max_tokens: 512, messages: [{ role: "user", content: "Halo!" }],});console.log(msg.content[0].text);curl:
curl https://kenari.id/v1/messages \ -H "Authorization: Bearer kn-..." \ -H "Content-Type: application/json" \ -d '{"model":"step-3-7-flash","max_tokens":512,"messages":[{"role":"user","content":"Halo!"}]}'Streaming
Section titled “Streaming”Set "stream": true untuk menerima respons secara bertahap sebagai server-sent events. Detail format event ada di Streaming.