Embeddings
Ubah teks menjadi vektor untuk pencarian, pengelompokan, dan retrieval. Endpoint ini kompatibel dengan OpenAI Embeddings API, jadi SDK resmi OpenAI cukup diarahkan ke base URL yang baru.
POST /v1/embeddings
Endpoint ini hanya melayani model embedding. Kalau dipanggil dengan model chat, hasilnya 400. Lihat model embedding yang sedang tersedia lewat panggilan publik yang tidak butuh key:
curl "https://kenari.id/v1/models?modality=embedding"GET /v1/models tanpa parameter tidak mendaftar model embedding, rerank, moderasi, atau System One. Panggilan itu mendaftar model chat, gambar, suara, transkripsi, dan video. Contoh di bawah memakai bge-m3. Ganti dengan id mana pun yang dikembalikan panggilan di atas. Harga ada di Model & harga.
Request
Section titled “Request”| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
model | string | ya | Id model embedding. |
input | string atau array string | ya | Satu teks, atau beberapa teks dalam satu request. Array harus berisi minimal satu teks, dan setiap teks harus berupa string yang punya isi selain spasi. Maksimum 2.048 teks dan 1 MiB teks secara total. |
Field OpenAI lain, seperti encoding_format, diteruskan ke provider. Apakah field itu berpengaruh bergantung pada modelnya.
Response
Section titled “Response”Response mengikuti bentuk OpenAI. Vektor pada contoh dipersingkat supaya mudah dibaca. Vektor sebenarnya punya jauh lebih banyak nilai. object bernilai "list", model adalah id yang kamu minta, dan data berisi satu entri per input dengan urutan yang sama, lengkap dengan index dan vektor embedding. Objek usage hanya muncul kalau provider melaporkan jumlah token.
{ "object": "list", "model": "bge-m3", "data": [ { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456] } ]}Contoh
Section titled “Contoh”curl https://kenari.id/v1/embeddings \ -H "Authorization: Bearer $KENARI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "bge-m3", "input": "kucing duduk di atas karpet" }'Python
Section titled “Python”import osfrom openai import OpenAI
client = OpenAI( base_url="https://kenari.id/v1", api_key=os.environ["KENARI_API_KEY"],)
result = client.embeddings.create( model="bge-m3", input="kucing duduk di atas karpet",)
print(result.data[0].embedding[:5])JavaScript
Section titled “JavaScript”import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://kenari.id/v1", apiKey: process.env.KENARI_API_KEY,});
const result = await client.embeddings.create({ model: "bge-m3", input: "kucing duduk di atas karpet",});
console.log(result.data[0].embedding.slice(0, 5));Penagihan
Section titled “Penagihan”Embeddings ditagih per token input. kenari memperkirakan jumlah token dari teks yang kamu kirim, jadi biayanya tidak bergantung pada angka yang dilaporkan provider. Lihat Cara penagihan untuk saldo dan dimensi harga.
| Status | Kode | Kapan |
|---|---|---|
| 400 | bad_request | model tidak dikenal atau bukan model embedding, input tidak ada, berupa array kosong, atau berisi item kosong, hanya spasi, atau bukan string, atau request melewati batas 2.048 teks atau 1 MiB. |
| 400 | model_not_found | Modelnya terdaftar tetapi saat ini tidak ada provider yang melayaninya. Coba lagi nanti. |
| 503 | upstream_error, all_providers_failed | Tidak ada provider yang mengembalikan response yang bisa dipakai. Kamu tidak ditagih. Coba lagi. |
Kalau model bukan model embedding, pesan error menyebutkan id embedding yang tersedia. Kode error lainnya ada di Error.