Dokumentasi

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.

~/.omp/agent/models.yml
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: ...
URL dasar tetap menggunakan sufiks /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.
Jangan sertakan 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.
Konfigurasi ini disusun berdasarkan dokumentasi omp sendiri pada tanggal di bawah ini. Kunavo belum menjalankan omp dengan endpoint-nya — belum ada sesi, giliran streaming, bolak-balik pemanggilan alat, ataupun pemeriksaan perutean. Halaman penyiapan yang dipublikasikan bukanlah pengujian, dan informasi di sini tidak boleh dianggap demikian. curl di bawah ini adalah bagian yang dapat Anda pastikan dalam sepuluh detik; selebihnya bergantung pada Anda dan omp.
Kunavo tidak menyediakan model embedding, text-to-speech, atau speech-to-text, jadi penyedia ini hanya menjawab chat. Apa pun dalam penyiapan Anda yang mentranskripsikan audio atau membangun indeks vektor tetap menggunakan kunci penyedia yang sudah dimilikinya.
Belum punya kunci? Buat akun Kunavo, buat kunci (diawali 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

  1. Buat key di /app/keys dan salin — key hanya ditampilkan sekali.
  2. Ekspor sebagai KUNAVO_API_KEY di shell yang menjalankan omp. omp terlebih dahulu menafsirkan apiKey sebagai 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.
  3. Letakkan blok di atas di ~/.omp/agent/models.yml. Id penyedia — kunavo dalam contoh ini — Anda tentukan sendiri dan menjadi bagian pertama dari setiap pemilih.
  4. Jalankan omp models kunavo untuk memuat berkas dan hanya menampilkan penyedia ini. Masalah YAML atau skema akan mencetak models.yml validation failed beserta kolom yang gagal; omp models refresh kunavo memaksa pemanggilan penemuan baru, alih-alih menggunakan katalog yang tersimpan di cache.
  5. Uji dengan pemilih persis: omp -p --model kunavo/claude-sonnet-5 "Reply with only OK". Lalu jalankan omp, ketik /model, dan tetapkan id yang diinginkan sebagai Default — pusat model memuat ulang models.yml saat dibuka. /switch hanya 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.

Ini versi singkatnya. Panduan lengkap — pilihan model, biaya sesi nyata, dan mode kegagalan — ada di perbandingan Oh My Pi dengan OpenCode.

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 modelKunavo masuk / keluarKegunaannya di Oh My Pi
claude-sonnet-5$1.40 / $7.00peran default — model yang benar-benar digunakan di sebagian besar sesi
claude-opus-5$3.50 / $17.50peran perencanaan, saat rencana yang keliru lebih merugikan daripada biaya token
claude-haiku-4-5$0.70 / $3.50peran smol: triase, ringkasan, dan panggilan yang terus berdatangan
gpt-5-6-sol$2.00 / $12.00pendapat kedua dari keluarga model lain, dengan blok penyedia yang sama
Penagihan dilakukan per token dari saldo prabayar tanpa biaya bulanan — lihat penagihan. Pada konteks berulang — yang merupakan sebagian besar kiriman editor atau klien obrolan — caching prompt lebih memengaruhi tagihan daripada pilihan model.

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.