TR ▾
API anahtarı al

Kimi Code API URL'si: OpenAI İstemcileri için Temel URL Kurulumu

Bu hizmet için gereken Kimi Code API URL'si https://api.kimicode.cc/v1'dir. Bunu herhangi bir OpenAI istemcisine temel URL olarak ekleyin, anahtarınızı girin ve model kimliği olarak uncensored'ı kullanın.

Güncellendi

Bir istemci terminalini bir API sunucusuna bağlayan, temel URL kurulumunu temsil eden bir kablo

URL ve her parçanın anlamı

kimi code api url arıyorsanız, Kimi'nin kendi hizmetinin adresini arıyor olabilirsiniz. Bunun için satıcıdan dokümantasyonu kullanın, çünkü ben onun için garanti veremem. Bu site farklı bir şey çalıştırır: bağımsız bir sağlayıcı tarafından yönetilen, tek bir açık ağırlıklı modelin önünde barındırılan, OpenAI-uyumlu bir API. Adresi:

https://api.kimicode.cc/v1

Bu dize temel URL'dir. Her istekte ortak olan kısımdır. SDK geri kalanını ekler. chat.completions.create'i çağırdığınızda, OpenAI kütüphanesi https://api.kimicode.cc/v1/chat/completions adresine POST gönderir. Model listesi https://api.kimicode.cc/v1/models adresinde bulunur ve GET isteği gönderir.

Bu API'nin sunduğu iki yöntem şunlardır: POST /v1/chat/completions ve GET /v1/models. Resim, ses veya embedding uç noktaları arıyorsanız, bunlar burada bulunmaz. Bu bir metin API'sidir.

Üç ayar önemlidir ve mevcut OpenAI kodunuzda başka hiçbir şeyi değiştirmeniz gerekmez: temel URL, API anahtarı ve model kimliği uncensored.

Neden bir temel URL tek değiştiricidir

OpenAI tarzı istemciler tek bir fikir etrafında kurulmuştur: istek formatı sabittir ve ana makine bir ayardır. Kütüphanenin orijinal satıcıya işaret eden varsayılan bir ana makinesi vardır. Bunu başka bir temel URL ile değiştirdiğinizde, aynı istek gövdesi başka bir yere gider. İsteklerinizdeki, mesaj dizilerinizdeki veya yanıt ayrıştırmanızdaki hiçbir şeyi değiştirmeniz gerekmez.

Bu nedenle, başka bir OpenAI-uyumlu sağlayıcıdan geçiş genellikle üç düzenleme içerir: temel URL, anahtar ve model adı. Yanıttaki alanlar, örneğin choices, message, finish_reason ve usage aynı isimlere sahiptir, bu nedenle onları okuyan kod çalışmaya devam eder.

Ayrıca insanların karşılaştığı garip hataları da açıklar. Bir araç bir "sunucu URL"si ister ve yalnızca ana makineyi yapıştırırsanız, yol eksik olur. Bir araç "tam uç nokta" ister ve temel URL'yi yapıştırırsanız, istek yanlış yere gider. Ayar ekranı belirsizse, önce temel URL'yi deneyin ve dönen durum kodunu okuyun. Dokümantasyondaki hızlı başlangıç aynı geçişi bir örnek daha ile anlatır.

Düzenleyemediğiniz araçlar için ortam değişkenleri

Birçok komut satırı aracı ve framework, kurucuya dokunmanıza izin vermeden bir OpenAI istemcisi oluşturur. Genellikle standart ortam değişkenlerini okurlar, bu nedenle bunları ayarlamak yeterlidir:

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

Bazı eski araçlar OPENAI_API_BASE değişkenini arar, bu nedenle bir araç ilk adı yok sayıyorsa ikincisini deneyin. Bunları ayarladıktan sonra, başka bir terminal penceresinde ayarlanan değişkenler paylaşılmadığından, aracı aynı kabuk oturumunda başlatın.

Aracın hala bir model adına ihtiyacı olacaktır. Barındırılan bir modeli sabit kodluyorsa, bunu ayarlayan bir bayrak veya yapılandırma satırı arayın ve uncensored'ı kullanın. Değiştirilemiyorsa, araç uygun değildir ve yukarıdaki gibi küçük bir betik daha iyi bir yoldur.

Önce bir anahtar edinin

İstekler Authorization: Bearer YOUR_KEY biçiminde bir başlıkla kimlik doğrulaması yapılır. Her resmi SDK, api_key argümanından bu başlığı sizin için oluşturur. Google veya e-posta ve şifre ile giriş yaptıktan sonra anahtarı oluşturabilirsiniz.

Yeni hesaplar, API anahtarı sayfası üzerinde tek tıkla $0.50 deneme kredisi talep edebilir. Kart gerekmez ve 7 gün sürer. Bu, aşağıdaki her örneği birçok kez çalıştırmak için yeterlidir. Deneme anahtarları 2 eşzamanlı istek ve dakika başına 60 istek izni verir, bu nedenle örnekleri tek tek çalıştırın.

Anahtarı kaynak dosyalar yerine bir ortam değişkeninde saklayın. Herkese açık bir depoya commit edilen bir anahtar saatler içinde başkası tarafından bulunur ve kullanılabilir, ve içindeki kredi size aittir.

curl ile ilk istek

URL'nin çalıştığını kanıtlamanın en hızlı yolu curl'dir, çünkü bu yöntem her türlü kütüphaneyi resimden çıkarır. Bu çağrı başarılı olursa, daha sonra karşılaşacağınız her sorun istemci yapılandırmanızdadır.

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

İlk çağrı model listesini döndürür; bu listede uncensored bulunmalıdır. İkinci çağrı standart bir sohbet tamamlama nesnesi döndürür. curl -i ile yanıt başlıklarına bakarsanız X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests ve X-RateLimit-Limit-Concurrency'i göreceksiniz. Belirli bir çağrı hakkında destek ile iletişime geçtiğinizde istek kimliğini saklayın.

OpenAI SDK ile Python

Kütüphaneyi pip install openai ile yükleyin, ardından istemci kurucusundaki iki argümanı değiştirin.

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 ve frekans ile varlık cezaları gibi parametreler modele iletilir. max_tokens değeri isteğe bağlıdır. Bu değer olmadan tamamlama, 100.000 tokenlik pencerenin kalanını kullanabilir; bu, istem ve tamamlama birlikte olur.

SDK ayrıca argüman geçmediğinizde iki ortam değişkenini de okur: OPENAI_BASE_URL ve OPENAI_API_KEY. Bu, düzenleyemediğiniz araçlar için faydalıdır. Her ikisini de ayarlayın, aracı başlatın ve bu API ile konuşur.

Node, akış ve JSON modu

Node kurulumu Python'u yansıtır. npm install openai ile yükleyin.

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

Akış, sunucu gönderimli olayları (SSE) kullanır ve kullanım son akışın sonunda raporlanır. Akışlı bir istek, akış bitene kadar eşzamanlılık slotunu tutar; bu nedenle bir akış açan ve onu okumayan bir istemci bir slotu bloke edecektir. JSON modunda, modelin istemde JSON yanıtı vermesi gerektiğini hala belirtin. Bayrak, çıktı biçimini kısıtlar, ancak net bir talimat size daha iyi alan adları sağlar.

Araç çağırma

Araçlar, yaygın OpenAI biçimini kullanır: bir tools listesi, isteğe bağlı bir tool_choice ve role: "tool" ile mesajlar olarak gönderilen araç sonuçları. Akış sırasında, tool_calls parça parça gelir.

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)

Modelden gelen argümanları güvenilmeyen girdi olarak ele alın. Herhangi bir şeyi çalıştırmadan önce doğrulayın. Model bir araç çağrısını atlayabilir veya yanlış bir alanla çağırabilir, her model yapabilir, bu nedenle döngünüzde bir yedek yol tutun.

URL başarısız olduğunda

Çoğu hata kısa bir listeye girer.

  • 404 Bulunamadı. Yol yanlış. Yaygın nedenlar: base URL, https://api.kimicode.cc olarak ayarlandıysa /v1 eksik bırakılmış olabilir veya https://api.kimicode.cc/v1/chat/completions olarak ayarlandıysa istemci yolu iki kez ekler. Yukarıdaki base URL'yi tam olarak kullanın.
  • 401 Yetkisiz. Anahtar eksik, yabancı bir boşluk veya yeni satır karakteri içeriyor veya başlık Bearer token değil. Değişkenin uzunluğunu yazdırarak kontrol edin.
  • Kod rate_limited ile 429. Dakikalık sınırı aştınız: tam anahtar için 300 istek, deneme anahtarı için 60 istek.
  • Kod concurrency ile 429. Aynı anda çok fazla istek: tam anahtar için 8, deneme anahtarı için 2.
  • Retry-After: 5 başlığı ile 429. Geçici aşırı yüklenme. Beş saniye bekleyin ve yeniden deneyin.
  • İstek çok büyük. Gövde sınırı 8 MB'tır ve istem artı tamamlama 100.000 token'a sığmalıdır.

Retry-After'ı saygı duyan ve diğer iki kod için geri çekilen bir yeniden deneme döngüsü bunların neredeyse tamamını ele alır. Çağrı başına maliyet düşüktür; fiyatlandırma sayfası token başına oranları içerir ve docs hızlı başlangıç başka bir OpenAI tarzı sağlayıcıdan geçiş adımlarını gösterir.

Yeniden denemeler ve üretim alışkanlıkları

İlk çağrı çalıştıktan sonra, göndermeden önce bir yeniden deneme sarmlayıcısı ekleyin. Mevcut olduğunda Retry-After başlığını saygı duyun ve aksi takdirde kısa bir rastgele gecikme ile geri çekilin.

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

Kendi eşzamanlılığınızı anahtarınıza göre sınırlayın: tam anahtar için 8'lik bir iş parçacığı havuzu, deneme anahtarı için 2. Bu, concurrency hatasını başlamadan önce durdurur ve her çağrı birkaç saniyeden fazla sürdüğünde dakikada 300 istek sınırında kalmanızı da sağlar.

Son olarak, token başına ödeme yaptığınızı unutmayın. Her çağrı için usage nesnesini günlüğe kaydedin ve X-Balance-USD başlığını izleyin. 1M giriş tokenı başına $0.15 ve 1M çıktı tokenı başına $0.50 ile, tipik bir sohbet dönüşü bir sent'in bir kesri kadardır, ancak döngüler ve uzun geçmişler birikir ve günlük size bunun nerede olduğunu söyler.

Sorular ve cevaplar

Bu API için temel URL nedir?

https://api.kimicode.cc/v1. Bunu herhangi bir OpenAI uyumlu istemcide temel URL olarak ayarlayın ve sonrasındaki yolu kütüphaneye bırakın.

Hangi model ID'sini gönderirim?

Model değeri olarak uncensored gönderin. Anahtarınızla GET /v1/models çağrısı yaparak bunu doğrulayabilirsiniz.

Anahtarım ile buradaki resmi Kimi uç noktasını kullanabilir miyim?

Hayır. Bu, kendi anahtarları ve tek bir açık ağırlıklı modeli olan ayrı bir hizmettir; herhangi bir satıcının resmi API'si değildir. Anahtarlar her iki yönde de taşınmaz.

Neden chat completions'da 404 hatası alıyorum?

Temel URL muhtemelen /v1 eksik veya zaten /chat/completions içeriyor. https://api.kimicode.cc/v1 kullanın ve başka hiçbir şey eklemeyin.

Anahtarınız tek bir formun uzağında

Bir hesap oluşturun, anahtarı kopyalayın ve temel URL'yi değiştirin. Kurulum bu kadar basit.

API anahtarı al