URL API Kimi Code: Pengaturan Base URL untuk Klien OpenAI
URL API Kimi Code yang Anda butuhkan untuk layanan ini adalah https://api.kimicode.cc/v1. Atur sebagai base URL di klien OpenAI apa pun, tambahkan kunci Anda, dan gunakan ID model uncensored.
Diperbarui

URL dan arti setiap bagiannya
Jika Anda mencari kimi code api url, Anda mungkin mencari alamat layanan milik Kimi. Untuk itu, gunakan dokumentasi dari vendor tersebut, karena saya tidak dapat menjaminnya. Situs ini menjalankan hal yang berbeda: API yang kompatibel dengan OpenAI yang di-host di depan satu model bobot terbuka, dijalankan oleh penyedia independen. Alamatnya adalah:
https://api.kimicode.cc/v1
String tersebut adalah base URL. Ini adalah bagian yang dibagikan oleh setiap permintaan. SDK menambahkan sisanya. Saat Anda memanggil chat.completions.create, pustaka OpenAI mengirimkan POST ke https://api.kimicode.cc/v1/chat/completions. Daftar model berada di https://api.kimicode.cc/v1/models dan memerlukan GET.
Hanya dua metode ini yang dilayani oleh API ini: POST /v1/chat/completions dan GET /v1/models. Jika Anda mengharapkan endpoint gambar, audio, atau embedding, itu tidak ada di sini. Ini adalah API teks.
Tiga pengaturan penting, dan tidak ada yang lain yang perlu diubah dalam kode OpenAI Anda: base URL, kunci API, dan ID model uncensored.
Mengapa base URL adalah satu-satunya sakelar
Klien bergaya OpenAI dibangun di atas satu gagasan: format permintaan tetap, dan host adalah pengaturan. Pustaka memiliki host default yang mengarah ke vendor asli. Saat Anda menggantinya dengan base URL lain, body permintaan yang sama dikirim ke tempat lain. Tidak ada yang perlu diubah dalam prompt, array pesan, atau parsing respons Anda.
Itu juga menjelaskan mengapa migrasi dari penyedia OpenAI-kompatibel lain biasanya hanya tiga pengeditan: base URL, kunci, dan nama model. Bidang dalam respons, seperti choices, message, finish_reason, dan usage, memiliki nama yang sama, sehingga kode yang membacanya tetap berfungsi.
Itu juga menjelaskan kesalahan aneh yang sering dialami orang. Jika alat meminta "URL server" dan Anda hanya menyematkan host, path hilang. Jika alat meminta "endpoint lengkap" dan Anda menyematkan base URL, permintaan dikirim ke tempat yang salah. Saat layar pengaturan tidak jelas, coba base URL terlebih dahulu dan baca kode status yang diterima. panduan awal di dokumentasi menjelaskan migrasi yang sama dengan satu contoh tambahan.
Variabel lingkungan untuk alat yang tidak dapat Anda edit
Banyak alat baris perintah dan kerangka kerja membuat klien OpenAI tanpa memungkinkan Anda menyentuh konstruktor. Mereka biasanya membaca variabel lingkungan standar, jadi mengaturnya sudah cukup:
export OPENAI_BASE_URL="https://api.kimicode.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
Beberapa alat lama mencari OPENAI_API_BASE sebagai gantinya, jadi jika satu mengabaikan nama pertama, coba yang kedua. Setelah mengaturnya, mulai alat di sesi shell yang sama, karena variabel yang ditetapkan di jendela terminal lain tidak dibagikan.
Alat masih memerlukan nama model. Jika alat mengunci nama model yang di-host, cari flag atau baris konfigurasi yang mengaturnya, dan gunakan uncensored. Jika tidak dapat diubah, alat tersebut tidak cocok, dan skrip kecil seperti di atas adalah jalur yang lebih baik.
Dapatkan kunci terlebih dahulu
Permintaan diautentikasi dengan header berbentuk Authorization: Bearer YOUR_KEY. Setiap SDK resmi membuat header tersebut untuk Anda dari argumen api_key. Anda dapat membuat kunci setelah masuk dengan Google atau dengan email dan kata sandi.
Akun baru dapat mengklaim $0.50 kredit uji coba dengan satu klik di halaman kunci API. Tidak memerlukan kartu dan berlaku selama 7 hari. Itu cukup untuk menjalankan setiap contoh di bawah ini berkali-kali. Kunci uji memungkinkan 2 permintaan paralel dan 60 permintaan per menit, jadi jalankan contoh satu per satu.
Simpan kunci dalam variabel lingkungan, bukan dalam file sumber. Kunci yang di-commit ke repositori publik akan ditemukan dan digunakan oleh orang lain dalam hitungan jam, dan saldo yang dimilikinya adalah milik Anda.
Permintaan pertama di curl
Curl adalah cara tercepat untuk membuktikan URL berfungsi, karena ini menghilangkan setiap pustaka dari persamaan. Jika panggilan ini berhasil, masalah apa pun yang Anda temui selanjutnya ada dalam konfigurasi klien Anda.
export KIMICODE_KEY="YOUR_KEY"
curl https://api.kimicode.cc/v1/models -H "Authorization: Bearer $KIMICODE_KEY"
curl https://api.kimicode.cc/v1/chat/completions -H "Authorization: Bearer $KIMICODE_KEY" -H "Content-Type: application/json" -d '{
"model": "uncensored",
"messages": [
{"role": "user", "content": "Say hello in five words."}
]
}'
Panggilan pertama mengembalikan daftar model, yang harus mencakup uncensored. Panggilan kedua mengembalikan objek penyelesaian chat standar. Lihat header respons dengan curl -i dan Anda akan melihat X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, dan X-RateLimit-Limit-Concurrency. Simpan ID permintaan jika Anda pernah menghubungi dukungan tentang panggilan tertentu.
Python dengan SDK OpenAI
Instal pustaka dengan pip install openai, lalu ubah dua argumen pada konstruktor klien.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.kimicode.cc/v1",
api_key=os.environ["KIMICODE_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a base URL is in two sentences."},
],
temperature=0.7,
)
print(resp.choices[0].message.content)
print(resp.usage)
Parameter seperti temperature, top_p, stop, seed, dan penalti frekuensi serta kehadiran diteruskan ke model. Nilai max_tokens bersifat opsional. Tanpa itu, penyelesaian dapat menggunakan sisa jendela 100.000 token, yang merupakan gabungan prompt dan penyelesaian.
SDK juga membaca dua variabel lingkungan jika Anda tidak meneruskan argumen: OPENAI_BASE_URL dan OPENAI_API_KEY. Itu berguna untuk alat yang tidak dapat Anda edit. Tetapkan keduanya, luncurkan alat, dan alat tersebut akan berbicara dengan API ini.
Node, streaming, dan mode JSON
Pengaturan Node mirip dengan Python. Instal dengan npm install openai.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.kimicode.cc/v1",
apiKey: process.env.KIMICODE_KEY,
});
// Streaming over SSE
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [{ role: "user", content: "Write a four-line poem about routers." }],
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
// JSON mode
const json = await client.chat.completions.create({
model: "uncensored",
response_format: { type: "json_object" },
messages: [
{ role: "system", content: "Reply with a JSON object only." },
{ role: "user", content: "Give me keys name and port for a local dev server." },
],
});
console.log(JSON.parse(json.choices[0].message.content));
Streaming menggunakan event yang dikirim server dan penggunaan dilaporkan di akhir stream. Permintaan streaming memegang slot konkurensinya hingga stream selesai, sehingga klien yang membuka stream dan tidak membacanya akan memblokir slot. Dengan mode JSON, tetap beri tahu model dalam prompt untuk menjawab dalam JSON. Flag membatasi format output, tetapi instruksi yang jelas memberi Anda nama bidang yang lebih baik.
Pemanggilan alat
Alat menggunakan bentuk OpenAI biasa: daftar tools, tool_choice opsional, dan hasil alat dikirim kembali sebagai pesan dengan role: "tool". Saat streaming, tool_calls tiba dalam potongan di seluruh chunk.
import json, os
from openai import OpenAI
client = OpenAI(base_url="https://api.kimicode.cc/v1", api_key=os.environ["KIMICODE_KEY"])
tools = [{
"type": "function",
"function": {
"name": "get_port",
"description": "Look up the port of a named local service",
"parameters": {
"type": "object",
"properties": {"service": {"type": "string"}},
"required": ["service"],
},
},
}]
messages = [{"role": "user", "content": "Which port does the api service use?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
messages.append(first.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps({"service": "api", "port": 8080}),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
Perlakukan argumen dari model sebagai input yang tidak dapat dipercaya. Validasi sebelum menjalankan apa pun. Model mungkin melewatkan panggilan alat atau memanggilnya dengan bidang yang salah, seperti model apa pun dapat lakukan, jadi simpan jalur fallback dalam loop Anda.
Ketika URL gagal
Kebanyakan kegagalan masuk ke daftar pendek.
- 404 Not Found. Path salah. Penyebab umum: base URL diatur ke
https://api.kimicode.cctanpa/v1, atau kehttps://api.kimicode.cc/v1/chat/completionssehingga klien menambahkan path dua kali. Gunakan tepat base URL di atas. - 401 Unauthorized. Kunci hilang, memiliki spasi atau baris baru yang tidak perlu, atau header bukan token Bearer. Cetak panjang variabel untuk memeriksa.
- 429 dengan kode
rate_limited. Anda melewati batas per menit: 300 permintaan untuk kunci penuh, 60 untuk kunci uji coba. - 429 dengan kode
concurrency. Terlalu banyak permintaan sekaligus: 8 untuk kunci penuh, 2 untuk kunci uji coba. - 429 dengan header
Retry-After: 5. Beban berlebih sementara. Tunggu lima detik dan coba lagi. - Badan permintaan terlalu besar. Batas badan adalah 8 MB, dan prompt serta completion harus muat dalam 100.000 token.
Loop retry yang menghormati Retry-After dan mengurangi frekuensi pada dua kode lainnya menangani hampir semua ini. Biaya per panggilan kecil; halaman harga memiliki tarif per token, dan dokumentasi quickstart menunjukkan langkah migrasi dari penyedia gaya OpenAI lainnya.
Percobaan ulang dan kebiasaan produksi
Setelah panggilan pertama berhasil, tambahkan pembungkus retry sebelum Anda meluncurkan. Hormati header Retry-After saat ada, dan kurangi frekuensi dengan jeda acak pendek jika tidak ada.
import os, time, random
from openai import OpenAI, RateLimitError
client = OpenAI(base_url="https://api.kimicode.cc/v1", api_key=os.environ["KIMICODE_KEY"])
def ask(messages, tries=5):
for attempt in range(tries):
try:
return client.chat.completions.create(model="uncensored", messages=messages)
except RateLimitError as err:
retry_after = 5
if getattr(err, "response", None) is not None:
retry_after = int(err.response.headers.get("retry-after", 5))
time.sleep(retry_after + random.random())
raise RuntimeError("still rate limited after retries")
Batasi konkurensi Anda sendiri agar sesuai dengan kunci Anda: thread pool 8 untuk kunci penuh, 2 untuk kunci uji coba. Itu menghentikan kesalahan concurrency sebelum dimulai, dan itu menjaga Anda tetap di dalam batas 300 permintaan per menit juga ketika setiap panggilan memakan waktu lebih dari beberapa detik.
Akhirnya, ingat bahwa Anda membayar per token. Log objek usage untuk setiap panggilan, dan pantau header X-Balance-USD. Pada $0.15 per 1M token input dan $0.50 per 1M token output, satu putaran percakapan khas bernilai pecahan sen, tetapi loop dan riwayat panjang bertambah, dan log memberi tahu Anda di mana.
Panduan lainnya
Tanya jawab
Apa base URL untuk API ini?
https://api.kimicode.cc/v1. Atur sebagai base URL di setiap klien yang kompatibel dengan OpenAI dan biarkan path setelahnya diserahkan ke pustaka.
Model ID mana yang harus Anda kirim?
Kirimkan uncensored sebagai nilai model. Anda dapat mengonfirmasinya dengan memanggil GET /v1/models dengan kunci Anda.
Bisakah saya menggunakan endpoint resmi Kimi dengan kunci dari sini?
Tidak. Ini adalah layanan terpisah dengan kunci sendiri dan satu model bobot terbuka, bukan API resmi dari vendor mana pun. Kunci tidak ditransfer dalam kedua arah.
Mengapa saya mendapatkan 404 pada completion chat?
Base URL mungkin tidak memiliki /v1 atau sudah termasuk /chat/completions. Gunakan https://api.kimicode.cc/v1 dan tidak lebih.
Kunci Anda hanya selangkah lagi dari satu formulir
Buat akun, salin kunci, ubah URL dasar. Itulah seluruh proses pengaturannya.
Dapatkan kunci API