Dokümantasyon
Oh My Pi
Oh My Pi, sağlayıcılarını tek bir YAML dosyasında tutar. Seçtiğiniz adın altına yazılan üç satır — baseUrl, api, apiKey — omp'nin tek bir anahtarla Claude ve GPT'ye yönlendirme yapmasını sağlar; model listesi elle yazılmak yerine getirilir.
~/.omp/agent/models.yml içindeki bir sağlayıcı bloğu — baseUrl, api, apiKey — Oh My Pi'yi Kunavo'ya yönlendirir; keşif, model listesini GET /v1/models üzerinden doldurur.
providers:
kunavo:
baseUrl: https://api.kunavo.com/v1
api: openai-completions
apiKey: KUNAVO_API_KEY # an env-var name; literal text also works
discovery:
type: openai-models-list # reads GET /v1/models
# Prefer a fixed list to a discovered one? Drop the discovery block and
# declare ids instead. Omitted metadata defaults to a 128,000-token context
# window and a 16,384-token output limit, so set the real numbers from
# /models when they differ.
#
# models:
# - id: claude-sonnet-5
# name: Claude Sonnet 5
# contextWindow: ...
# maxTokens: .../v1 bulunmalıdır. omp, baseUrl değerini “Uç nokta kökü”, openai-completions değerini ise “OpenAI uyumlu Sohbet Tamamlama uç noktaları” olarak belgeler. 404 hatalarıyla ilgili sorun giderme maddesinde “Genel OpenAI uyumlu temel URL'ler genellikle /v1 ile biter” ifadesi yer alır. Her iki sayfadaki tüm özel sağlayıcı örnekleri aynı şekilde biter. “Genellikle” ifadesi, garantinin verilmediğini gösterir; ancak Kunavo /v1/chat/completions sunduğundan, https://api.kunavo.com/v1 bu adresi sağlayan köktür. Bu, yalın kaynak adresi isteyen Anthropic tarzı istemcilerin tersidir.authHeader kullanmayın. omp, bu ayarın “özellikle Authorization: Bearer değerinin normal bir üst bilgi olarak eklenmesini gerektiren” bir ağ geçidi için olduğunu belirtir ve “standart sağlayıcı istemcileri kendi normal kimlik doğrulama yöntemlerini zaten uygular” diye ekler. OpenAI uyumlu istemci de bu yöntemi uygular ve Kunavo bunu kabul eder. Yalnızca aşağıdaki curl komutunun yeniden üretmediği bir 401 hatası görürseniz ekleyin.curl aşağıdaki komut, on saniyede doğrulayabileceğiniz kısımdır; geri kalanı size ve omp'ye bağlıdı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 Oh My Pi kurulumunda açılır.Adım adım
/app/keysadresinde bir anahtar oluşturup kopyalayın — anahtar yalnızca bir kez gösterilir.- omp'yi başlatan kabukta
KUNAVO_API_KEYolarak dışa aktarın. omp, önceapiKeydeğerini ortam değişkeni adı olarak çözümler; değişken bulunamazsa metni doğrudan anahtar olarak kullanır. Bu nedenle değişken adındaki bir yazım hatası sessizce yüklenir ve ilk istekte başarısız olur.!ile başlayan değer ise kabuk komutu olarak çalıştırılır; bu, 1Password tarzı yöntemdir. - Yukarıdaki bloğu
~/.omp/agent/models.ymliçine koyun. Sağlayıcı kimliğini — buradakunavo— kendiniz seçersiniz; bu kimlik her seçicinin ilk bölümünü oluşturur. - Dosyayı yüklemek ve yalnızca bu sağlayıcıyı listelemek için
omp models kunavokomutunu çalıştırın. YAML veya şema sorunu varsamodels.yml validation failedve başarısız olan alan yazdırılır;omp models refresh kunavoise önbelleğe alınmış kataloğu kullanmak yerine yeni bir keşif çağrısını zorlar. - Bunu tam bir seçiciyle deneyin:
omp -p --model kunavo/claude-sonnet-5 "Reply with only OK". Ardındanompprogramını başlatın,/modelkomutunu yazın ve istediğiniz kimliği Default olarak atayın; model merkezi açıldığındamodels.ymldosyasını yeniden yükler./switch, yalnızca geçerli oturumu değiştirir.
omp'nin Sağlayıcılar sayfası ile 21 Eylül 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 Oh My 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ış | Oh My Pi içinde kullanım alanı |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | varsayılan rol — çoğu oturumda gerçekten kullanılan model |
claude-opus-5 | $3.50 / $17.50 | plan rolü; hatalı bir planın maliyeti belirteçlerden daha fazladır |
claude-haiku-4-5 | $0.70 / $3.50 | smol rolü: ilk değerlendirme, özetler ve hiç bitmeyen çağrılar |
gpt-5-6-sol | $2.00 / $12.00 | aynı sağlayıcı bloğunu kullanan, başka bir model ailesinden ikinci görüş |
Keşif: hangi tür seçilmeli ve seçicide ne görünür?
omp altı discovery.type değeri sunar ve bunlardan ikisi bir ağ geçidi için uygun görünür. Ancak yalnızca biri uygundur. proxy, “model satırlarında supported_endpoint_types bilgisi sunan, OpenAI ve Anthropic'i birlikte destekleyen bir proxy” için belgelenmiştir ve her modelin iletişim biçimini bu alana göre belirler. Kunavo GET /v1/models değerini yayımlamadığından proxy kullanıldığında tüm satırlar sağlayıcı düzeyindeki api değerine döner; bu değer de ayarlanmamışsa satırlar listeden çıkarılır. “Genel bir OpenAI uyumlu GET /v1/models uç noktası” olarak belgelenen openai-models-list kullanılması gereken seçenektir; yukarıdaki bloğun api: openai-completions içermesinin nedeni de budur: omp'nin kuralına göre “proxy dışında, keşif için sağlayıcı düzeyinde api gerekir”.
Seçiciyi açmadan önce bilmeniz gereken bir sonuç var. Kunavo'nun model listesi, etkin kataloğun tamamını içerir; bu nedenle keşfedilen bir sağlayıcıda sohbet modellerinin yanında görüntü, video ve müzik kimlikleri de görünür, ancak sohbet aktarımı bunları çağıramaz. Kunavo, sohbet satırlarında context_length değerini yayımlar. omp'nin modellerle ilgili belgelerine göre genel keşif bu alanı max_model_len alanından sonra okur; medya satırlarında ise bu alan bulunmaz. Bu nedenle bu satırlar gerçek bir değer yerine omp'nin varsayılan 128,000 belirteç değeriyle gelir. Kısa ve doğru bir seçici istiyorsanız keşif bloğunu kaldırın ve gerçekten kullandığınız üç veya dört kimliği tanımlayın.
omp ayrıca anthropic-messages protokolünü kullanabilir ve Kunavo /v1/messages rotasındaki isteklere yanıt verir. Bu sayfada bu ikili için bir yapılandırma bloğu sunulmuyor: burada atıf yapılan iki sayfada OpenAI uyumlu rota için temel URL biçimi açıklanıyor, ancak Anthropic rotasında sondaki /v1 bölümünün nasıl ele alındığı belirtilmiyor. Bir yapılandırma bloğunun amacı, okuyucunun onu kopyalayıp kullanabilmesidir. Bu yolu izlerseniz, Anthropic uyumlu bir uç noktada araç çağrıları 400 hatası verdiğinde belgelerde önerilen çözüm disableStrictTools: true ayarıdır.
Sık sorulan sorular
Oh My Pi'ye özel bir API sağlayıcısını nasıl eklerim?
Her şey ~/.omp/agent/models.yml dosyasında yapılır. `providers:` altında bir anahtar ekleyin; adı size aittir ve seçicinin sağlayıcı bölümünü oluşturur. Ardından omp'nin kendi "Add a custom provider" örneğindeki sırayı izleyerek baseUrl, api ve apiKey alanlarını ekleyin. Modelleri `models:` altında elle listeleyin veya omp'nin getirmesi için bir `discovery:` bloğu ekleyin. Sonra dosyanın yüklendiğini doğrulamak için `omp models <your-provider-id>` komutunu çalıştırın ve `omp --model <provider>/<model-id>` komutuyla ya da oturum içindeki /model merkeziyle bir model seçin.
Oh My Pi baseUrl değerinin sonunda /v1 olmalı mı?
OpenAI uyumlu bir uç nokta için evet. omp, baseUrl değerini uç nokta kökü olarak adlandırır ve tanımladığınız api ailesine ait rotayı ekler; dolayısıyla `api: openai-completions`, belirttiğiniz kökün altında sohbet tamamlama istekleri gönderileceği anlamına gelir. 404 hatalarıyla ilgili sorun giderme notunda, genel OpenAI uyumlu temel URL'lerin genellikle /v1 ile bittiği belirtilir ve belgelerdeki her özel sağlayıcı örneği de böyledir. Kunavo /v1/chat/completions hizmetini sunar; bu nedenle https://api.kunavo.com/v1 yazılmalıdır. /v1 eksikse kimlik doğrulama hatası yerine 404 veya "desteklenmeyen uç nokta" hatası görülür.
Oh My Pi API anahtarını nerede arar ve hangi değer önceliklidir?
models.yml içindeki apiKey değeri üç adımda çözümlenir: ! ile başlayan bir değer kabuk komutu olarak çalıştırılır ve baştaki ve sondaki boşlukları temizlenmiş stdout kullanılır; aksi durumda omp, tam olarak bu adda bir ortam değişkeni arar; böyle bir değişken yoksa metnin kendisini anahtar olarak kullanır. Son seçenek tuzak olabilir: hatalı yazılmış bir değişken adı sessizce yüklenir ve ilk istekte başarısız olur. Daha geniş öncelik sıralamasında models.yml anahtarı, omp'nin belgelerine göre kasıtlı olarak depolanmış OAuth'tan önce gelir. Dolayısıyla ağ geçidi için sağlanan bir anahtar, üst sistemdeki oturum açma bilgileriyle değiştirilmez.
omp'de bir ağ geçidi hangi keşif türünü kullanmalı?
Model başına supported_endpoint_types bilgisini ağ geçidi duyurmuyorsa proxy yerine openai-models-list kullanın. proxy, bir modelin /v1/messages ya da /v1/chat/completions adresine yönlendirilip yönlendirilmeyeceğine bu alana göre karar verir. Bu bilgi yoksa modeller sağlayıcı düzeyindeki api değerine döner veya listeden çıkarılır. Kunavo'nun /v1/models yanıtında bu alan yayımlanmadığından doğru tür genel OpenAI listesidir. omp, proxy dışındaki tüm keşif türleri için sağlayıcı düzeyinde bir api değeri ister. Önbelleğe alınmış kataloğu kullanmak yerine yeni bir veri çekimini zorlamak için `omp models refresh <provider>` komutunu çalıştırın.
Kunavo, Oh My Pi'yi kendi uç noktasına karşı test etti mi?
Hayır. 21 Eylül 2026 tarihinde kontrol edilen şey omp'nin kendi belgeleridir: alan adları, alanların sırası, anahtar çözümleme kuralı ve keşif türleri bu belgelerden alıntılanmıştır. Ayrıca iki ayrıntı varsayımda bulunmak yerine Kunavo'nun kendi /v1/models rotasında doğrulanmıştır. Burada api.kunavo.com'a karşı hiçbir omp oturumu çalıştırılmamıştır; istemci içindeki akış, araç gidiş dönüşleri veya model yönlendirmesi hakkında da hiçbir iddiada bulunulmamaktadır. Tek başına doğrulanabilecek şey, uç noktanın ve anahtarın çalışıp çalışmadığıdır; bu sayfadaki curl komutu bunu gösterir.