Skip to content

kisworo/kimi2api

Repository files navigation

Kimi2API

Proxy service yang mengkonversi Kimi Web Chat menjadi OpenAI-compatible API.

Fitur

  • 🔄 Format kompatibel OpenAI API (/v1/chat/completions, /v1/models)
  • 🚀 Streaming response (SSE)
  • 🧠 Support thinking/reasoning mode (kimi-k2.5-thinking)
  • 🔍 Support web search (kimi-k2.5-search)
  • 🔐 Optional API Token authentication
  • 🔄 Multi-token round-robin load balancing

Cara Kerja

Project ini me-reverse-engineer web interface www.kimi.com yang menggunakan gRPC-Web (Connect protocol) untuk berkomunikasi dengan backend Kimi. Request dari client OpenAI dikonversi ke format gRPC-Web Kimi, kemudian response di-stream balik dalam format SSE OpenAI.

Mendapatkan KIMI_TOKEN

  1. Buka https://www.kimi.com dan login
  2. Buka DevTools (F12) → tab Network
  3. Mulai chat, cari request ke ChatService/Chat
  4. Copy value dari header Authorization: Bearer eyJ...
  5. Token JWT tersebut adalah KIMI_TOKEN

Quick Start

Docker

docker build -t kimi2api .
docker run -d -p 8765:8765 -e KIMI_TOKEN=eyJ... kimi2api

Node.js

npm install
KIMI_TOKEN=eyJ... npm start

Development

npm install
cp .env.example .env
# Edit .env, set KIMI_TOKEN
npm run dev

Penggunaan

curl

curl http://localhost:8765/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"kimi-k2.5","messages":[{"role":"user","content":"Hello!"}]}'

OpenAI SDK (Python)

from openai import OpenAI

client = OpenAI(
    api_key="sk-anything",  # or leave empty if API_TOKENS not set
    base_url="http://localhost:8765/v1",
)

resp = client.chat.completions.create(
    model="kimi-k2.5",
    messages=[{"role": "user", "content": "Perkenalkan dirimu"}],
)
print(resp.choices[0].message.content)

Streaming

stream = client.chat.completions.create(
    model="kimi-k2.5-thinking",
    messages=[{"role": "user", "content": "Jelaskan quantum computing"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Model yang Tersedia

Model Deskripsi
kimi-k2.5 Default, tanpa thinking/search
kimi-k2 K2 model
kimi-k2.5-thinking Dengan thinking/reasoning
kimi-k2.5-search Dengan web search
kimi-k2.5-thinking-search Thinking + web search
kimi-k2-thinking K2 dengan thinking
kimi-k2-search K2 dengan search

Environment Variables

Variable Required Description
KIMI_TOKEN JWT token dari www.kimi.com
KIMI_TOKENS Multiple tokens (comma-separated) untuk round-robin
API_TOKENS Token auth untuk client (comma-separated)
PORT Port server (default: 8765)
HOST Host bind (default: 0.0.0.0)
ENABLE_SEARCH Enable web search by default (true/false)
CHAT_DETAIL_LOG Enable detailed logging (true/false)

Perbedaan dengan qwen2api

Aspek qwen2api kimi2api
Backend chat.qwen.ai www.kimi.com
Protocol HTTP REST + SSE gRPC-Web (Connect)
Auth Guest mode (no login) JWT token (login required)
Anti-bot Baxia token Tidak ada
File upload Alibaba OSS Belum diimplementasi
Image gen

Catatan

  • ⚠️ Ini adalah implementasi non-official berdasarkan web protocol Kimi
  • ⚠️ Token JWT dari Kimi memiliki masa berlaku terbatas
  • ⚠️ Upload file belum didukung (hanya text chat)
  • ⚠️ Usage tokens di response selalu 0 (Kimi tidak mengirim info ini)

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors