Kembali ke panduan
Pengaturan·1 Oktober 2026·Diperbarui 3 Oktober 2026·Baca 7 menit

Pengaturan model Pi Coding Agent: /login, models.json, dan Provider khusus

Gunakan /login untuk provider bawaan, tulis endpoint kompatibel ke models.json, lalu gunakan /model untuk beralih. Dirangkum berdasarkan dokumentasi setelah perubahan 22 September dan kode sumber v0.99.2.

Konfigurasi model agen coding Pi terbagi menjadi tiga lapisan: provider bawaan menggunakan /login untuk login (langganan atau kunci API) atau variabel lingkungan; endpoint yang tidak memiliki provider bawaan tetapi kompatibel dengan API OpenAI, Anthropic, atau Google ditulis di ~/.pi/agent/models.json; layanan yang memerlukan autentikasi atau protokol khusus memerlukan ekstensi. Setelah memilih, gunakan /model untuk beralih.Artikel ini, berdasarkan dokumentasi Pi setelah revisi 22 September 2026 dan kode sumber v0.99.2 yang dirilis 30 September 2026, menjelaskan cara mengatur setiap lapisan, urutan pembacaan kunci (yang berubah setelah revisi), tiga nilai default model khusus yang dapat menimbulkan kesalahan secara diam-diam, serta contoh lengkap untuk menghubungkan endpoint yang kompatibel dengan OpenAI.

Pertama, pastikan Pi yang dimaksud. Halaman ini membahas agen coding terminal yang dirilis Earendil di pi.dev, dengan repositori earendil-works/pi (sebelumnya badlogic/pi-mono), berlisensi MIT. Ini bukan chatbot Pi dari Inflection (pi.ai), bukan koin Pi Network, bukan Raspberry Pi, dan bukan Oh My Pi milik penulis lain.

Pertama, pilih metode koneksi

Bagian awal dokumentasi model Pi langsung memberikan tabel perbandingan ini:

Yang Anda milikiPendekatan yang disarankan
Paket langganan yang didukungLogin menggunakan /login
Kunci API dari provider tertentuSimpan menggunakan /login, atau tetapkan variabel lingkungan provider tersebut
Model GGUF lokalHubungkan ke router llama.cpp (kelola menggunakan /llama)
Endpoint yang kompatibel dengan OpenAI, Anthropic, atau GoogleTulis di models.json
Provider dengan protokol atau alur autentikasi khususTulis atau instal ekstensi provider

Pi memiliki katalog model bawaan dan dapat menambahkan data katalog yang lebih baru dari pi.dev; saat offline, Pi menggunakan cache. Untuk memaksa pembaruan, jalankan pi update --models. Konfigurasi model khusus hanya diperlukan jika Pi tidak memiliki provider atau endpoint yang Anda perlukan.

Memilih model di Pi

  • /model: cari dan pilih model. Hanya model dari provider yang sudah memiliki autentikasi yang dapat digunakan yang ditampilkan.
  • Tekan Ctrl+S pada model: simpan sebagai model default untuk sesi kerja baru.
  • /thinking: pilih tingkat penalaran model saat ini. Pi hanya menampilkan tingkat yang didukung model tersebut; tekan Ctrl+S untuk menyimpannya sebagai default saat mulai.
  • Ctrl+P: beralih di antara model yang tersedia; /scoped-models mengatur daftar peralihan dan menyimpannya.

Sesi mencatat perubahan model dan tingkat penalaran. Saat sesi dipulihkan, perubahan tersebut dipulihkan sesuai catatan, tetapi default untuk sesi baru tidak diubah.

Urutan pembacaan kunci (berubah setelah revisi)

Jika beberapa sumber kunci ditetapkan sekaligus, urutan yang ditulis dalam dokumentasi Pi adalah: --api-key saat runtime → kredensial yang disimpan di auth.json → apiKey di models.json → variabel lingkungan provider (atau kredensial lingkungan platform cloud). Karena itu, kunci lama yang disimpan melalui /login akan mengalahkan kunci yang baru saja Anda tulis ke file. Inilah penyebab paling umum dari “sudah mengubah konfigurasi tetapi masih menggunakan akun lama”; /logout dapat menghapus kredensial yang tersimpan. Perhatikan bahwa sebelum revisi 22 September, dokumentasi menempatkan variabel lingkungan sebelum models.json; tutorial lama di internet mungkin masih menggunakan urutan lama.

Kesalahpahaman umum lainnya: jika model tidak muncul di /model, penyebabnya biasanya masalah autentikasi, bukan kesalahan penulisan JSON. Dokumentasi menyatakan bahwa model khusus dapat dimuat dari models.json, tetapi model tersebut akan tetap “tidak tersedia” sampai Pi berhasil mengurai kredensialnya.

models.json: contoh lengkap untuk menghubungkan endpoint yang kompatibel dengan OpenAI

Contoh Pi sendiri menggunakan Ollama lokal — kunci dummy hanya membuat model menjadi tersedia; Ollama sendiri tidak memeriksanya:

Contoh resmi: Ollama lokal
{
  "providers": {
    "ollama": {
      "baseUrl": "http://localhost:11434/v1",
      "api": "openai-completions",
      "apiKey": "ollama",
      "models": [{ "id": "qwen2.5-coder:7b" }]
    }
  }
}

Untuk menghubungkan endpoint yang memerlukan autentikasi, misalnya Kunavo, konfigurasinya seperti ini:

~/.pi/agent/models.json
{
  "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
        }
      ]
    }
  }
}
  • baseUrl dan api wajib diisi.Keduanya dapat ditulis pada tingkat provider atau model; berdasarkan kode sumber v0.99.2, jika salah satunya tidak ada, Pi tidak memuat model tersebut.
  • api bukan pilihan satu dari empat.Sebelum revisi 22 September, dokumentasi Pi mencantumkan empat nilai untuk provider khusus: openai-completions, openai-responses, anthropic-messages, google-generative-ai. Dokumentasi setelah revisi tidak lagi mencantumkan daftar; tabel perbandingan di atas hanya menyebut “endpoint yang kompatibel dengan OpenAI, Anthropic, atau Google”, dan contoh hanya menggunakan openai-completions. Kode sumber v0.99.2 mendefinisikan api sebagai string arbitrer yang diproses oleh implementasi bawaan yang sesuai dari sepuluh implementasi: empat nilai di atas ditambah openai-codex-responses, azure-openai-responses, google-vertex, mistral-conversations, bedrock-converse-stream, dan pi-messages. Hanya empat nilai pertama yang pernah didokumentasikan sebagai penggunaan provider khusus; enam lainnya belum diuji di sini, dan halaman ini tidak menyatakan bahwa semuanya dapat menghubungkan endpoint pihak ketiga.
  • openai-completions untuk baseUrl harus menyertakan /v1.Dokumentasi tidak menetapkannya dalam satu kalimat, tetapi semua contoh endpoint kompatibel menyertakan jalur versi. Tanpa /v1, Anda akan mendapatkan 404, bukan kesalahan autentikasi.
  • Jangan menulis kunci secara permanen.apiKey dan nilai header dapat menggunakan $NAME atau ${NAME} untuk merujuk variabel lingkungan, berisi nilai langsung, atau menggunakan !指令 untuk mengambilnya. Dokumentasi menyatakan bahwa perintah di models.json dijalankan pada setiap permintaan dan tidak di-cache. Rahasiakan auth.json serta setiap perintah yang mengambil kunci.
  • Tidak perlu memulai ulang setelah perubahan.Saat /model dibuka, file akan dibaca ulang. Item dengan ID yang sama di models akan menambahkan atau menggantikan model provider tersebut; untuk mengubah metadata model bawaan tanpa mengganti seluruh daftar, gunakan modelOverrides.

Tiga nilai default yang dapat menimbulkan kesalahan secara diam-diam

Revisi dokumentasi 22 September menghapus tabel kolom, tetapi nilai default masih ada dalam kode sumber (v0.99.2 provider-composer.ts). Jika tidak diisi, model khusus akan menerapkan nilai berikut:

KolomDefault jika tidak diisiDampak
costinput, output, cacheRead, dan cacheWrite semuanya 0Biaya di bagian bawah dan di /session terus ditampilkan sebagai $0. Ini bukan berarti gratis, hanya berarti tidak ada sumber harga
contextWindow128000Model dengan konteks lebih besar akan dikompresi terlalu cepat
maxTokens16384Respons panjang terpotong

Selain itu, reasoning default-nya false, sedangkan input default-nya hanya teks. Contoh Kunavo di atas sudah mengisi konteks dan batas output berdasarkan tabel harga, tetapi tidak menyertakan cost, karena menulis harga secara permanen di file akan cepat kedaluwarsa. Jika ingin biaya ditampilkan di bagian bawah, isi sendiri harga per satu juta token sesuai tabel harga. Pi juga mendukung promptCache (menyatakan masa hidup cache penyedia dalam detik untuk pemanasan cache); dokumentasi menyarankan memilih nilai konservatif dalam rentang yang dipublikasikan.

anthropic-messages: dapat digunakan, tetapi baseUrl belum pasti

anthropic-messages adalah salah satu dari empat nilai yang dicantumkan dokumentasi sebelum revisi untuk provider khusus, dan Kunavo juga menyediakan antarmuka Anthropic Messages, sehingga jalur api: "anthropic-messages" ini tersedia. Namun, dokumentasi Pi tidak pernah menjelaskan dengan tegas apakah baseUrl untuk jenis ini harus menyertakan /v1: sebelum revisi, satu contoh menggunakan https://proxy.example.com/v1, sedangkan contoh lain menggunakan https://proxy.example.com tanpa jalur; setelah revisi, kedua contoh dihapus dan belum ada kesimpulan. Jika memilih jalur ini, coba salah satunya terlebih dahulu; jika permintaan pertama mengembalikan 404 (bukan 401), ubah baris ini. Di compat juga terdapat beberapa sakelar yang dirancang khusus untuk endpoint nonresmi (misalnya supportsEagerToolInputStreaming dan supportsStrictTools), tetapi dokumentasi mengingatkan bahwa pengaturan kompatibilitas harus menggambarkan “perbedaan perilaku yang telah diverifikasi”, bukan diaktifkan hanya karena endpoint mengklaim kompatibel dengan OpenAI atau Anthropic. Contoh openai-completions di atas menghindari masalah ini, dan itulah alasan sebenarnya contoh tersebut disarankan sebagai titik awal, bukan karena lebih cepat.

Penjelasan jujur dan pembayaran

Di atas adalah referensi konfigurasi yang dirangkum dari dokumentasi dan kode sumber Pi. Kunavo belum benar-benar menjalankan endpoint-nya sendiri melalui Pi — belum menjalankan sesi, streaming, atau pertukaran alat, dan belum memastikan model mana yang akhirnya menerima permintaan. Pertahankan jalur yang saat ini dapat digunakan dan coba beri Pi tugas yang membaca dan menulis file nyata; Pi mengandalkan panggilan alat hampir di setiap langkah, sehingga eksekusi pertama seperti ini paling efektif mengungkap masalah ketidakcocokan format streaming atau alat. Halaman konfigurasi lengkap dalam bahasa Inggris tersedia di Pi integration guide; perbandingan berbagai jalur berbayar (termasuk gateway Radius milik Earendil) tersedia di Pi coding agent pricing.

Kunavo menggunakan saldo prabayar dan memotong berdasarkan token, tanpa biaya bulanan. Isi ulang minimum $10; pembayaran diproses melalui Stripe, dengan kartu kredit Taiwan (Visa, Mastercard, American Express, JCB, UnionPay), Apple Pay, Google Pay, dan Link. JkoPay dan LINE Pay tidak termasuk dalam daftar yang tersedia. Lihat penjelasan penagihan; jika sudah siap, Anda dapat membuat akun dan menghasilkan kunci.

Pertanyaan umum

Bagaimana cara mengganti model di agen coding Pi?

Masukkan /model di Pi untuk mencari dan memilih model yang tersedia; tekan Ctrl+S pada model untuk menyimpannya sebagai default sesi kerja baru, gunakan /thinking untuk memilih tingkat penalaran (simpan juga sebagai default saat mulai dengan Ctrl+S), tekan Ctrl+P untuk beralih di antara model yang tersedia, dan gunakan /scoped-models untuk mengatur cakupan peralihan. Menu hanya menampilkan model dari provider yang sudah memiliki autentikasi yang dapat digunakan; sesi mencatat riwayat pergantian model dan memulihkannya saat sesi dilanjutkan, tetapi tidak mengubah default untuk sesi baru.

Bagaimana cara menghubungkan endpoint API khusus ke Pi?

Untuk provider bawaan, cukup gunakan /login atau variabel lingkungan. Jika Pi tidak memiliki provider bawaan tetapi mendukung API yang digunakan endpoint tersebut (kompatibel dengan OpenAI, Anthropic, atau Google), tambahkan blok provider di ~/.pi/agent/models.json yang berisi baseUrl, api, apiKey, dan daftar models. Jika baseUrl atau api tidak ada, kode sumber Pi tidak akan memuat model tersebut. api bukan pilihan tetap yang terbatas: sebelum revisi dokumentasi 22 September 2026, nilai yang didokumentasikan Pi untuk provider khusus ada empat (openai-completions, openai-responses, anthropic-messages, google-generative-ai). Dokumentasi setelah revisi tidak lagi mencantumkan daftar; kode sumber v0.99.2 mendefinisikan api sebagai string arbitrer dan menyerahkannya kepada salah satu dari sepuluh implementasi bawaan yang sesuai. Enam lainnya belum pernah didokumentasikan sebagai penggunaan provider khusus dan juga belum diuji di sini. Untuk menghubungkan endpoint yang kompatibel dengan OpenAI, gunakan openai-completions, yang masih digunakan dalam contoh dokumentasi setelah revisi. Layanan yang memerlukan streaming khusus, penemuan model, atau alur autentikasi khusus memerlukan ekstensi provider.

Dari mana Pi membaca kunci API? Apa urutannya?

Dokumentasi model Pi (1 Oktober 2026) menyatakan urutannya sebagai berikut: --api-key saat runtime memiliki prioritas tertinggi, kemudian kredensial yang disimpan di auth.json (yang disimpan oleh /login), lalu apiKey di models.json, dan terakhir variabel lingkungan provider. Jadi, kunci lama yang sebelumnya disimpan melalui /login akan mengalahkan kunci yang baru saja Anda tulis di models.json. Kolom apiKey dapat merujuk variabel lingkungan dengan $NAME atau ${NAME}, berisi nilai langsung, atau menjalankan perintah untuk mengambil nilai jika diawali dengan !. Perhatikan bahwa urutan ini berbeda sebelum revisi dokumentasi 22 September 2026 (variabel lingkungan berada sebelum models.json); tutorial lama mungkin masih mencantumkan urutan lama.

Mengapa model yang saya tambahkan sendiri ditampilkan sebagai $0 di bagian bawah Pi?

Karena cost untuk model khusus secara default semuanya 0 (berdasarkan kode sumber v0.99.2). Tampilan bagian bawah dan /session menggunakan harga dalam file konfigurasi, bukan biaya aktual yang ditagihkan endpoint. Model tersebut bukan gratis; hanya tidak memiliki sumber harga. Isi harga input, output, cacheRead, dan cacheWrite per satu juta token sesuai tabel harga penyedia. Isi juga contextWindow dan maxTokens: jika tidak diisi, default-nya masing-masing 128000 dan 16384, sehingga model dengan konteks besar dapat dikompresi terlalu cepat dan respons terpotong.

Haruskah baseUrl Pi menyertakan /v1?

Untuk jenis openai-completions, ya. Dokumentasi Pi tidak menjelaskan aturan ini dalam satu kalimat, tetapi contoh endpoint kompatibelnya menggunakan Ollama di http://localhost:11434/v1; contoh OpenRouter, Vercel AI Gateway, dan llama.cpp sebelum revisi juga menyertakan jalur versi. Jadi, untuk endpoint yang kompatibel dengan OpenAI, isi root /v1, misalnya https://api.kunavo.com/v1. Untuk jenis anthropic-messages, belum ada kesimpulan: sebelum revisi, satu bagian dokumentasi mencantumkan /v1 dan bagian lain tidak; setelah revisi, kedua contoh menghapusnya, tanpa menjelaskan mana yang benar.

Diverifikasi pada 1 Oktober 2026: pi.dev/docs/latest/models (Choose a Model) dan halaman providers; src/core/model-config.ts dan provider-composer.ts pada tag v0.99.2 dari earendil-works/pi; serta informasi versi dari GitHub API. Pada hari yang sama, kolom api diverifikasi secara terpisah: nilai yang saat ini tercantum di halaman models (hanya openai-completions dalam contoh Ollama), tipe api di model-config.ts v0.99.2 (string arbitrer, baris 191 dan 233), pembagian model khusus oleh provider-composer.ts (baris 579), serta BUILTIN_APIS di packages/ai/src/compat.ts (baris 180, total sepuluh jenis). Kunavo belum menjalankan endpoint-nya sendiri melalui Pi.