Providers
Pi mendukung penyedia berbasis langganan melalui penyedia OAuth dan API key melalui variabel lingkungan atau file autentikasi. Katalog bawaan dikirimkan dengan pi; penyedia yang dikonfigurasi dapat menyegarkan katalog baru dan menyimpannya dalam cache di ~/.pi/agent/models-store.json untuk penggunaan offline.
Daftar isi
Langganan
Gunakan /login dalam mode interaktif, lalu pilih penyedia:
- ObrolanGPT Plus/Pro (Kodeks)
- Claude Pro/Maks
- GitHub Kopilot
- xAI (langganan Grok/X)
- OpenRouter (OAuth-dicetak API key ditagih dari kredit OpenRouter)
- Radius
Gunakan /logout untuk menghapus kredensial. Token disimpan di ~/.pi/agent/auth.json dan disegarkan secara otomatis ketika habis masa berlakunya. OpenRouter malah mencetak API key yang dikontrol pengguna yang tidak kedaluwarsa secara otomatis.
Kodeks OpenAI
- Memerlukan langganan ChatGPT Plus atau Pro
- Secara resmi didukung oleh OpenAI: Codex for OSS
Claude Pro/Maks
Autentikasi langganan antropik aktif untuk akun Claude Pro/Max. Penggunaan harness pihak ketiga dimulai dari extra usage dan ditagih per token, tidak berdasarkan batas paket Claude.
GitHub Kopilot
- Tekan Enter untuk github.com, atau masukkan domain GitHub Server Perusahaan Anda
- Jika Anda mendapatkan "model tidak didukung", aktifkan di VS Code: Copilot Chat → model selector → pilih model → "Enable"
xAI (langganan Grok/X)
- Jalankan
/login xai, lalu pilih Gunakan langganan XAI_API_KEYtetap tersedia melalui Gunakan API key
BukaRouter
- Jalankan
/login openrouter, lalu pilih Masuk dengan OpenRouter untuk membuka alur otorisasi OpenRouter PKCE - Otorisasi ini membuat OpenRouter API key yang dikontrol pengguna ditagih dari kredit OpenRouter Anda
- Pada mesin jarak jauh/tanpa kepala (misalnya lebih dari SSH) browser tidak dapat menjangkau panggilan balik loopback; tempelkan URL pengalihan terakhir (atau kode otorisasi) ke dalam perintah login
OPENROUTER_API_KEYtetap tersedia melalui Gunakan API key
Radius
Radius adalah gerbang pi-messages yang dinamis. /login radius menyimpan OAuth token di auth.json; katalog gateway disegarkan secara independen dan disimpan dalam cache di models-store.json. Gateway Radius khusus dapat dideklarasikan di models.json dengan "oauth": "radius" dan gateway baseUrl.
API Kunci
Variabel Lingkungan atau File Auth
Gunakan /login dalam mode interaktif dan pilih penyedia untuk menyimpan API key di auth.json, atau atur kredensial melalui variabel lingkungan:
export ANTHROPIC_API_KEY=sk-ant-...
pi| Penyedia | Variabel Lingkungan | auth.json kunci |
|---|---|---|
| Antropis | ANTHROPIC_API_KEY |
anthropic |
| Semut Ling | ANT_LING_API_KEY |
ant-ling |
| Respons Azure OpenAI | AZURE_OPENAI_API_KEY |
azure-openai-responses |
| OpenAI | OPENAI_API_KEY |
openai |
| Pencarian Mendalam | DEEPSEEK_API_KEY |
deepseek |
| NVIDIA NIM | NVIDIA_API_KEY |
nvidia |
| Google Gemini | GEMINI_API_KEY |
google |
| Batuan Dasar Amazon | AWS_BEARER_TOKEN_BEDROCK |
amazon-bedrock |
| Mistral | MISTRAL_API_KEY |
mistral |
| Bagus | GROQ_API_KEY |
groq |
| otak besar | CEREBRAS_API_KEY |
cerebras |
| Gerbang AI Cloudflare | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_GATEWAY_ID) |
cloudflare-ai-gateway |
| AI Pekerja Cloudflare | CLOUDFLARE_API_KEY (+ CLOUDFLARE_ACCOUNT_ID) |
cloudflare-workers-ai |
| xAI | XAI_API_KEY |
xai |
| BukaRouter | OPENROUTER_API_KEY |
openrouter |
| Gerbang AI Vercel | AI_GATEWAY_API_KEY |
vercel-ai-gateway |
| Paket Pengkodean ZAI (Global) | ZAI_API_KEY |
zai |
| Paket Pengkodean ZAI (Tiongkok) | ZAI_CODING_CN_API_KEY |
zai-coding-cn |
| Kode Terbuka Zen | OPENCODE_API_KEY |
opencode |
| OpenCode Pergi | OPENCODE_API_KEY |
opencode-go |
| Radius | RADIUS_API_KEY |
radius |
| Hugging Face | HF_TOKEN |
huggingface |
| Kembang api | FIREWORKS_API_KEY |
fireworks |
| Bersama AI | TOGETHER_API_KEY |
together |
| Dasar | BASETEN_API_KEY |
baseten |
| Kimi Untuk Pengkodean | KIMI_API_KEY |
kimi-coding |
| Mini Maks | MINIMAX_API_KEY |
minimax |
| MiniMax (Cina) | MINIMAX_CN_API_KEY |
minimax-cn |
| Paket Token Qwen (katalog yang ada) | QWEN_TOKEN_PLAN_API_KEY |
qwen-token-plan |
| Paket Token Qwen (Individu) | QWEN_TOKEN_PLAN_API_KEY |
qwen-token-plan-individual |
| Paket Token Qwen (Tiongkok) | QWEN_TOKEN_PLAN_CN_API_KEY |
qwen-token-plan-cn |
| Xiaomi MiMo | XIAOMI_API_KEY |
xiaomi |
| Paket Token Xiaomi MiMo (Tiongkok) | XIAOMI_TOKEN_PLAN_CN_API_KEY |
xiaomi-token-plan-cn |
| Paket Token Xiaomi MiMo (Amsterdam) | XIAOMI_TOKEN_PLAN_AMS_API_KEY |
xiaomi-token-plan-ams |
| Paket Token Xiaomi MiMo (Singapura) | XIAOMI_TOKEN_PLAN_SGP_API_KEY |
xiaomi-token-plan-sgp |
Referensi untuk variabel lingkungan dan kunci auth.json: const envMap di packages/ai/src/env-api-keys.ts.
File Otentikasi
Simpan kredensial di ~/.pi/agent/auth.json:
{
"anthropic": { "type": "api_key", "key": "sk-ant-..." },
"ant-ling": { "type": "api_key", "key": "..." },
"openai": { "type": "api_key", "key": "sk-..." },
"deepseek": { "type": "api_key", "key": "sk-..." },
"nvidia": { "type": "api_key", "key": "nvapi-..." },
"google": { "type": "api_key", "key": "..." },
"opencode": { "type": "api_key", "key": "..." },
"opencode-go": { "type": "api_key", "key": "..." },
"together": { "type": "api_key", "key": "..." },
"qwen-token-plan": { "type": "api_key", "key": "sk-sp-..." },
"qwen-token-plan-individual": { "type": "api_key", "key": "sk-sp-..." },
"qwen-token-plan-cn": { "type": "api_key", "key": "sk-sp-..." },
"xiaomi": { "type": "api_key", "key": "..." },
"xiaomi-token-plan-cn": { "type": "api_key", "key": "..." },
"xiaomi-token-plan-ams": { "type": "api_key", "key": "..." },
"xiaomi-token-plan-sgp": { "type": "api_key", "key": "..." }
}qwen-token-plan-individual menggunakan titik akhir internasional yang sama dan QWEN_TOKEN_PLAN_API_KEY seperti
qwen-token-plan, namun membatasi pemilih pada model yang didokumentasikan untuk langganan Perorangan. Yang ada
penyedia menyimpan katalognya yang lebih luas untuk kompatibilitas ke belakang. Saat menggunakan auth.json, simpan
kredensial di bawah penyedia yang Anda pilih; variabel lingkungan digunakan bersama oleh kedua penyedia internasional.
File ini dibuat dengan izin 0600 (hanya baca/tulis pengguna). Kredensial file autentikasi lebih diprioritaskan daripada variabel lingkungan.
Kredensial API key juga dapat mencakup nilai lingkungan cakupan penyedia. Nilai-nilai ini digunakan sebelum variabel lingkungan proses ketika menyelesaikan kunci kredensial, header penyedia/model, dan konfigurasi penyedia seperti ID akun Cloudflare, pengaturan Azure OpenAI, proyek/lokasi Vertex, pengaturan Batuan Dasar, PI_CACHE_RETENTION, dan HTTP_PROXY/HTTPS_PROXY.
{
"cloudflare-ai-gateway": {
"type": "api_key",
"key": "$CLOUDFLARE_API_KEY",
"env": {
"CLOUDFLARE_API_KEY": "...",
"CLOUDFLARE_ACCOUNT_ID": "account-id",
"CLOUDFLARE_GATEWAY_ID": "gateway-id"
}
}
}Gunakan ini ketika pi harus menggunakan pengaturan penyedia yang berbeda dari lingkungan shell proyek.
Resolusi Kunci
Bidang key mendukung eksekusi perintah, interpolasi lingkungan, dan literal:
- Perintah shell:
"!command"di awal mengeksekusi seluruh nilai sebagai perintah dan menggunakan stdout (di-cache untuk masa proses){ "type": "api_key", "key": "!security find-generic-password -ws 'anthropic'" } { "type": "api_key", "key": "!op read 'op://vault/item/credential'" } - Interpolasi lingkungan:
"$ENV_VAR"atau"${ENV_VAR}"menggunakan nilai variabel bernama. Interpolasi berfungsi di dalam literal yang lebih besar.{ "type": "api_key", "key": "$MY_ANTHROPIC_KEY" } { "type": "api_key", "key": "${KEY_PREFIX}_${KEY_SUFFIX}" }$FOO_BARadalah variabelFOO_BAR; gunakan${FOO}_BARketikaBARadalah teks literal. Variabel lingkungan yang hilang membuat nilai tidak terselesaikan. - Lolos:
"quot;memancarkan"quot;literal;"$!"memancarkan"!"literal tanpa memicu eksekusi perintah.{ "type": "api_key", "key": "$literal-dollar-prefix" } { "type": "api_key", "key": "$!literal-bang-prefix" } - Nilai literal: Digunakan secara langsung. String huruf besar biasa seperti
MY_API_KEYbersifat literal; gunakan$MY_API_KEYuntuk variabel lingkungan.{ "type": "api_key", "key": "sk-ant-..." } { "type": "api_key", "key": "public" }
Kredensial OAuth juga disimpan di sini setelah /login dan dikelola secara otomatis.
Awan Providers
Azure OpenAI
export AZURE_OPENAI_API_KEY=...
export AZURE_OPENAI_BASE_URL=https://your-resource.ai.azure.com
# also supported: https://your-resource.cognitiveservices.azure.com
# also supported: https://your-resource.openai.azure.com
# root endpoints are auto-normalized to /openai/v1
# or use resource name instead of base URL
export AZURE_OPENAI_RESOURCE_NAME=your-resource
# Optional
export AZURE_OPENAI_API_VERSION=2024-02-01
export AZURE_OPENAI_DEPLOYMENT_NAME_MAP=gpt-4=my-gpt4,gpt-4o=my-gpt4oBatuan Dasar Amazon
Gunakan /login amazon-bedrock untuk menyimpan Batuan Dasar API key, atau konfigurasikan salah satu sumber kredensial AWS ambien di bawah:
# Option 1: AWS Profile
export AWS_PROFILE=your-profile
# Option 2: IAM Keys
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
# Option 3: Bearer Token
export AWS_BEARER_TOKEN_BEDROCK=...
# Optional region (defaults to us-east-1)
export AWS_REGION=us-west-2Juga mendukung peran tugas ECS (AWS_CONTAINER_CREDENTIALS_*) dan IRSA (AWS_WEB_IDENTITY_TOKEN_FILE).
pi --provider amazon-bedrock --model us.anthropic.claude-sonnet-4-20250514-v1:0Caching cepat diaktifkan secara otomatis untuk model Claude yang ID-nya berisi nama model yang dapat dikenali (model dasar dan profil inferensi yang ditentukan sistem). Untuk profil inferensi aplikasi (yang ARN-nya tidak berisi nama model), setel AWS_BEDROCK_FORCE_CACHE=1 untuk mengaktifkan titik cache:
export AWS_BEDROCK_FORCE_CACHE=1
pi --provider amazon-bedrock --model arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123Jika Anda menyambung ke proksi Bedrock API, variabel lingkungan berikut dapat digunakan:
# Set the URL for the Bedrock proxy (standard AWS SDK env var)
export AWS_ENDPOINT_URL_BEDROCK_RUNTIME=https://my.corp.proxy/bedrock
# Set if your proxy does not require authentication
export AWS_BEDROCK_SKIP_AUTH=1
# Set if your proxy only supports HTTP/1.1
export AWS_BEDROCK_FORCE_HTTP1=1Gerbang AI Cloudflare
CLOUDFLARE_API_KEY dapat diatur melalui /login. ID akun dan slug gateway dapat ditetapkan sebagai variabel lingkungan atau dalam objek env kredensial API key di auth.json.
export CLOUDFLARE_API_KEY=... # or use /login
export CLOUDFLARE_ACCOUNT_ID=...
export CLOUDFLARE_GATEWAY_ID=... # create at dash.cloudflare.com → AI → AI Gateway
pi --provider cloudflare-ai-gateway --model "claude-sonnet-4-5"Rute ke OpenAI, Anthropic, dan Workers AI melalui Cloudflare AI Gateway. AI Pekerja menggunakan ID model Terpadu API (/compat) dan awalan (workers-ai/@cf/...). OpenAI menggunakan rute passthrough OpenAI (/openai) dengan ID model OpenAI asli seperti gpt-5.1. Anthropic menggunakan rute passthrough Anthropic (/anthropic) dengan ID model Anthropic asli seperti claude-sonnet-4-5.
Otentikasi AI Gateway menggunakan CLOUDFLARE_API_KEY sebagai cf-aig-authorization. Otentikasi upstream dapat berupa salah satu dari:
| Mode | Minta autentikasi | Otentikasi hulu |
|---|---|---|
| AI pekerja | Hanya token Cloudflare | Cloudflare-asli |
| Penagihan terpadu | Hanya token Cloudflare | Cloudflare menangani autentikasi upstream dan mengurangi kredit |
| Disimpan BYOK | Hanya token Cloudflare | Cloudflare menyuntikkan kunci penyedia yang disimpan di dasbor AI Gateway |
| BYOK sebaris | Token Cloudflare ditambah header Authorization hulu |
Permintaan tersebut menyediakan kunci penyedia hulu |
Untuk penggunaan pi normal, pilih penagihan terpadu atau BYOK tersimpan. BYOK sebaris memerlukan konfigurasi header Authorization upstream tambahan untuk penyedia Cloudflare AI Gateway, misalnya melalui penggantian penyedia/model models.json.
AI Pekerja Cloudflare
CLOUDFLARE_API_KEY dapat diatur melalui /login. CLOUDFLARE_ACCOUNT_ID dapat ditetapkan sebagai variabel lingkungan atau dalam objek env kredensial API key di auth.json.
export CLOUDFLARE_API_KEY=... # or use /login
export CLOUDFLARE_ACCOUNT_ID=...
pi --provider cloudflare-workers-ai --model "@cf/moonshotai/kimi-k2.6"Pi secara otomatis menetapkan x-session-affinity untuk prefix caching diskon.
Google Vertex AI
Menggunakan Kredensial Default Aplikasi:
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT=your-project
export GOOGLE_CLOUD_LOCATION=us-central1Atau atur GOOGLE_APPLICATION_CREDENTIALS ke file kunci akun layanan.
llama.cpp
Pi mendukung server router llama.cpp. Konfigurasikan dengan /login llama.cpp, kelola model yang dimuat dengan /llama, dan pilih model yang dimuat dengan /model.
Lihat llama.cpp untuk pengaturan server, tata letak direktori model, variabel lingkungan, dan penggunaan perintah.
Kustom Providers
Melalui models.json: Tambahkan Ollama, LM Studio, vLLM, atau penyedia apa pun yang menggunakan API yang didukung (Penyelesaian OpenAI, Respons OpenAI, Pesan Antropik, AI Generatif Google). Lihat models.md.
Melalui ekstensi: Untuk penyedia yang memerlukan penerapan API atau alur OAuth khusus, buat ekstensi. Lihat custom-provider.md dan examples/extensions/custom-provider-gitlab-duo.
Perintah Resolusi
Saat menyelesaikan kredensial untuk penyedia:
- CLI
--api-keybendera auth.jsonentri (API key atau OAuth token)- Variabel lingkungan
- Kunci penyedia khusus dari
models.json