文件

文件

Pi

Pi 是 Earendil 開發的終端機程式開發代理,不是 Inflection 聊天機器人,也不是加密貨幣;只要在 models.json 中加入一個區塊,就能設定自訂供應商:填入 baseUrl、api、金鑰和您要使用的模型 ID。設定四個欄位,即可透過同一把金鑰使用 Claude 和 GPT。

在 ~/.pi/agent/models.json 中設定自訂供應商區塊 — baseUrl、api 與模型 ID — 讓 Earendil 的 Pi 終端程式設計代理透過一組金鑰使用 Claude 與 GPT。

~/.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
        }
      ]
    }
  }
}
請在 openai-completions 供應商中保留 /v1。 Pi 的模型頁面中,相容端點範例會將該值與 http://localhost:11434/v1 配對;而在 9 月 22 日文件改寫前,其 OpenRouter、Vercel AI Gateway 和 llama.cpp 範例也使用了相同版本路徑。文件沒有用文字明確說明這項規則,因此只能從範例判斷。Base URL 若不含該後綴,會顯示為 404,而不是驗證錯誤。
自訂模型的 cost 預設值全為零——這個預設值在 Pi 原始碼(v0.99.2)中,現行文件已未明確說明。這表示您剛新增的供應商會在頁尾和 /session 中顯示 $0,直到您自行輸入費率。下方另外兩個不明顯的預設值影響更大:contextWindow 會採用 128000 作為預設值,maxTokens 則會採用 16384,因此留白的模型會被壓縮,而且截斷長度遠低於它實際可接受的上限。上方區塊會依據模型目錄設定這兩個值;您從下方表格新增 ID 時,也請如此設定。
Pi 依照自己的順序尋找金鑰。 Pi 的模型頁面指出,若設定了多個來源,會依序使用「先是執行階段的 --api-key,接著是儲存的 auth.json 憑證、來自 models.json 的 apiKey,最後是提供者的環境變數」。因此,透過 /login 儲存的舊金鑰會優先於檔案中的金鑰,這通常是剛編輯完設定區塊,驗證時卻仍使用另一組憑證的原因。同一頁還指出,自訂模型「可以從 models.json 載入,但在 Pi 能解析憑證之前,不會出現在 /model 中」——模型不會出現在選取器中,問題出在憑證而非語法。
本區塊是在下方所示日期根據 Pi 自己的文件整理的;文件在 9 月 22 日不再說明的內容——欄位名稱、自訂模型預設值和 api 值——則在下方所示的同一日期根據 Pi v0.99.2 原始碼整理。Kunavo 尚未使用 Pi 向自己的端點發出請求——沒有執行工作階段、串流對話回合、工具往返,也沒有檢查請求最後使用了哪個模型。已發布的設定頁面是設定參考,不是相容性測試,本頁任何內容都不應被視為此類測試。下方的 curl 是您可以在十秒內自行確認的部分;用戶端的行為則需要您自行與 Pi 方面處理。
還沒有金鑰?建立 Kunavo 帳戶,建立金鑰(以 sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 Pi 設定。

逐步操作

  1. 在 /app/keys 建立金鑰並複製——金鑰只會顯示一次。
  2. 將金鑰設為環境變數 KUNAVO_API_KEY。Pi 會在 apiKey 欄位中解析 "$NAME" 或 "${NAME}",也接受直接輸入值或以 !command 開頭的寫法。若變數名稱後面還有一般文字,請使用大括號格式。
  3. 建立或編輯 ~/.pi/agent/models.json,並貼上上方區塊。非內建供應商必須提供 baseUrl,且供應商或模型層級至少有一個 api 值——Pi 原始碼會在缺少這些值時拒絕載入模型——其他設定則皆為選填。開啟 /model 即可重新載入檔案。
  4. 啟動 pi、執行 /model,並選擇你宣告的其中一個 ID。如果清單中沒有它們,請檢查 JSON 前面的金鑰——請參閱上方的解析順序說明。
  5. 給它一項會讀取並編輯實際檔案的任務。Pi 幾乎所有操作都仰賴工具呼叫,因此第一次執行若能存取檔案系統,會比打招呼讓你了解更多——而且這正是能揭露串流或工具結構描述不相符的測試;Kunavo 尚未替你測試這類問題。

已於 2026年10月1日 根據 Pi 的「選擇模型」文件 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。

這是簡短版本。完整指南——模型選擇、實際工作階段費用,以及失敗情況——請參閱 Pi 實際執行的成本,依路由逐一說明。

除錯用戶端前先驗證

一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 JSON,則相同的基礎 URL 與金鑰在 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

每個文字模型都能以模型 ID 存取——即時清單位於 GET /v1/models,帶有價格的目錄位於模型頁面。費率是每 1M 權杖的美元價格,輸入/輸出。

模型 IDKunavo 輸入/輸出它在 Pi 中的位置
claude-sonnet-5$1.40 / $7.00適合作為會編輯檔案的工作階段預設模型
claude-opus-5$3.50 / $17.50規劃一項出錯代價高昂的變更
claude-haiku-4-5$0.70 / $3.50低成本回合——分類、摘要,以及全天候執行的迴圈
gpt-5-6-sol$2.00 / $12.00使用相同金鑰和相同 baseUrl,聽聽另一個模型家族的第二意見
計費方式是從預付餘額按權杖計費,沒有月費——請參閱 billing。在重複的上下文中——這是編輯器或聊天用戶端傳送內容的大部分——提示快取 對帳單的影響比模型選擇更大。

另一種方式:anthropic-messages

在 2026 年 9 月 22 日文件更新之前,Pi 為自訂提供者的 api 記載了四種值——openai-completions、openai-responses、anthropic-messages 和 google-generative-ai。更新後的模型頁面沒有列出任何值:範例中顯示 openai-completions,並將情況描述為「OpenAI、Anthropic 或 Google 相容的端點」。Pi v0.99.2 的原始碼將此欄位型別定義為自由字串,並將其派送至十種內建實作中相符的一種——上述四種加上 openai-codex-responses、azure-openai-responses、google-vertex、mistral-conversations、bedrock-converse-stream 和 pi-messages。自訂提供者過去只有上述四種值有文件記載;其餘六種都未在此測試。本頁並未表示其中任何一種可搭配第三方端點使用。

anthropic-messages 是文件記載的四種值之一,而 Kunavo 除了支援 OpenAI 相容介面,也支援 Anthropic Messages 介面。因此,這條路由在設定上是可行的。本頁不會提供可直接貼上的設定區塊,並在其中替它填入 base URL:Pi 的文件從未明確說明這個 api 欄位應填什麼。直到 9 月 22 日之前,文件以兩種方式呈現這個欄位——一個範例使用 https://proxy.example.com/v1,另一個使用不帶其他內容的 https://proxy.example.com;當天的文件更新刪除了兩種寫法,卻沒有擇一。如果你選用這條路由,請先試一種寫法;若第一次呼叫回傳的是 404 而非 401,就要修改那一行。

在 Pi 的此 api compat 結構描述中,有三個欄位值得你事先了解(原始碼版本 v0.99.2);文件中對這些欄位的唯一規則,也值得先引用:「相容性設定應描述端點請求或回應行為經驗證的差異。不要只因端點宣稱相容於 OpenAI 或 Anthropic,就啟用這些設定。」

  1. compat.supportsEagerToolInputStreaming — 適用於會拒絕逐工具預先輸入串流的後端。
  2. compat.supportsStrictTools — endpoint 是否接受嚴格的 JSON-schema 工具定義;自訂模型不會沿用內建 Anthropic 模型宣告的設定。
  3. compat.supportsMidConvoEffort — 在對話進行中變更推理強度。此 endpoint 是否符合條件,要在執行時確認;Kunavo 尚未透過實際執行來判定。

本頁頂端的 openai-completions 區塊避開了這三個設定;這就是建議從那裡開始的實際原因,而非宣稱它的效能較佳。

常見問題

如何將 Pi 程式設計代理指向自訂 API provider?

在 ~/.pi/agent/models.json 加入 provider 區塊。Pi 的模型頁面指出,「當 endpoint 使用 Pi 已支援的 API 時」應使用 models.json;其結構描述(來源:v0.99.2)支援在 provider 層級設定 baseUrl、apiKey、api、headers、authHeader、models 和 modelOverrides。非內建 provider 需要 baseUrl,以及在 provider 或 model 層級設定的 api 值。結構描述將 api 定義為自由字串,而非清單:在 2026 年 9 月 22 日文件更新前,Pi 為自訂 provider 記載了四個值——openai-completions、openai-responses、anthropic-messages 和 google-generative-ai;v0.99.2 的原始碼則會將此欄位分派給十種內建實作之一,其餘六種從未被記載為可用於此用途,且在此未經測試。若是 OpenAI 相容 endpoint,更新後的文件仍以 openai-completions 為例。models 中的每個項目至少需要一個 id,而這個 id 會原樣傳送給 endpoint,因此相同的設定格式適用於 gateway、本機 Ollama 或 vLLM 伺服器,以及任何其他相容主機。

Pi 程式設計代理從哪裡取得 API 金鑰?

金鑰可能來自四個地方,Pi 的模型頁面列出了優先順序:首先是執行時的 --api-key,其次是儲存在 auth.json 的憑證,再來是 models.json 中的 apiKey,最後是 provider 的環境變數。因此,先前透過 /login 儲存的金鑰,優先於你剛寫入 models.json 的金鑰。apiKey 欄位支援環境變數插值("$NAME" 或 "${NAME}")、字面值,或在前面加上 "!" 的 shell 命令輸出,因此不必將密鑰放在檔案中。文件指出,若沒有可用的憑證,自訂模型仍會從 models.json 載入,但在 /model 中無法使用。

Pi 的 baseUrl 結尾需要加上 /v1 嗎?

若是 openai-completions provider,需要。Pi 的文件從未用一句話明確說明規則,但其相容 endpoint 範例使用 http://localhost:11434/v1 作為 Ollama 的網址;在 2026 年 9 月 22 日文件更新之前,OpenRouter、Vercel AI Gateway 和 llama.cpp 範例也都使用相同的版本路徑。因此,OpenAI 相容 endpoint 的值應為 /v1 根路徑,例如 https://api.kunavo.com/v1。anthropic-messages 的情況確實尚無定論:舊版文件同時展示了帶有和不帶 /v1 的寫法,而更新版刪除了兩個範例,卻沒有擇一。

為什麼我的自訂 Pi provider 在頁尾顯示 $0?

因為 Pi 預設會將自訂模型的成本物件設為全零(來源:v0.99.2),而頁尾顯示的是模型目錄中的數值,不是 endpoint 收取的費用。這並不代表免費;在你填入 provider 自行公告的價目表中,每百萬 token 的輸入、輸出、cacheRead 和 cacheWrite 費率,以及任何分級費率之前,這個數字都沒有依據。編輯檔案時,也請一併留意相鄰的兩個預設值:contextWindow 預設為 128000,maxTokens 預設為 16384,因此若模型的 context window 更大,內容會提早壓縮,回覆也會被截短,除非明確設定這兩個值。

Kunavo 測試過 Pi 程式設計代理嗎?

沒有。本頁的設定是依據 Pi 自己的文件整理而成;若 9 月 22 日的文件更新刪除了某項細節,則以頁面所示日期當時 Pi 已發布的原始碼為準。不過,我們尚未使用此用戶端,透過此 endpoint 執行任何工作階段、串流回合、工具往返或模型路由檢查——本節中的其他用戶端也一樣。請將設定區塊視為 Pi 結構描述所接受設定的參考,使用上方的 curl 指令確認 endpoint 和金鑰,並在試用時保留一條可正常運作的路由。