Dokümantasyon
Pi
Pi — Inflection sohbet botu ya da madeni para değil, Earendil’in terminal kodlama ajanı — özel bir sağlayıcıyı models.json içinde tek blok olarak alır: baseUrl, api, key ve istediğiniz model kimlikleri. Dört alanı doldurduğunuzda tek anahtarla Claude ve GPT ile konuşabilir.
~/.pi/agent/models.json içindeki özel sağlayıcı bloğu — baseUrl, api ve model kimlikleri — Earendil'in Pi terminal kodlama aracısını tek anahtarla Claude ve GPT üzerinde çalıştırır.
{
"providers": {
"kunavo": {
"baseUrl": "https://api.kunavo.com/v1",
"api": "openai-completions",
"apiKey": "$KUNAVO_API_KEY",
"models": [
{
"id": "claude-sonnet-5",
"name": "Claude Sonnet 5",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 1000000,
"maxTokens": 128000
},
{
"id": "claude-haiku-4-5",
"name": "Claude Haiku 4.5",
"input": ["text", "image"],
"contextWindow": 200000,
"maxTokens": 64000
}
]
}
}
}/v1 değerini openai-completions sağlayıcısında koruyun. Pi’nin model sayfasındaki uyumlu uç nokta örneğinde bu değer http://localhost:11434/v1 ile eşleştirilmiştir; belgeler 22 Eylül’de yeniden yazılmadan önce OpenRouter, Vercel AI Gateway ve llama.cpp örneklerinde de aynı sürüm yolu yer alıyordu. Hiçbir cümle kuralı açıkça belirtmediğinden bunu örnekler açıklığa kavuşturuyor. Son eki içermeyen bir Base URL kimlik doğrulama hatası değil, 404 sonucu verir.cost değeri varsayılan olarak tümüyle sıfırdır — bu varsayılan Pi’nin kaynak kodunda bulunuyor (v0.99.2), ancak belgelerde artık açıkça belirtilmiyor. Bu nedenle eklediğiniz sağlayıcı, oranları kendiniz girmediğiniz sürece alt bilgide ve /session içinde $0 gösterir. Bunun altındaki iki sessiz varsayılan daha da sorunludur: contextWindow için 128000, maxTokens içinse 16384 kullanılır; bu nedenle boş bıraktığınız model sıkıştırılır ve gerçekte işleyebileceği uzunluğun çok altında kısaltılır. Yukarıdaki blok bu iki değeri de katalogdan ayarlar; aşağıdaki tablodan eklediğiniz her kimlik için de aynısını yapın.--api-key, ardından kayıtlı bir auth.json kimlik bilgisi, models.json içinden gelen bir apiKey ve son olarak sağlayıcının ortam değişkenleri” kullanılır. Dolayısıyla /login ile kaydedilmiş eski bir anahtar dosyanızdakinden önce gelir; yeni düzenlediğiniz bloğun hâlâ başka bir kimlikle kimlik doğrulamasının olağan nedeni budur. Aynı sayfa, özel modellerin “models.json üzerinden yüklenebildiğini ancak Pi kimlik bilgilerini çözümleyene kadar /model içinde kullanılamadığını” da belirtiyor. Seçicide görünmeyen bir model, sözdizimi değil kimlik bilgisi sorunudur.api değerleri ise aynı gün v0.99.2 sürümündeki Pi kaynak kodundan alınmıştır. Kunavo, Pi'yi kendi uç noktasına karşı çalıştırmadı — ne oturum, ne akışlı tur, ne araç gidiş dönüşü, ne de bir isteğin hangi modele yönlendirildiğinin kontrolü yapıldı. Yayımlanmış bir kurulum sayfası yapılandırma başvurusudur, uyumluluk testi değildir; buradaki hiçbir şeyi böyle yorumlamayın. Aşağıdaki curl, on saniyede doğrulayabileceğiniz kısımdır; istemcinin davranışı Pi ile aranızdadır.sk-kn- ile başlar) ve $10'dan kredi ekleyin — çağrılar bu bakiyeden ödenir ve başarısız çağrılar ücretlendirilmez. Ardından kontrol paneli Pi kurulumunda açılır.Adım adım
/app/keysadresinde bir anahtar oluşturup kopyalayın — anahtar yalnızca bir kez gösterilir.- Ortam değişkenine
KUNAVO_API_KEYolarak ekleyin. Pi,apiKeyalanında"$NAME"veya"${NAME}"değerini, ayrıca doğrudan bir değeri ya da başında!commandbulunan bir değeri çözümler. Değişken adının ardından sabit metin geliyorsa süslü parantezli biçimi kullanın. ~/.pi/agent/models.jsondosyasını oluşturun veya düzenleyin ve yukarıdaki bloğu yapıştırın. Yerleşik olmayan bir sağlayıcı içinbaseUrlve sağlayıcı ya da model düzeyinde birapideğeri gerekir — Pi'nin kaynak kodu bunlar olmadan modeli yüklemeyi reddeder — diğer her şey isteğe bağlıdır./modelaçıldığında dosya yeniden yüklenir.piprogramını başlatın,/modelkomutunu çalıştırın ve tanımladığınız kimliklerden birini seçin. Listede görünmüyorlarsa JSON'dan önce anahtarı kontrol edin — yukarıdaki çözümleme sırası notuna bakın.- Gerçek bir dosyayı okuyup düzenlemesini gerektiren bir görev verin. Pi neredeyse yaptığı her şey için araç çağrımına dayanır; bu nedenle dosya sistemine dokunan ilk çalıştırma, bir selamlaşmadan çok daha fazla bilgi verir. Ayrıca akış veya araç şeması uyumsuzluğunu ortaya çıkaracak çalıştırma da budur; Kunavo'nun sizin için test etmediği şeyler tam olarak bu tür sorunlardır.
Pi'nin Model Seçme belgeleri ile 1 Ekim 2026 tarihinde kontrol edilmiştir. Üçüncü taraf ayarları değişebilir; buradaki alan adı gördüğünüzle artık eşleşmiyorsa yetkili kaynak bu sayfa değil, ilgili sayfadır.
İstemcide hata ayıklamadan önce doğrulayın
Tek bir istek, hatanın uç noktadan mı, anahtardan mı yoksa yapılandırma dosyasından mı kaynaklandığını kesinleştirir. Bu JSON döndürürse aynı temel URL ve anahtar Pi içinde çalışır.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Alana hangi model kimliği yazılmalı
Her metin modeline model kimliğiyle erişilebilir — güncel liste GET /v1/models, fiyatları içeren katalog ise modeller sayfasında. Ücretler 1 milyon token başına USD cinsindendir; giriş / çıkış.
| Model kimliği | Kunavo giriş / çıkış | Pi içinde kullanım alanı |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | dosyaları düzenleyen oturumlar için varsayılan çalışma modeli |
claude-opus-5 | $3.50 / $17.50 | yanlış yapmanın pahalıya mal olacağı bir değişikliği planlama |
claude-haiku-4-5 | $0.70 / $3.50 | ucuz turlar — önceliklendirme, özetler, gün boyu çalışan döngü |
gpt-5-6-sol | $2.00 / $12.00 | aynı anahtar ve aynı baseUrl ile başka bir aileden ikinci bir görüş |
Diğer seçenek: anthropic-messages
22 Eylül 2026 tarihli güncellemeye kadar Pi, özel sağlayıcının api alanı için dört değer belgeliyordu: openai-completions, openai-responses, anthropic-messages ve google-generative-ai. Güncellenen modeller sayfasında bunların hiçbiri listelenmiyor: bir örnekte openai-completions gösteriliyor ve durum “OpenAI, Anthropic veya Google uyumlu bir uç nokta” olarak açıklanıyor. Pi'nin v0.99.2 kaynak kodunda bu alan serbest bir metin olarak tanımlanıyor ve on yerleşik uygulamadan eşleşene yönlendiriliyor — söz konusu dört uygulamanın yanı sıra openai-codex-responses, azure-openai-responses, google-vertex, mistral-conversations, bedrock-converse-stream ve pi-messages. Özel sağlayıcı için yalnızca bu dört değer belgelenmişti; diğer altı değerin hiçbiri burada test edilmedi. Bu sayfadaki hiçbir ifade bunlardan herhangi birinin üçüncü taraf bir uç noktada çalıştığını söylemiyor.
anthropic-messages, belgelenmiş dört değerden biridir ve Kunavo, OpenAI uyumlu arayüzün yanı sıra Anthropic Messages arayüzünü de destekler. Dolayısıyla bu rota yapılandırılabilir. Ancak bu sayfada, kopyalayıp yapıştıracağınız bloğa bir temel URL yazılmayacak: Pi'nin belgeleri bu api alanını hiçbir zaman kesinleştirmedi. 22 Eylül'e kadar bu alan iki farklı şekilde gösteriliyordu: bir örnekte https://proxy.example.com/v1, diğerinde yalın https://proxy.example.com. O günkü belge güncellemesi birini seçmek yerine ikisini de kaldırdı. Bu rotayı seçerseniz önce birini deneyin; ilk çağrı 401 yerine 404 dönerse değiştirmeniz gereken satır budur.
Bu api için Pi'nin compat şemasındaki üç alanı bilmeniz yararlı olur (kaynak kodu, v0.99.2). Belgelerde bu alanların tümü için belirtilen tek kuralı önce aktarmakta fayda var: uyumluluk ayarları “uç noktanın istek veya yanıt davranışındaki doğrulanmış farklılıkları açıklamalıdır. Bir uç nokta yalnızca OpenAI veya Anthropic uyumluluğu sunduğunu belirtiyor diye bu ayarları etkinleştirmeyin.”
compat.supportsEagerToolInputStreaming— araç başına girdi akışının önceden başlatılmasını reddeden bir arka uç için.compat.supportsStrictTools— uç noktanın katı JSON şemalı araç tanımlarını kabul edip etmediğini belirtir; özel bir model, yerleşik Anthropic modelinin tanımladığı değeri devralmaz.compat.supportsMidConvoEffort— konuşma sırasında akıl yürütme düzeyini değiştirmek için. Bu uç noktanın uygun olup olmadığı çalışma zamanında belirlenir; Kunavo bunu herhangi bir şey çalıştırarak doğrulamadı.
Sayfanın üstündeki openai-completions bloğu bu üç ayardan da kaçınır. İddia edilen daha iyi performans değil, buradan başlamanın dürüst gerekçesi budur.
Sık sorulan sorular
Pi kodlama aracısını özel bir API sağlayıcısına nasıl yönlendiririm?
~/.pi/agent/models.json dosyasına bir sağlayıcı bloğu ekleyin. Pi'nin modeller sayfasında, “uç nokta Pi'nin zaten desteklediği bir API kullanıyorsa” models.json kullanılması önerilir. Şemada (kaynak kodu, v0.99.2) sağlayıcı düzeyinde baseUrl, apiKey, api, headers, authHeader, models ve modelOverrides alanları bulunur. Yerleşik olmayan bir sağlayıcı için sağlayıcı ya da model düzeyinde baseUrl ve api değeri gerekir. Şema api alanını bir liste değil, serbest metin olarak tanımlar: 22 Eylül 2026 tarihli belge güncellemesine kadar Pi özel sağlayıcı için dört değer belgeliyordu — openai-completions, openai-responses, anthropic-messages ve google-generative-ai. v0.99.2 kaynak kodu bu alanı on yerleşik uygulamadan herhangi birine yönlendiriyor; diğer altı uygulama bu kullanım için hiç belgelenmedi ve burada test edilmedi. OpenAI uyumlu bir uç nokta için güncellenen belgelerde gösterilmeye devam eden değer openai-completions'tır. models içindeki her girdide en az bir id bulunmalıdır; bu değer doğrudan uç noktaya iletilir. Dolayısıyla aynı yapı bir ağ geçidi, yerel bir Ollama veya vLLM sunucusu ve diğer tüm uyumlu barındırıcılar için geçerlidir.
Pi kodlama aracısı API anahtarını nereden alır?
Dört yerden alabilir ve Pi'nin modeller sayfası bunların sırasını yayımlar: önce çalışma zamanı --api-key değeri, ardından kayıtlı auth.json kimlik bilgisi, sonra models.json içindeki apiKey ve son olarak sağlayıcının ortam değişkenleri. Daha önce /login ile kaydedilen bir anahtar, models.json dosyasına az önce eklediğiniz anahtardan önce gelir. apiKey alanı ortam değişkeni enterpolasyonunu ("$NAME" veya "${NAME}"), doğrudan bir değeri ya da başında "!" bulunan kabuk komutu çıktısını kabul eder; böylece gizli anahtarın dosyada bulunması gerekmez. Kullanılabilir kimlik bilgisi yoksa belgelerde özel modellerin models.json dosyasından yükleneceği, ancak /model içinde kullanılamayacağı belirtiliyor.
Pi'nin baseUrl değerinin sonunda /v1 bulunması gerekir mi?
openai-completions sağlayıcısı için evet. Pi'nin belgeleri bu kuralı hiçbir zaman bir cümleyle açıkça belirtmiyor; ancak uyumlu uç nokta örneğinde Ollama için http://localhost:11434/v1 kullanılıyor ve 22 Eylül 2026 güncellemesinden önceki OpenRouter, Vercel AI Gateway ve llama.cpp örneklerinde de aynı sürüm yolu bulunuyordu. Bu nedenle OpenAI uyumlu bir uç nokta için https://api.kunavo.com/v1 gibi /v1 kökünü kullanın. anthropic-messages durumu gerçekten belirsiz: eski belgelerde hem /v1 içeren hem de içermeyen biçim gösteriliyordu; güncellemede iki örnek de seçim yapılmadan kaldırıldı.
Özel Pi sağlayıcım neden alt bilgide $0 gösteriyor?
Çünkü Pi, özel bir modelin maliyet nesnesi için varsayılan olarak tüm değerleri sıfır alır (kaynak kodu, v0.99.2); alt bilgi de uç noktanın ücretini değil, katalogdaki bilgiyi gösterir. Hiçbir şey ücretsiz değil; sağlayıcınızın kendi fiyat listesinden milyon girdi, çıktı, cacheRead ve cacheWrite başına ücretleri ve varsa kademeli fiyatları girene kadar bu sayının bir kaynağı yoktur. Dosyadayken yakınındaki iki varsayılanı da düzenleyin: contextWindow varsayılan olarak 128000, maxTokens ise 16384 olur. Bu nedenle daha büyük bağlam penceresine sahip bir model, iki değer de açıkça ayarlanmadıkça erken sıkıştırılır ve yanıtları erken kesilir.
Kunavo Pi kodlama aracısını test etti mi?
Hayır. Bu sayfadaki yapılandırma, gösterilen tarihte Pi'nin kendi belgelerinden ve 22 Eylül tarihli belge güncellemesinde bir ayrıntı çıkarıldığında Pi'nin yayımlanmış kaynak kodundan alınmıştır. Ancak bu istemciyle söz konusu uç noktada herhangi bir oturum, akışlı tur, araç gidiş dönüşü veya model yönlendirme kontrolü yapılmadı; bu bölümdeki tüm istemciler için de durum aynıdır. Kurulum bloğunu Pi şemasının kabul ettiği değerlere yönelik bir başvuru olarak kullanın, yukarıdaki curl komutuyla uç noktayı ve anahtarı doğrulayın ve bunu denerken çalışır durumdaki rotanızı erişilebilir tutun.