URL API Kimi Code: การตั้งค่า Base URL สำหรับไคลเอนต์ OpenAI
URL API Kimi Code ที่คุณต้องการสำหรับบริการนี้คือ https://api.kimicode.cc/v1. ใส่ URL นี้เป็น base URL ในไคลเอนต์ที่เข้ากันได้กับ OpenAI ใดก็ได้ เพิ่มคีย์ของคุณ แล้วใช้ model ID uncensored
อัปเดต

URL และความหมายของแต่ละส่วน
หากคุณกำลังค้นหา Kimi Code API URL คุณอาจกำลังมองหาที่อยู่ของบริการ Kimi โดยตรง สำหรับสิ่งนั้น ให้ใช้เอกสารจากผู้ขาย เนื่องจากฉันไม่สามารถรับรองได้ เว็บไซต์นี้รันสิ่งอื่น: API ที่เข้ากันได้กับ OpenAI แบบโฮสต์ไว้เบื้องหน้าโมเดล open-weight model ตัวเดียว ดำเนินการโดยผู้ให้บริการอิสระ ที่อยู่คือ:
https://api.kimicode.cc/v1
สตริงนี้คือ base URL ซึ่งเป็นส่วนที่ทุกคำขอใช้ร่วมกัน SDK จะเติมส่วนที่เหลือให้ เมื่อคุณเรียกใช้ chat.completions.create ไลบรารี OpenAI จะส่ง POST ไปยัง https://api.kimicode.cc/v1/chat/completions รายการโมเดลอยู่ที่ https://api.kimicode.cc/v1/models และใช้ GET
สองวิธีนี้คือวิธีเดียวที่ API นี้ให้บริการ: POST /v1/chat/completions และ GET /v1/models หากคุณหวังจะหาเอนด์พอยต์สำหรับรูปภาพ เสียง หรือ embedding พวกมันไม่มีที่นี่ นี่คือ API สำหรับข้อความเท่านั้น
การตั้งค่าสามอย่างนี้สำคัญ และสิ่งอื่นไม่ต้องเปลี่ยนแปลงในโค้ด OpenAI เดิมของคุณ: base URL, คีย์ API และ model ID uncensored
ทำไม base URL ถึงเป็นสวิตช์เพียงอย่างเดียว
ไคลเอนต์สไตล์ OpenAI ถูกสร้างขึ้นจากแนวคิดหนึ่ง: รูปแบบคำขอถูกกำหนดไว้ตายตัว และโฮสต์คือการตั้งค่า ไลบรารีมีโฮสต์เริ่มต้นที่ชี้ไปยังซัพพลายเออร์ดั้งเดิม เมื่อคุณแทนที่ด้วย base URL อื่น ร่างคำขอเดียวกันจะถูกส่งไปยังที่อื่น ไม่มีการเปลี่ยนแปลงในพรอมต์ อาร์เรย์ข้อความ หรือการแยกวิเคราะห์การตอบกลับที่ต้องแก้ไข
นั่นคือเหตุผลที่การย้ายจากซัพพลายเออร์อื่นที่เข้ากันได้กับ OpenAI มักจะแก้ไขเพียงสามจุด: base URL, คีย์ และชื่อโมเดล ฟิลด์ในการตอบกลับ เช่น choices, message, finish_reason และ usage มีชื่อเดียวกัน ดังนั้นโค้ดที่อ่านค่าเหล่านี้จึงทำงานต่อไปได้
มันยังอธิบายข้อผิดพลาดแปลก ๆ ที่ผู้คนพบ หากเครื่องมือขอ "server URL" และคุณวางเฉพาะ host เส้นทางจะหายไป หากเครื่องมือขอ "full endpoint" และคุณวาง base URL คำขอจะไปที่ที่ผิด เมื่อหน้าจอการตั้งค่าไม่ชัดเจน ให้ลองใช้ base URL ก่อนแล้วอ่าน status code ที่ได้รับกลับ quickstart ในเอกสาร จะแนะนำการย้ายแบบเดียวกันพร้อมตัวอย่างเพิ่มเติม
ตัวแปรสภาพแวดล้อมสำหรับเครื่องมือที่คุณแก้ไขไม่ได้
เครื่องมือและเฟรมเวิร์กจำนวนมากสร้างไคลเอนต์ OpenAI โดยไม่ให้คุณเข้าถึงคอนสตรัคเตอร์ พวกมันมักจะอ่านตัวแปรสภาพแวดล้อมมาตรฐาน ดังนั้นการตั้งค่าเหล่านี้ก็เพียงพอแล้ว:
export OPENAI_BASE_URL="https://api.kimicode.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
เครื่องมือรุ่นเก่าบางตัวมองหา OPENAI_API_BASE แทน ดังนั้นหากเครื่องมือหนึ่งไม่ยอมรับชื่อแรก ให้ลองชื่อที่สอง หลังจากตั้งค่าแล้ว ให้เริ่มใช้งานเครื่องมือในเซสชัน shell เดียวกัน เนื่องจากตัวแปรที่ตั้งค่าในหน้าต่าง terminal อื่นจะไม่ถูกแชร์
เครื่องมือยังต้องการชื่อโมเดล หากเครื่องมือกำหนดชื่อโมเดลแบบโฮสต์ไว้ตายตัว ให้มองหาแฟลกหรือบรรทัดการตั้งค่า และใช้ uncensored หากไม่สามารถเปลี่ยนได้ เครื่องมือนี้ไม่เหมาะสม และสคริปต์เล็กๆ อย่างข้างต้นเป็นทางเลือกที่ดีกว่า
รับคีย์ก่อน
คำขอจะถูกตรวจสอบสิทธิ์ด้วยเฮดเดอร์ในรูปแบบ Authorization: Bearer YOUR_KEY ไคลเอนต์ทางการทุกตัวสร้างเฮดเดอร์นี้ให้คุณจากอาร์กิวเมนต์ api_key คุณสามารถสร้างคีย์ได้หลังจากเข้าสู่ระบบด้วย Google หรือด้วยอีเมลและรหัสผ่าน
บัญชีใหม่สามารถขอเครดิตทดลองใช้ $0.50 ได้เพียงคลิกเดียวที่ หน้าคีย์ API ไม่ต้องใช้บัตรและใช้งานได้ 7 วัน เพียงพอสำหรับการรันตัวอย่างทั้งหมดด้านล่างได้หลายรอบ คีย์ทดลองอนุญาตคำขอพร้อมกัน 2 คำขอและ 60 คำขอต่อนาที ดังนั้นให้รันตัวอย่างทีละรายการ
เก็บคีย์ในตัวแปรสภาพแวดล้อมแทนที่จะเก็บในไฟล์แหล่งที่มา คีย์ที่คอมมิตไปยังที่เก็บสาธารณะจะถูกค้นพบและใช้งานโดยผู้อื่นภายในไม่กี่ชั่วโมง และเครดิตที่มีอยู่เป็นของคุณ
คำขอแรกใน curl
Curl เป็นวิธีที่เร็วที่สุดในการพิสูจน์ว่า URL ทำงานได้ เพราะมันตัดไลบรารีทั้งหมดออกจากรูปภาพ หากการเรียกนี้สำเร็จ ปัญหาใดๆ ที่คุณพบในภายหลังจะเกิดจากการกำหนดค่าไคลเอนต์ของคุณ
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."}
]
}'
การเรียกครั้งแรกจะคืนรายการโมเดล ซึ่งควรมี uncensored การเรียกครั้งที่สองจะคืนวัตถุการตอบกลับแชทมาตรฐาน ดูเฮดเดอร์การตอบกลับด้วย curl -i คุณจะเห็น X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests และ X-RateLimit-Limit-Concurrency เก็บ ID คำขอไว้หากคุณเคยติดต่อ support เกี่ยวกับคำขอเฉพาะ
Python กับ SDK ของ OpenAI
ติดตั้งไลบรารีด้วย pip install openai จากนั้นแก้ไขอาร์กิวเมนต์สองตัวในคอนสตรัคเตอร์ไคลเอนต์
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)
พารามิเตอร์เช่น temperature, top_p, stop, seed และค่าปรับความถี่และการปรากฏจะถูกส่งต่อไปยังโมเดล ค่า max_tokens เป็นตัวเลือก หากไม่มีค่านี้ การสร้างข้อความอาจใช้พื้นที่ที่เหลือของหน้าต่าง 100,000 โทเคน ซึ่งรวมถึงพรอมต์และการสร้างข้อความรวมกัน
SDK ยังอ่านตัวแปรสภาพแวดล้อมสองตัวหากคุณไม่ผ่านอาร์กิวเมนต์: OPENAI_BASE_URL และ OPENAI_API_KEY สิ่งนี้มีประโยชน์สำหรับเครื่องมือที่คุณแก้ไขไม่ได้ ตั้งค่าทั้งสองอย่าง เริ่มต้นใช้งานเครื่องมือ แล้วมันจะสื่อสารกับ API นี้
Node, สตรีมมิง และโหมด JSON
การตั้งค่า Node คล้ายกับ Python ติดตั้งด้วย 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));
สตรีมมิงใช้เหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์ (SSE) และรายงานการใช้งานที่ท้ายสตรีม คำขอที่สตรีมจะครอบครองช่องความพร้อมใช้งาน (concurrency) ไว้จนกว่าสตรีมจะเสร็จสิ้น ดังนั้นไคลเอนต์ที่เปิดสตรีมแต่ไม่อ่านข้อมูลจะบล็อกช่องหนึ่งไว้ เมื่อใช้โหมด JSON ยังต้องบอกโมเดลในพรอมต์ให้ตอบเป็น JSON โฟล็กนี้จำกัดรูปแบบผลลัพธ์ แต่คำแนะนำที่ชัดเจนจะให้ชื่อฟิลด์ที่ดีกว่า
การเรียกใช้ฟังก์ชัน
Tools ใช้รูปแบบ OpenAI ทั่วไป: รายการ tools, tool_choice ที่ไม่บังคับ และผลลัพธ์จากเครื่องมือส่งกลับเป็น messages ด้วย role: "tool" เมื่อ streaming, tool_calls จะมาถึงเป็นชิ้นส่วน ข้ามหลาย 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)
พิจารณาอาร์กิวเมนต์จากโมเดลว่าเป็นข้อมูลที่ไม่ไว้วางใจ ตรวจสอบอาร์กิวเมนต์ก่อนดำเนินการใดๆ โมเดลอาจข้ามการเรียกใช้เครื่องมือหรือเรียกใช้ด้วยฟิลด์ที่ผิดได้ เช่นเดียวกับโมเดลอื่นๆ ดังนั้นควรมีเส้นทางสำรองในลูปของคุณ
เมื่อ URL ล้มเหลว
ความล้มเหลวส่วนใหญ่อยู่ในรายการสั้นๆ
- 404 Not Found. เส้นทางไม่ถูกต้อง สาเหตุทั่วไป: ตั้งค่า base URL เป็น
https://api.kimicode.ccโดยไม่มี/v1หรือเป็นhttps://api.kimicode.cc/v1/chat/completionsทำให้ไคลเอนต์ต่อเส้นทางซ้ำสองครั้ง ใช้ base URL ด้านบนให้ถูกต้อง - 401 Unauthorized. คีย์หายไป มีช่องว่างหรือบรรทัดใหม่ หรือเฮดเดอร์ไม่ใช่ Bearer token พิมพ์ความยาวของตัวแปรเพื่อตรวจสอบ
- 429 พร้อมโค้ด
rate_limited. คุณส่งคำขอเกินขีดจำกัดต่อนาที: 300 คำขอสำหรับคีย์เต็ม, 60 สำหรับคีย์ทดลอง - 429 พร้อมโค้ด
concurrency. ส่งคำขอพร้อมกันมากเกินไป: 8 สำหรับคีย์เต็ม, 2 สำหรับคีย์ทดลอง - 429 พร้อมส่วนหัว
Retry-After: 5การโอเวอร์โหลดชั่วคราว รอห้าวินาทีแล้วลองใหม่ - คำขอใหญ่เกินไป ขอบเขตของ body คือ 8 MB และ prompt รวมกับการสร้างผลลัพธ์ต้องพอดีกับ 100,000 โทเคน
ลูปการเรียกซ้ำที่เคารพ Retry-After และลดความถี่ลงสำหรับรหัสอื่น ๆ อีกสองรหัสจะจัดการเกือบทั้งหมดนี้ ค่าใช้จ่ายต่อการเรียกมีขนาดเล็ก; หน้าราคา มีอัตราต่อ token และ quickstart ในเอกสาร แสดงขั้นตอนการย้ายจากผู้ให้บริการสไตล์ OpenAI อื่น
การลองใหม่และนิสัยการผลิต
เมื่อการเรียกแรกทำงานได้แล้ว ให้เพิ่ม wrapper การเรียกซ้ำก่อนที่คุณจะส่งมอบ เคารพส่วนหัว Retry-After เมื่อมีอยู่ และลดความถี่ลงด้วยเวลาสุ่มสั้น ๆ หากไม่มี
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")
จำกัด concurrency ของคุณให้ตรงกับคีย์ของคุณ: thread pool ขนาด 8 สำหรับคีย์เต็ม, 2 สำหรับคีย์ทดลอง นั่นหยุดข้อผิดพลาด concurrency ก่อนที่จะเริ่มต้น และช่วยให้คุณอยู่ภายในขีดจำกัด 300 requests ต่อนาทีเช่นกัน เมื่อแต่ละ call ใช้เวลามากกว่าสองสามวินาที
สุดท้าย โปรดจำไว้ว่าคุณจ่ายต่อโทเคน บันทึกวัตถุ usage สำหรับการเรียกแต่ละครั้ง และสังเกตส่วนหัว X-Balance-USD ที่ $0.15 ต่อ 1M โทเคนอินพุต และ $0.50 ต่อ 1M โทเคนเอาต์พุต การสนทนาทั่วไปมีค่าใช้จ่ายเพียงเศษเสี้ยวของเซ็นต์ แต่ลูปและประวัติที่ยาวนานจะเพิ่มขึ้น และบันทึกจะบอกคุณว่าอยู่ที่ไหน
คู่มือเพิ่มเติม
ถาม-ตอบ
Base URL สำหรับ API นี้คืออะไร?
https://api.kimicode.cc/v1. ตั้งค่าเป็น base URL ในไคลเอนต์ที่เข้ากันได้กับ OpenAI และปล่อยเส้นทางหลังจากนั้นให้ไลบรารีจัดการ
ฉันต้องส่ง ID โมเดลใด?
ส่ง uncensored เป็นค่าโมเดล คุณสามารถยืนยันได้โดยการเรียกใช้ GET /v1/models ด้วยคีย์ของคุณ
ฉันสามารถใช้เอนด์พอยต์ทางการของ Kimi พร้อมคีย์ API จากที่นี่ได้หรือไม่?
ไม่ใช่ นี่คือบริการแยกต่างหากที่มีคีย์ของตัวเองและโมเดลแบบเปิดน้ำหนักหนึ่งตัว ไม่ใช่ API ทางการของผู้ขายใดๆ คีย์ไม่ถูกส่งผ่านในทั้งสองทิศทาง
ทำไมฉันจึงได้รับ 404 ที่การตอบกลับแชท?
URL ฐานน่าจะยังไม่มี /v1 หรือมี /chat/completions อยู่แล้ว ใช้ https://api.kimicode.cc/v1 และไม่มีอย่างอื่น
คีย์ของคุณอยู่ห่างแค่แบบฟอร์มเดียว
สร้างบัญชี คัดลอกคีย์ และเปลี่ยน base URL นั่นคือการตั้งค่าทั้งหมด
รับคีย์ API