文件
Oh My Pi
Oh My Pi 將供應商設定放在單一 YAML 檔案中。只要在您選擇的名稱下加入三行 — baseUrl、api、apiKey — omp 就會透過單一金鑰路由至 Claude 和 GPT,模型清單則會自動擷取,不必手動輸入。
在 ~/.omp/agent/models.yml 中設定供應商區塊 — baseUrl、api、apiKey — 將 Oh My Pi 指向 Kunavo,並透過 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 將 baseUrl 定義為「端點根路徑」,將 openai-completions 定義為「OpenAI 相容的 Chat Completions」,其 404 疑難排解項目也寫道:「一般的 OpenAI 相容 Base URL 通常以 /v1 結尾。」兩頁上的所有自訂提供者範例都以相同方式結尾。「通常」是他們保留的說法,並非保證——但 Kunavo 提供 /v1/chat/completions,因此 https://api.kunavo.com/v1 才是能連到該端點的根路徑。這和 Anthropic 風格的用戶端正好相反;後者需要不帶路徑的來源網址。authHeader。omp 說明它適用於閘道「特別需要將 Authorization: Bearer 作為一般標頭加入」的情況,並指出「標準提供者用戶端已會套用其一般驗證機制」——OpenAI 相容用戶端正是如此,Kunavo 也接受這種方式。只有在下方的 curl 無法重現 401 錯誤時,才加入它。curl;其餘部分則須由您和 omp 確認。sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 Oh My Pi 設定。逐步操作
- 在
/app/keys建立金鑰並複製——金鑰只會顯示一次。 - 在啟動 omp 的 Shell 中將它匯出為
KUNAVO_API_KEY。omp 會先將apiKey解析為環境變數名稱,若找不到才會將文字視為實際金鑰,因此環境變數名稱打錯時不會有提示,直到第一次請求才會失敗。若值以!開頭,則會被當作 Shell 命令執行 — 這是 1Password 風格的設定方式。 - 將上方區塊放入
~/.omp/agent/models.yml。此處的供應商 ID —kunavo— 由您自行選擇,並會成為每個選擇器的前半部分。 - 執行
omp models kunavo載入檔案,並只列出此供應商。如果 YAML 或結構描述有問題,輸出會指出models.yml validation failed及發生錯誤的欄位;omp models refresh kunavo則會強制重新探索,不使用快取的型錄。 - 使用完整選擇器進行測試:
omp -p --model kunavo/claude-sonnet-5 "Reply with only OK"。接著啟動omp,輸入/model,並將您要的 ID 指定為 Default — 模型中心會在開啟時重新載入models.yml。/switch只會變更目前的工作階段。
已於 2026年9月21日 根據 omp 的 Providers 頁面 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。
除錯用戶端前先驗證
一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 JSON,則相同的基礎 URL 與金鑰在 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
每個文字模型都能以模型 ID 存取——即時清單位於 GET /v1/models,帶有價格的目錄位於模型頁面。費率是每 1M 權杖的美元價格,輸入/輸出。
| 模型 ID | Kunavo 輸入/輸出 | 它在 Oh My Pi 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | default 角色 — 大多數工作階段實際使用的模型 |
claude-opus-5 | $3.50 / $17.50 | plan 角色;規劃錯誤的代價高於 token 費用 |
claude-haiku-4-5 | $0.70 / $3.50 | smol 角色:分類、摘要,以及不斷發出的請求 |
gpt-5-6-sol | $2.00 / $12.00 | 同一個供應商設定區塊,使用另一個模型家族取得第二意見 |
探索:使用哪種類型,以及哪些模型會出現在選擇器中
omp 提供六種 discovery.type 值,其中兩種看起來都適用於閘道,但實際上只有一種。文件指出,proxy 適用於「模型列以 supported_endpoint_types 標示的 OpenAI/Anthropic 混合代理」,而且會依該欄位決定各模型的傳輸格式。Kunavo 的 GET /v1/models 不會發布此欄位,因此在 proxy 下,每一列都會退回使用提供者層級的 api——若未設定任何值,則會被略過。文件將 openai-models-list 說明為「通用的 OpenAI 相容 GET /v1/models 端點」,這才是應使用的選項,也因此上方的區塊保留了 api: openai-completions:omp 的規則是「除了 proxy 之外,探索功能都需要提供者層級的 api」。
在開啟選擇器前,有一項後果值得先了解。Kunavo 的模型清單包含所有已啟用的型錄,因此探索到的供應商會同時列出圖片、影片和音樂 ID,以及聊天模型;但聊天傳輸方式無法呼叫這些媒體模型。Kunavo 會在聊天模型列中提供 context_length — 根據 omp 的模型文件,這是其通用探索在 max_model_len 之後讀取的欄位 — 但媒體模型列不會提供此欄位,因此 omp 會為它們使用預設的 128,000 token,而非實際數值。如果您想要一份精簡且正確的選擇器清單,請移除探索區塊,並明確宣告您實際使用的三、四個 ID。
omp 也支援 anthropic-messages,而 Kunavo 會回應 /v1/messages。本頁不會為這種搭配提供設定區塊:此處引用的兩份文件只確定了 OpenAI 相容路由的基礎 URL 格式,並未說明 Anthropic 路由如何處理結尾的 /v1;而設定區塊的目的,就是讓讀者能直接貼上使用。如果您選擇這種方式,Anthropic 相容端點上的工具呼叫遇到 400 錯誤時,文件建議的處理方式是 disableStrictTools: true。
常見問題
如何在 Oh My Pi 中新增自訂 API 供應商?
所有設定都在 ~/.omp/agent/models.yml 中完成。在 `providers:` 下新增一個鍵 — 名稱由您選擇,並會成為選擇器中的供應商部分 — 然後依照 omp 自己的「Add a custom provider」範例順序,填入 baseUrl、api 和 apiKey。您可以在 `models:` 下手動列出模型,或加入 `discovery:` 區塊,讓 omp 擷取模型。接著執行 `omp models <your-provider-id>` 確認檔案已載入,並使用 `omp --model <provider>/<model-id>` 或工作階段中的 /model hub 選取模型。
Oh My Pi 的 baseUrl 需要以 /v1 結尾嗎?
若為 OpenAI 相容端點,是的。omp 將 baseUrl 稱為端點根網址,並依照您宣告的 api 家族附加路由,因此 `api: openai-completions` 表示它會在您提供的根網址下請求 chat completions。omp 自己的 404 疑難排解說明指出,一般 OpenAI 相容基礎 URL 通常以 /v1 結尾,其文件中的每個自訂供應商範例也都如此。Kunavo 提供 /v1/chat/completions,因此應填入 https://api.kunavo.com/v1 作為根網址 — 缺少 /v1 時會出現 404 或「不支援的端點」,而非驗證錯誤。
Oh My Pi 會在哪裡尋找 API 金鑰?哪個設定優先?
models.yml 中的 apiKey 會依三個步驟解析:若值以 ! 開頭,就會執行 Shell 命令並使用去除前後空白的標準輸出;否則 omp 會尋找名稱完全相同的環境變數;若找不到,就將該文字本身視為金鑰。最後這項後備方式容易出錯 — 環境變數名稱打錯時不會有提示,直到第一次請求才會失敗。在更廣泛的優先順序中,models.yml 的金鑰優先於儲存的 OAuth;omp 說明這是刻意設計,因此為閘道提供的金鑰不會被上游登入資訊覆寫。
omp 的閘道應使用哪種探索類型?
請使用 openai-models-list,而非 proxy,除非閘道在每個模型列上都宣告 supported_endpoint_types — proxy 會讀取該欄位,以判斷模型應送往 /v1/messages 還是 /v1/chat/completions;若沒有此欄位,模型會改用供應商層級的 api,或遭到排除。Kunavo 的 /v1/models 不會提供此欄位,因此通用的 OpenAI 清單才是正確類型;除了 proxy 之外,omp 也要求每種探索類型都必須設定供應商層級的 api。執行 `omp models refresh <provider>` 可強制重新擷取,不使用快取型錄。
Kunavo 是否已使用其端點測試 Oh My Pi?
沒有。2026 年 9 月 21 日查閱的是 omp 自己的文件 — 欄位名稱、排列順序、金鑰解析規則和探索類型均引自該文件;另有兩項細節是查核 Kunavo 自己的 /v1/models 路由所得,並非臆測。本頁未曾使用 omp 工作階段連線至 api.kunavo.com,也未對串流、工具往返或用戶端內的模型路由做出任何主張。唯一可以獨立確認的是端點和金鑰是否能正常運作;本頁的 curl 指令即可驗證。