Dokumentasi
Oh My Pi
Oh My Pi menyimpan penyedianya dalam satu berkas YAML. Cukup tiga baris di bawah nama pilihan Anda — baseUrl, api, apiKey — dan omp dapat merutekan permintaan ke Claude dan GPT melalui satu kunci, dengan daftar model yang diambil otomatis, bukan diketik.
Blok provider di ~/.omp/agent/models.yml — baseUrl, api, apiKey — mengarahkan Oh My Pi ke Kunavo, dan discovery mengisi daftar model dari GET /v1/models.
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. omp mendokumentasikan baseUrl sebagai “akar endpoint” dan openai-completions sebagai “Penyelesaian Chat yang kompatibel dengan OpenAI”, sedangkan entri pemecahan masalah 404-nya menyatakan “URL dasar generik yang kompatibel dengan OpenAI biasanya diakhiri dengan /v1”. Semua contoh penyedia khusus di kedua halaman berakhir dengan cara yang sama. Kata “biasanya” adalah pembatasan dari dokumentasi, bukan jaminan — tetapi Kunavo menyediakan /v1/chat/completions, jadi https://api.kunavo.com/v1 adalah akar yang akan mengarah ke sana. Ini berlawanan dengan klien bergaya Anthropic, yang menginginkan origin tanpa jalur.authHeader pada rute ini. omp mendokumentasikannya untuk gateway yang “secara khusus memerlukan Authorization: Bearer disisipkan sebagai header biasa”, serta mencatat bahwa “klien penyedia standar sudah menerapkan skema autentikasi normalnya” — dan klien yang kompatibel dengan OpenAI memang demikian, begitu juga Kunavo. Tambahkan hanya jika Anda melihat kesalahan 401 yang tidak dapat direproduksi oleh curl di bawah ini.curl di bawah ini adalah bagian yang dapat Anda pastikan dalam sepuluh detik; selebihnya bergantung pada Anda dan omp.sk-kn-) dan tambahkan kredit mulai dari $10 — panggilan dibayar dari saldo tersebut, dan panggilan yang gagal tidak ditagihkan. Dasbor kemudian terbuka pada penyiapan Oh My Pi.Langkah demi langkah
- Buat key di
/app/keysdan salin — key hanya ditampilkan sekali. - Ekspor sebagai
KUNAVO_API_KEYdi shell yang menjalankan omp. omp terlebih dahulu menafsirkanapiKeysebagai nama variabel lingkungan, lalu jika tidak ditemukan, menganggap teks tersebut sebagai kunci literal. Jadi, salah ketik pada nama variabel akan terbaca tanpa pesan kesalahan, lalu gagal pada permintaan pertama. Nilai yang diawali!justru dijalankan sebagai perintah shell — itulah cara penggunaan 1Password. - Letakkan blok di atas di
~/.omp/agent/models.yml. Id penyedia —kunavodalam contoh ini — Anda tentukan sendiri dan menjadi bagian pertama dari setiap pemilih. - Jalankan
omp models kunavountuk memuat berkas dan hanya menampilkan penyedia ini. Masalah YAML atau skema akan mencetakmodels.yml validation failedbeserta kolom yang gagal;omp models refresh kunavomemaksa pemanggilan penemuan baru, alih-alih menggunakan katalog yang tersimpan di cache. - Uji dengan pemilih persis:
omp -p --model kunavo/claude-sonnet-5 "Reply with only OK". Lalu jalankanomp, ketik/model, dan tetapkan id yang diinginkan sebagai Default — pusat model memuat ulangmodels.ymlsaat dibuka./switchhanya mengubah sesi saat ini.
Diperiksa terhadap Halaman Penyedia omp pada 21 September 2026. Pengaturan pihak ketiga dapat berubah; jika nama bidang di sini tidak lagi sama dengan yang Anda lihat, halaman tersebut adalah acuan, bukan halaman ini.
Verifikasi sebelum men-debug klien
Satu permintaan menentukan apakah masalahnya ada pada endpoint, kunci, atau berkas konfigurasi. Jika ini mengembalikan JSON, base URL dan kunci yang sama berfungsi di Oh My Pi.
# 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-..."ID model yang harus dimasukkan ke bidang
Setiap model teks dapat diakses melalui ID model — daftar terkininya ada di GET /v1/models, dan katalog beserta harga ada di halaman model. Tarif dalam USD per 1 juta token, input / output.
| ID model | Kunavo masuk / keluar | Kegunaannya di Oh My Pi |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | peran default — model yang benar-benar digunakan di sebagian besar sesi |
claude-opus-5 | $3.50 / $17.50 | peran perencanaan, saat rencana yang keliru lebih merugikan daripada biaya token |
claude-haiku-4-5 | $0.70 / $3.50 | peran smol: triase, ringkasan, dan panggilan yang terus berdatangan |
gpt-5-6-sol | $2.00 / $12.00 | pendapat kedua dari keluarga model lain, dengan blok penyedia yang sama |
Penemuan: jenis apa yang digunakan, dan apa yang muncul di pemilih
omp menyediakan enam nilai discovery.type, dan dua di antaranya tampak cocok untuk gateway. Hanya satu yang benar. proxy didokumentasikan untuk “proksi campuran OpenAI/Anthropic yang baris modelnya menyatakan supported_endpoint_types”, lalu menentukan protokol wire setiap model dari kolom tersebut. GET /v1/models milik Kunavo tidak menyediakannya, jadi dengan proxy, setiap baris akan menggunakan api pada tingkat penyedia — atau, jika tidak diatur, akan dihapus. openai-models-list, yang didokumentasikan sebagai “endpoint generik GET /v1/models yang kompatibel dengan OpenAI”, adalah jenis yang harus digunakan. Itulah sebabnya blok di atas tetap menyertakan api: openai-completions: menurut aturan omp, “kecuali untuk proxy, penemuan memerlukan api pada tingkat penyedia”.
Ada satu konsekuensi yang perlu diketahui sebelum membuka pemilih. Daftar model Kunavo mencakup seluruh katalog yang diaktifkan, sehingga penyedia yang ditemukan akan menampilkan id gambar, video, dan musik bersama id chat, padahal transport chat tidak dapat memanggilnya. Kunavo mencantumkan context_length pada baris chat — yaitu kolom yang dibaca oleh penemuan generik omp setelah max_model_len, menurut dokumentasi modelnya — tetapi tidak mencantumkannya pada baris media. Karena itu, baris-baris tersebut akan memakai nilai default omp, yaitu 128,000 token, bukan jumlah yang sebenarnya. Jika Anda menginginkan pemilih yang ringkas dan akurat, hapus blok penemuan dan cantumkan tiga atau empat id yang benar-benar Anda gunakan.
omp juga dapat menggunakan anthropic-messages, dan Kunavo menerima /v1/messages. Halaman ini tidak menyertakan blok konfigurasi untuk pasangan tersebut: kedua halaman yang dirujuk di sini menjelaskan format URL dasar untuk rute yang kompatibel dengan OpenAI, tetapi tidak menjelaskan cara penanganan /v1 di akhir rute Anthropic. Padahal, tujuan blok konfigurasi adalah agar pembaca dapat langsung menyalinnya. Jika memilih rute tersebut,disableStrictTools: true adalah jawaban yang didokumentasikan untuk panggilan alat yang gagal dengan 400 pada endpoint yang kompatibel dengan Anthropic.
Pertanyaan umum
Bagaimana cara menambahkan penyedia API khusus ke Oh My Pi?
Semua pengaturan berada di ~/.omp/agent/models.yml. Tambahkan kunci di bawah `providers:` — namanya Anda tentukan sendiri dan akan menjadi bagian penyedia pada pemilih — lalu isi baseUrl, api, dan apiKey, sesuai urutan pada contoh "Tambahkan penyedia khusus" dari dokumentasi omp. Anda dapat mencantumkan model secara manual di bawah `models:`, atau menambahkan blok `discovery:` agar omp mengambilnya. Kemudian jalankan `omp models <your-provider-id>` untuk memastikan berkas berhasil dimuat, dan pilih model dengan `omp --model <provider>/<model-id>` atau pusat /model di dalam sesi.
Apakah baseUrl Oh My Pi perlu diakhiri dengan /v1?
Untuk endpoint yang kompatibel dengan OpenAI, ya. omp menyebut baseUrl sebagai akar endpoint dan menambahkan rute untuk keluarga api yang Anda nyatakan. Jadi, `api: openai-completions` berarti omp meminta penyelesaian chat pada akar yang Anda berikan. Catatan pemecahan masalah omp untuk kesalahan 404 menyebutkan bahwa URL dasar generik yang kompatibel dengan OpenAI biasanya diakhiri /v1, dan semua contoh penyedia khusus di dokumentasinya juga demikian. Kunavo menyediakan /v1/chat/completions, jadi akar yang perlu ditulis adalah https://api.kunavo.com/v1 — jika /v1 tidak disertakan, hasilnya adalah 404 atau "endpoint tidak didukung", bukan kesalahan autentikasi.
Di mana Oh My Pi mencari kunci API, dan urutan prioritasnya bagaimana?
Nilai apiKey di models.yml diuraikan dalam tiga tahap: nilai yang diawali ! dijalankan sebagai perintah shell dan keluaran standar setelah spasi di awal dan akhir dihapus akan digunakan; jika tidak, omp mencari variabel lingkungan dengan nama yang persis sama; jika variabel tersebut tidak ada, teksnya sendiri dianggap sebagai kunci. Pilihan terakhir itulah jebakannya — salah ketik nama variabel akan dimuat tanpa peringatan dan baru gagal pada permintaan pertama. Dalam urutan prioritas yang lebih luas, kunci models.yml mengalahkan OAuth tersimpan, dan omp mendokumentasikan hal ini sebagai disengaja. Jadi, kunci yang diberikan untuk gateway tidak akan ditimpa oleh login upstream.
Jenis penemuan apa yang sebaiknya digunakan gateway di omp?
openai-models-list, bukan proxy, kecuali gateway mencantumkan supported_endpoint_types pada setiap baris model — kolom itulah yang dibaca proxy untuk menentukan apakah model diarahkan ke /v1/messages atau /v1/chat/completions. Tanpa kolom tersebut, model akan menggunakan api tingkat penyedia atau dihapus. /v1/models Kunavo tidak mencantumkan kolom itu, jadi daftar OpenAI generik adalah jenis yang tepat; omp mewajibkan api tingkat penyedia untuk semua jenis penemuan kecuali proxy. Jalankan `omp models refresh <provider>` untuk memaksa pengambilan baru, alih-alih menggunakan katalog yang tersimpan di cache.
Apakah Kunavo sudah menguji Oh My Pi dengan endpoint-nya?
Belum. Yang diperiksa pada 21 September 2026 adalah dokumentasi omp sendiri — nama kolom, urutannya, aturan resolusi kunci, dan jenis penemuan dikutip dari dokumentasi tersebut; dua detail juga diperiksa langsung terhadap rute /v1/models Kunavo, bukan diasumsikan. Tidak ada sesi omp yang dijalankan dengan api.kunavo.com di sini, dan tidak ada klaim tentang streaming, bolak-balik pemanggilan alat, atau perutean model di dalam klien. Satu hal yang dapat dipastikan secara terpisah adalah apakah endpoint dan kunci berfungsi, dan itulah yang dilakukan perintah curl di halaman ini.