VI ▾
Lấy khóa API

Kimi Code API URL: Thiết lập Base URL cho các máy khách OpenAI

URL API Kimi Code bạn cần cho dịch vụ này là https://api.kimicode.cc/v1. Đặt nó làm base URL trong bất kỳ ứng dụng khách OpenAI nào, thêm khóa của bạn và dùng model ID uncensored.

Cập nhật

Một cáp nối thiết bị đầu cuối máy khách với máy chủ API, đại diện cho thiết lập base URL

URL và ý nghĩa của từng phần

Nếu bạn đang tìm kimi code api url, bạn có thể đang tìm địa chỉ dịch vụ chính thức của Kimi. Để làm vậy, hãy dùng tài liệu từ nhà cung cấp, vì tôi không thể bảo đảm cho nó. Trang này chạy một thứ khác: một API tương thích OpenAI được lưu trữ phía trước một mô hình trọng số mở, do một nhà cung cấp độc lập vận hành. Địa chỉ của nó là:

https://api.kimicode.cc/v1

Chuỗi đó là base URL. Đó là phần mà mọi yêu cầu đều chia sẻ. SDK sẽ thêm phần còn lại. Khi bạn gọi chat.completions.create, thư viện OpenAI gửi một yêu cầu POST đến https://api.kimicode.cc/v1/chat/completions. Danh sách model có tại https://api.kimicode.cc/v1/models và dùng phương thức GET.

Hai phương thức đó là những phương thức duy nhất mà API này phục vụ: POST /v1/chat/completions và GET /v1/models. Nếu bạn mong đợi các endpoint về hình ảnh, âm thanh hoặc embedding, chúng không tồn tại ở đây. Đây là một API văn bản.

Ba cài đặt quan trọng, và không có gì khác cần thay đổi trong mã OpenAI hiện có của bạn: base URL, khóa API và model ID uncensored.

Tại sao base URL là công tắc duy nhất

Các máy khách kiểu OpenAI được xây dựng dựa trên một ý tưởng: định dạng yêu cầu là cố định, và máy chủ là một cài đặt. Thư viện có một máy chủ mặc định trỏ đến nhà cung cấp gốc. Khi bạn thay thế nó bằng một base URL khác, cùng một thân yêu cầu sẽ được gửi đến nơi khác. Không có gì trong prompt, mảng tin nhắn hoặc việc phân tích phản hồi của bạn cần thay đổi.

Đó là lý do tại sao việc di chuyển từ nhà cung cấp tương thích OpenAI khác thường chỉ gồm ba thay đổi: base URL, khóa và tên mô hình. Các trường trong phản hồi, chẳng hạn như choices, message, finish_reason và usage, có cùng tên, nên mã đọc chúng vẫn hoạt động.

Nó cũng giải thích các lỗi kỳ lạ mà mọi người gặp phải. Nếu một công cụ yêu cầu "URL máy chủ" và bạn dán chỉ máy chủ, đường dẫn sẽ bị thiếu. Nếu một công cụ yêu cầu "endpoint đầy đủ" và bạn dán base URL, yêu cầu sẽ gửi đến sai nơi. Khi màn hình cài đặt không rõ ràng, hãy thử base URL trước và đọc mã trạng thái trả về. hướng dẫn nhanh trong tài liệu sẽ đi qua quá trình di chuyển tương tự với một ví dụ khác.

Biến môi trường cho các công cụ bạn không thể chỉnh sửa

Nhiều công cụ dòng lệnh và khung xây dựng máy khách OpenAI mà không cho phép bạn chạm vào hàm tạo. Chúng thường đọc các biến môi trường tiêu chuẩn, vì vậy việc đặt chúng là đủ:

export OPENAI_BASE_URL="https://api.kimicode.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"

Một số công cụ cũ hơn tìm OPENAI_API_BASE thay vào đó, vì vậy nếu một cái bỏ qua tên đầu tiên, hãy thử tên thứ hai. Sau khi đặt chúng, hãy khởi động công cụ trong cùng phiên shell, vì các biến được đặt trong cửa sổ terminal khác không được chia sẻ.

Công cụ vẫn cần một tên mô hình. Nếu nó mã hóa cứng một mô hình được lưu trữ, hãy tìm cờ hoặc dòng cấu hình đặt nó, và sử dụng uncensored. Nếu nó không thể thay đổi, công cụ không phù hợp và một tập lệnh nhỏ như những cái trên là một con đường tốt hơn.

Lấy khóa trước

Các yêu cầu được xác thực bằng tiêu đề có dạng Authorization: Bearer YOUR_KEY. Mọi SDK chính thức đều xây dựng tiêu đề đó cho bạn từ đối số api_key. Bạn có thể tạo khóa sau khi đăng nhập bằng Google hoặc bằng email và mật khẩu.

Tài khoản mới có thể nhận $0.50 tín dụng dùng thử bằng một cú nhấp chuột trên trang khóa API. Bạn không cần thẻ và thời hạn là 7 ngày. Điều này đủ để chạy mọi ví dụ bên dưới nhiều lần. Khóa dùng thử cho phép 2 yêu cầu đồng thời và 60 yêu cầu mỗi phút, vì vậy bạn hãy chạy các ví dụ từng cái một.

Lưu khóa vào một biến môi trường thay vì trong các tệp nguồn. Một khóa được đẩy vào kho lưu trữ công khai sẽ bị người khác tìm thấy và sử dụng trong vòng vài giờ, và tín dụng đi kèm nó thuộc về bạn.

Yêu cầu đầu tiên trong curl

Curl là cách nhanh nhất để chứng minh URL hoạt động, vì nó loại bỏ mọi thư viện khỏi bức tranh. Nếu lệnh gọi này thành công, bất kỳ vấn đề nào bạn gặp phải sau đó đều nằm trong cấu hình máy khách của bạn.

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."}
    ]
  }'

Lệnh gọi đầu tiên trả về danh sách mô hình, bao gồm uncensored. Lệnh gọi thứ hai trả về đối tượng hoàn thành trò chuyện tiêu chuẩn. Hãy xem các tiêu đề phản hồi với curl -i và bạn sẽ thấy X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests và X-RateLimit-Limit-Concurrency. Hãy giữ ID yêu cầu nếu bạn liên hệ hỗ trợ về một lệnh gọi cụ thể.

Python với SDK OpenAI

Cài đặt thư viện với pip install openai, sau đó thay đổi hai đối số trên hàm tạo máy khách.

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)

Các tham số như temperature, top_p, stop, seed và các hình phạt về tần suất và sự hiện diện được chuyển tiếp đến mô hình. Giá trị max_tokens là tùy chọn. Không có nó, phần hoàn thành có thể sử dụng bất cứ thứ gì còn lại của cửa sổ 100.000 token, đó là prompt và phần hoàn thành kết hợp.

SDK cũng đọc hai biến môi trường nếu bạn không truyền đối số: OPENAI_BASE_URL và OPENAI_API_KEY. Điều đó hữu ích cho các công cụ bạn không thể chỉnh sửa. Đặt cả hai, khởi chạy công cụ và nó giao tiếp với API này.

Node, truyền phát và chế độ JSON

Cài đặt Node giống Python. Cài đặt với 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));

Truyền phát sử dụng sự kiện do máy chủ gửi và việc sử dụng được báo cáo ở cuối luồng. Một yêu cầu truyền phát giữ slot độ đồng thời của nó cho đến khi luồng kết thúc, vì vậy một máy khách mở luồng và không đọc nó sẽ chiếm một slot. Với chế độ JSON, bạn vẫn phải yêu cầu mô hình trong prompt trả lời bằng JSON. Cờ này hạn chế định dạng đầu ra, nhưng một hướng dẫn rõ ràng sẽ cho bạn các tên trường tốt hơn.

Gọi công cụ

Các công cụ sử dụng định dạng OpenAI thông thường: danh sách tools, tool_choice tùy chọn, và kết quả công cụ được gửi lại dưới dạng các thông điệp với role: "tool". Khi truyền phát, các tool_calls đến dưới dạng các phần nhỏ trong các 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)

Hãy coi các đối số từ mô hình là đầu vào không đáng tin cậy. Xác thực chúng trước khi chạy bất cứ thứ gì. Mô hình có thể bỏ qua lệnh gọi công cụ hoặc gọi nó với một trường sai, như bất kỳ mô hình nào cũng có thể, vì vậy hãy giữ một đường dự phòng trong vòng lặp của bạn.

Khi URL không hoạt động

Hầu hết các lỗi rơi vào một danh sách ngắn.

  • 404 Không tìm thấy. Đường dẫn sai. Nguyên nhân phổ biến: base URL được đặt thành https://api.kimicode.cc mà không có /v1, hoặc thành https://api.kimicode.cc/v1/chat/completions nên máy khách nối thêm đường dẫn hai lần. Hãy sử dụng chính xác base URL ở trên.
  • 401 Không được ủy quyền. Khóa bị thiếu, có khoảng trắng hoặc dấu xuống dòng lạ, hoặc tiêu đề không phải là token Bearer. In độ dài của biến để kiểm tra.
  • 429 với mã rate_limited. Bạn đã vượt quá giới hạn mỗi phút: 300 yêu cầu cho khóa đầy đủ, 60 cho khóa dùng thử.
  • 429 với mã concurrency. Quá nhiều yêu cầu cùng lúc: 8 cho khóa đầy đủ, 2 cho khóa dùng thử.
  • 429 với tiêu đề Retry-After: 5. Quá tải tạm thời. Chờ năm giây và thử lại.
  • Yêu cầu quá lớn. Giới hạn thân là 8 MB, và prompt cộng với phần hoàn thành phải vừa 100.000 token.

Một vòng lặp thử lại tuân thủ Retry-After và giảm dần tải cho hai mã còn lại xử lý gần như toàn bộ trường hợp này. Chi phí cho mỗi lần gọi rất nhỏ; trang giá cả cung cấp tỷ lệ tính theo token, và tài liệu bắt đầu nhanh hướng dẫn các bước di chuyển từ nhà cung cấp kiểu OpenAI khác.

Thử lại và thói quen sản xuất

Một khi lệnh gọi đầu tiên hoạt động, hãy thêm trình bao bọc thử lại trước khi xuất bản. Tôn trọng tiêu đề Retry-After khi nó có mặt và giảm tốc độ với độ trễ ngẫu nhiên ngắn nếu không.

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")

Giới hạn độ đồng thời của riêng bạn để phù hợp với khóa của bạn: một bể luồng 8 cho khóa đầy đủ, 2 cho khóa dùng thử. Điều đó ngăn lỗi concurrency trước khi nó bắt đầu, và nó giữ bạn bên trong giới hạn 300 yêu cầu mỗi phút ngay cả khi mỗi lệnh gọi mất hơn một vài giây.

Cuối cùng, hãy nhớ rằng bạn trả tiền mỗi token. Ghi lại đối tượng usage cho mỗi lệnh gọi và theo dõi tiêu đề X-Balance-USD. Ở mức $0.15 cho mỗi 1 triệu token đầu vào và $0.50 cho mỗi 1 triệu token đầu ra, một lượt trò chuyện điển hình là một phần nhỏ của một xu, nhưng các vòng lặp và lịch sử dài cộng lại, và nhật ký cho bạn biết nơi.

Hỏi đáp

URL cơ sở cho API này là gì?

https://api.kimicode.cc/v1. Đặt nó làm base URL trong bất kỳ máy khách tương thích OpenAI nào và để lại đường dẫn sau nó cho thư viện.

Tôi gửi ID mô hình nào?

Gửi uncensored làm giá trị mô hình. Bạn có thể xác nhận nó bằng cách gọi GET /v1/models với khóa của bạn.

Tôi có thể dùng endpoint chính thức của Kimi với khóa của tôi từ đây không?

Không. Đây là một dịch vụ riêng biệt với các khóa API và một mô hình trọng số mở riêng, không phải API chính thức của bất kỳ nhà cung cấp nào. Khóa API không được chia sẻ theo cả hai chiều.

Tại sao tôi nhận được lỗi 404 trên chat completions?

Base URL có thể thiếu /v1 hoặc đã bao gồm /chat/completions. Sử dụng https://api.kimicode.cc/v1 và không thêm gì khác.

Khóa của bạn chỉ cách một biểu mẫu

Tạo tài khoản, sao chép khóa, thay đổi URL cơ sở. Đó là toàn bộ thiết lập.

Lấy khóa API