Perplexity 開源多模態決策模型 pplx-decider-v1.2 與 Flash 4B 完整解析:聯合請求架構、Decision Index 評測與快速推論指南
在建構 AI 代理(AI Agents)、客服路由、內容審核或檢索重排序(Reranking)系統時,工程團隊經常面臨一個效能瓶頸:如果為了判斷「是否需要人工介入」、「工單該分派給哪個部門」或「文章符合哪個評分等級」而呼叫傳統對話式大型語言模型(Chat LLM),不僅要承受自由文本生成的延遲與算力開銷,還必須在應用程式端撰寫複雜的正規表示式或 JSON 解析器來處理格式錯誤。
為了解決結構化決策場景的效率與機率校準問題,Perplexity 於 2026 年 10 月 16 日正式推出新一代開源多模態決策模型 perplexity-ai/pplx-decider-v1.2(27B 參數規模),並同步釋出體積僅約七分之一的輕量級蒸餾版本 perplexity-ai/pplx-decider-flash-v1.2(4B 參數規模)。兩款模型皆採用 Apache-2.0 授權協議,並於 OpenRouter 與 Vercel AI Gateway 同步上線。
本文依據 pplx-decider-v1.2 官方模型卡、pplx-decider-flash-v1.2 官方模型卡、Perplexity Decisions API 官方開發文件 與 OpenRouter 模型專頁,完整梳理這套決策模型的架構設計、聯合請求協議、基準評測數據、問題分組策略以及本地與雲端部署方式。
什麼是決策模型(Decision Model)?核心定位與三大問題型態
根據 Perplexity Decisions API 官方文件 的定義,決策模型是一類專為「軟體可直接使用的快速結構化決策」所打造的模型。它如同多模態語言模型一樣能同時讀懂自然語言文本、結構化 JSON 與圖片,但不生成任何自由對話文字或推理過程(輸出 Token 數為 0),而是直接針對開發者定義的一或多個具名問題(Named Questions),回傳經過校準的機率分佈與型別化答案。
在 pplx-decider-v1.2 中,每次請求都由一個待評估的狀態脈絡(state,支援字串、字典、列表與最高 160 萬畫素圖片)以及一組問題(questions)組成。系統支援三種標準問題型態:
問題型態 (type) | 適用決策場景 | criteria 定義規範 | 模型回傳結構 (answers) |
|---|---|---|---|
noul(是非二元判斷) | 條件閘門控制(如 Agent 工具呼叫安全審查、瑕疵判定、布林過濾) | 選填 {"true": 描述, "false": 描述},定義何時為真或假 | noul:代表 $P(\text{true})$ 的機率值(介於 0 到 1 之間) |
choice(單選或多分類路由) | 客服工單分派、意圖分類、多標籤屬性勾選 | 必填 {選項名稱: 描述或 None},支援 1 至 255 個選項 | choice(最高機率選項)、probabilities(各選項機率分佈)、confidence(信心度) |
score(有序量表評分) | 嚴重程度分級、品質評分表(Rubric Grading)、潛在客戶評級 | 必填由低至高排列的等級描述列表(本地 SDK 支援 2 至 255 級;雲端 API 支援 2 至 10 級) | score(機率加權之期望等級索引)、probabilities(各等級機率)、legend(索引對照表)、confidence |
透過這種設計,應用程式可以直接對模型回傳的機率設定門檻值(Thresholding)——例如當 noul >= 0.8 時自動放行代理執行資料庫操作,介於 0.4 至 0.8 時轉交人工審核,完全省去解析聊天文字的風險。
pplx-decider-v1.2 的兩大核心突破與家族規格對照
作為前代 perplexity-ai/pplx-decider-v1.1-27b 的直接繼任者,pplx-decider-v1.2 同樣基於阿里巴巴的 Qwen/Qwen3.8-27B 骨幹網路,但在底層請求協議與訓練資料配方上進行了兩項重大革新:
1. 聯合請求格式(Joint Request Format)與行內標記讀取
前代 pplx-decider-v1.1-27b 每次前向傳播(Forward Pass)只能回答單一問題,並從序列的最後一個 Token 讀取輸出。若要針對同一篇客服信件同時判斷「負責部門」、「是否緊急」與「客戶情緒」,就必須對同一段脈絡重複編碼三次。
pplx-decider-v1.2 改採全新的 joint-question-inline-readout-v1(協議版本 v3)聯合請求格式:
- 單一序列打包多題:模型在單一序列中依序讀入完整的
state,接著排列所有問題與選項。 - 專屬
<|fim_suffix|>標記讀取:每個問題的選項後方都會放置一個特殊的<|fim_suffix|>標記 Token,模型直接從各個標記位置獨立讀取該題的分類結果,而非僅讀取序列末端。使用者輸入文本中的特殊字元會在分詞前被無害化處理,防止惡意提示詞注入偽造標記。 - 成本與資訊共享優勢:針對同一份
state詢問多個問題的運算成本,幾乎與只問一個問題相當;同時,由於全注意力層採用非因果(Noncausal)雙向設計,各個問題之間還能互相參照彼此的語義。
2. 訓練資料重構、機率分佈蒸餾與模型湯(Model Souping)
- 去污基準訓練集與廣泛決策語料:部分 Jev Decision Index 評測基準附帶官方訓練分割集(Training Splits)。為了在排行榜上進行公平比較,Perplexity 團隊將這些經過嚴格測試集去污(Decontaminated)的訓練分割納入訓練,同時加入大量來自 tasksource(Damien Sileo, LREC-COLING 2024) 等結構化 NLP 任務與自有決策資料。
- 模型湯(Model Souping)權重平均:最終釋出的檢查點並非單一訓練流程的產物,而是將多個訓練批次透過權重平均(Weight Averaging)融合而成,在所有內部與外部獨立基準測試中取得最佳綜合表現。
- 輕量版 Flash 4B 全機率分佈蒸餾:同步推出的 pplx-decider-flash-v1.2 以 Qwen/Qwen3.5-4B 為基座,透過知識蒸餾直接學習 27B 教師模型在訓練請求上的完整機率分佈(Full Probability Distributions)而非單一硬標籤,以約七分之一的參數規模保留了 27B 模型絕大多數的決策與視覺能力。
Perplexity Decider 模型家族規格對照表
根據 pplx-decider-v1.2 模型卡、pplx-decider-flash-v1.2 模型卡 與 OpenRouter 定價頁面,三款模型的關鍵規格對照如下:
| 規格維度 | pplx-decider-v1.2(最新旗艦) | pplx-decider-flash-v1.2(最新輕量版) | pplx-decider-v1.1-27b(前代模型) |
|---|---|---|---|
| 基礎模型(Backbone) | Qwen/Qwen3.8-27B(Qwen3_5Model 架構) | Qwen/Qwen3.5-4B(由 27B 機率分佈蒸餾) | Qwen/Qwen3.8-27B |
| 參數規模與權重精度 | 27B 級(頁面標示 26B),BF16 Safetensors | 4B 級(頁面標示 5B),BF16 Safetensors | 27B 級,BF16 Safetensors |
決策輸出頭(readout.safetensors) | BF16 [255, 5120] 獨立讀取頭 | BF16 [255, 2560] 獨立讀取頭 | 單題序列末端讀取 |
| 請求協議版本 | 聯合請求格式 v3(`< | fim_suffix | >` 行內讀取) |
| 輸入模態支援 | 文字、JSON、圖片(最高 1.6 MP / 1,638,400 畫素) | 文字、JSON、圖片(最高 1.6 MP / 1,638,400 畫素) | 文字、JSON、圖片(最高 1.6 MP) |
最大上下文長度 (max_length) | 262,144 Tokens(訓練長度約 32K,實測驗證達 243K) | 262,144 Tokens(訓練長度約 32K,實測驗證達 243K) | 262,144 Tokens |
預設校準溫度 (temperature) | 1.382(儲存於 decision_config.json) | 1.554(儲存於 decision_config.json) | 依模型配置校準 |
| 本地部署 VRAM 需求(BF16) | 約 52 GiB 權重空間 + 工作記憶體 | 約 9 GiB 權重空間 + 工作記憶體 | 約 52 GiB 權重空間 + 工作記憶體 |
| 雲端 API 定價(Input / Output) | 每百萬輸入 Tokens $0.02 / 輸出 免費 ($0) | 每百萬輸入 Tokens $0.01 / 輸出 免費 ($0) | 每百萬輸入 Tokens $0.02 / 輸出 免費 ($0) |
| 開源授權條款 | Apache-2.0 | Apache-2.0 | Apache-2.0 |
Decision Index 0.3 與視覺決策基準測試全解析
根據 pplx-decider-v1.2 官方模型卡 與 pplx-decider-flash-v1.2 官方模型卡 公布的 Decision Index 0.3 (public) 與 Vision Decision Index 0.3 評測結果,官方分別測試了「聯合請求模式(Joint requests,同一請求的所有問題共用單一序列)」與「單題獨立請求模式(One question per request,每個問題各自與 state 送出)」兩種呼叫方式。
在全部 37 項公開基準測試中,有 28 項基準的每個請求原本就只有 1 個問題,因此兩種模式分數完全一致;差異主要體現在包含多個問題的 9 項基準測試上:
| 評測基準與領域分類 | pplx-decider-v1.1-27b | pplx-decider-v1.2(聯合請求 Joint) | pplx-decider-v1.2(單題請求 Single) | pplx-decider-flash-v1.2(聯合請求 Joint) | pplx-decider-flash-v1.2(單題請求 Single) |
|---|---|---|---|---|---|
| Knowledge(知識決策) | 51.8 | 56.3 | 55.3 | 42.0 | 41.4 |
| Language(語言理解) | 67.5 | 72.8 | 71.9 | 63.3 | 65.0 |
| Retrieval(檢索與排序) | 61.2 | 68.4 | 68.1 | 64.8 | 65.2 |
| Tools(工具選擇與呼叫) | 79.1 | 84.4 | 85.4 | 76.7 | 80.9 |
| Arts(藝術與人文判斷) | 47.3 | 56.2 | 56.2 | 46.8 | 46.8 |
| Overall Decision Index(綜合加權總分) | 62.30 | 68.09 | 67.75 | 58.88 | 60.05 |
| Vision Decision Index 0.3(最高 1.6 MP 圖片) | 73.22 | 77.43 | — | 72.53 | — |
評測數據關鍵洞察
- 27B 旗艦版全維度大幅躍進:pplx-decider-v1.2 的 Decision Index 0.3 綜合加權總分從前代的
62.30提升至68.09(增加 5.79 分),其中藝術人文(Arts)大漲 8.9 分、檢索(Retrieval)提升 7.2 分、語言(Language)與工具(Tools)也雙雙成長超過 5 分;在多模態 Vision Decision Index 0.3 上同樣從73.22躍升至77.43。 - Flash 4B 展現極高性價比:僅 4B 參數的 pplx-decider-flash-v1.2 在單題模式下拿下
60.05的綜合分數,其檢索能力(65.2)與工具呼叫能力(80.9)甚至超越了前代 27B 模型(61.2與79.1),視覺決策得分(72.53)也與前代 27B(73.22)極為接近。 - 機率校準(Calibration)表現優異:在包含 1,497 道題目的開發驗證集上,套用預設溫度(
1.382)後的 pplx-decider-v1.2 達到 91.3% 準確率,期望校準誤差(ECE)從未縮放前的0.033降至0.014,Brier Score 為0.134(Flash 4B 套用溫度1.554後準確率為 88.8%,ECE 從0.057降至0.021,Brier Score 為0.163)。在完全獨立於訓練集之外的外部決策資料集上,模型的 ECE 約為0.05,過度自信程度明顯低於前代v1.1。
關鍵實戰技巧:何時應該將多個問題合併(Group Questions)?
在 pplx-decider-v1.2 與 pplx-decider-flash-v1.2 的混合注意力架構中,線性注意力層(Linear-attention layers)維持因果(Causal)特性,但全注意力層(Full-attention layers)在整個請求序列上是非因果(Noncausal)的。這意味著同一請求中的每個問題不僅能看到 state,也能看到其他所有問題的內容與排列順序。
官方模型卡 透過消融實驗明確揭示:當多個問題屬於「同一個決策的不同面向」時,合併詢問會顯著提升準確率;但當多個問題是「互相競爭同一判斷的獨立候選項」時,合併詢問反而會拉低表現。
1. 多問題基準測試:合併請求(Joint)對比單題請求(Single)的分數變化
| 任務名稱與類型 | 問題設計方式 | 27B v1.2(合併 vs 單題) | 4B Flash v1.2(合併 vs 單題) | 現象原因解析 |
|---|---|---|---|---|
| SATA-Bench(複選題 Select All That Apply) | 每個複選項目設為一個獨立 noul 問題 | +11.3 分 | +6.6 分 | 各選項彼此互補參照,幫助模型判斷哪些選項應同時入選 |
| ACOS(面向類別情緒分析) | 每個屬性類別設為一個問題 | +7.8 分 | −20.1 分 | 27B 模型能跨類別對齊情緒,但 4B 小模型在跨類別干擾下容易混淆 |
| PhishNChips(釣魚郵件多特徵分析) | 同一封訊息的多個風險面向 | +5.1 分 | +2.0 分 | 同一內容的不同特徵能互相佐證(例如語氣急迫與可疑連結) |
| BFCL(函數工具呼叫評估) | 每個候選函數呼叫設為一個問題 | −1.1 分 | −15.4 分 | 候選函數之間互相競爭,非因果注意力造成彼此干擾 |
| BRIGHT(高推理強度檢索) | 每篇候選文件設為一個問題 | −2.9 分 | −4.2 分 | 獨立候選文件同處一序列時產生競爭效應 |
| ToolRet(工具檢索) | 每個候選工具設為一個問題 | −4.8 分 | −7.5 分 | 大量候選工具放在同一請求內互相干擾評分 |
2. BEIR 文件重排序(Reranking)實測:8 篇候選合併 vs 單篇獨立評分
pplx-decider-v1.2 模型卡 進一步在 13 個 BEIR 檢索資料集上比較「每次請求打包 8 篇候選文件」與「每次請求僅放 1 篇候選文件」的 nDCG@10 差異:
- 候選文件彼此關聯、需要交叉比對時(合併更準):在需要多跳推理的 HotpotQA 上合併提升 +2.1 分,在重複問題偵測 CQADupStack 與 Quora 上分別提升 +1.7 分 與 +0.4 分。
- 候選文件彼此獨立時(單篇略佳):在 FiQA、NQ、MS MARCO、Climate-FEVER 上合併微幅下降
−0.2至−0.4分;在 NFCorpus、SciFact、FEVER、DBpedia-Entity 上下降−0.7至−1.2分。 - 近似候選文件互相競爭同一判斷時(合併明顯退步):在反方論點檢索 ArguAna 與疫情文獻 TREC-COVID 上,合併 8 篇分別下降 −2.8 分 與 −2.9 分(13 個資料集巨觀平均為
−0.5分)。
3. 官方問題分組最佳實踐建議
- 27B 模型(
pplx-decider-v1.2)使用準則:- 強烈建議合併:針對同一個物件評估多個屬性(例如工單的部門路由 + 緊急程度 + 情緒評分)、多標籤「選出所有符合項目(Select all that apply)」、或多步驟路由決策。單一請求比拆成 $N$ 次請求便宜許多且更準確。
- 強烈建議拆開:對獨立候選項目進行打分排序時(例如檢索系統中的
(query, document)配對或候選工具列表),請維持「每個請求僅放一個候選項」。如有不確定,優先選擇單一候選項一請,因為單題模式最多只比合併少約0.4分,但錯誤合併競爭候選項可能損失高達3至4.8分。 - 排序請改用 Logit Margin:在執行重排序(Reranking)時,建議呼叫
decider.logits(requests)取得溫度縮放前的原始讀取頭 Logits,並使用noul問題的true - falseLogit 差值進行排序,避免轉換成機率後因趨近 1.0 而飽和同分(Saturate into ties)。
- 4B 模型(
pplx-decider-flash-v1.2)使用準則:除了緊密耦合的複選題(如 SATA-Bench)或單一路由的多個步驟外,預設請一律採用「每請求一題(One question per request)」,並善用 Fast Path 自動打包機制維持低成本高吞吐。 - 注意問題順序與脈絡位置:模型看不到問題的鍵值名稱(Question IDs),但看得到問題的排列順序(問題會自動編號)。請務必將決策所需的背景資訊寫在
state內,而不要藏在另一個問題的描述中。
底層架構與 Fast Path 極速推論引擎:單卡 GB200 吞吐量翻倍
1. 原生決策檢查點結構(Checkpoint Format)
不同於一般語言模型使用完整詞彙表的 lm_head,pplx-decider-v1.2 採用原生決策檢查點佈局:
- 由
Qwen3_5Model骨幹網路搭配獨立的readout.safetensors組成(27B 版的讀取頭維度為[255, 5120],4B Flash 版為[255, 2560])。 - 每個答案代碼(
A,B, … 最多 255 個選項)皆對應單一 Token,讀取頭的第i列直接對應decision_config.json["token_ids"][i]的詞彙表位置。 - 由於全注意力層為非因果設計且讀取發生在行內
<|fim_suffix|>標記處,標準的因果推論框架(Default Causal Inference)無法直接重現此檢查點的結果,必須透過官方提供的pplx_decider套件或支援該協議的推論端點執行。
2. Fast Path (fast=True) 四大加速機制
為了讓高併發與大批次決策任務發揮硬體極限,官方在 pplx_decider 中內建了 Fast Path 引擎(透過 Decider.from_pretrained(..., fast=True) 啟用),結合四項底層最佳化:
- 無填充序列打包(Padding-Free Sequence Packing):將多個獨立請求直接串接成單一無填充序列,在單次前向傳播中處理多個請求與多個讀取標記。各請求之間保持嚴格隔離——全注意力層使用 PyTorch 2.10 原生提供的變長 FlashAttention(
torch.nn.attention.varlen,無須額外編譯flash-attn),線性注意力狀態與短卷積(Short Convolution)會在每個請求邊界重置,位置編碼與圖片的 M-RoPE 座標也會在每個請求起點歸零。 - 全解碼層編譯與靜態分桶 CUDA Graphs:預設的
FastOptions()會使用torch.compile編譯整個解碼器層,並將打包後的序列填充至靜態大小分桶(2k、4k、8k、16k或32kTokens)以重播 CUDA Graphs。 - 末層修剪(Last-Layer Pruning):模型的最後一層解碼器僅在
<|fim_suffix|>標記位置進行運算,完全跳過佔據絕大多數長度的state與題幹 Token,大幅節省計算量。 - 選配行級 FP8 矩陣乘法(
fp8=True):將解碼器矩陣乘法量化為 Rowwise-scaled Float8(預設關閉,開啟後會就地修改載入的模型)。
3. 單卡 NVIDIA GB200 吞吐量與數值精確度實測
根據 pplx-decider-v1.2 官方模型卡 在單張 NVIDIA GB200 GPU(BF16 精度) 上的實測,Fast Path 與參考路徑(Reference Path,左填充並依長度排序批次)的輸出幾乎完全一致:在 300 個 Decision Index 請求(共 2,324 題)上,最高機率選項一致率(Argmax Agreement)達 99.8%,平均機率絕對誤差 $\vert\Delta p\vert$ 僅 0.002;在 BEIR 重排序任務上的 Spearman 等級相關係數高達 0.9988,與不同批次大小造成的 BF16 浮點數誤差處於相同量級。
以下為單卡 NVIDIA GB200 在三類工作負載下的每秒處理請求數(requests/s)對照:
| 推論路徑配置 | Decision Index 請求(平均 1,050 Tokens,1–64 題) | BEIR 重排序請求(平均 437 Tokens,單一配對) | 視覺決策請求(含 1.6 MP 圖片) |
|---|---|---|---|
參考路徑 Reference (fast=False,長度排序填充批次) | 9.1 req/s(單請求中位數延遲 131 ms) | 27.1 req/s | 8.0 req/s |
僅啟用無填充打包 (compile=None, cuda_graphs=False) | 9.1 req/s (1.00×) | 28.0 req/s (1.03×) | — |
+ 編譯 Norms / MLP / Conv (compile="sub") | 12.9 req/s (1.42×) | 46.2 req/s (1.71×) | — |
+ 全解碼層編譯 (compile="layer") | 18.0 req/s (1.99×) | 52.3 req/s (1.93×) | 12.0 req/s (1.50×) |
+ 靜態 32k 分桶與 CUDA Graphs (buckets=(32768,)) | 20.9 req/s (2.31×) | 55.5 req/s (2.05×) | — |
| + 末層修剪(Last-layer pruning,離線最大吞吐配置) | 21.2 req/s (2.33×) | 56.0 req/s (2.07×) | 15.3 req/s (1.90×) |
預設 fast=True(動態 2k–32k 分桶 + 末層修剪) | 19.8 req/s (2.18×,單請求中位數延遲 96 ms) | 56.2 req/s (2.08×) | 14.4 req/s (1.79×) |
+ 啟用 FP8 量化 (fp8=True,預設關閉) | 24.9 req/s (2.74×) | 67.3 req/s (2.49×) | — |
(註:預設的 fast=True 採用 2k 至 32k 動態分桶,在保有靜態 32k 模式約 93% 吞吐量的同時,將單一小型請求的中位數延遲從 131 ms 降至 96 ms;若固定使用單一 32k 靜態分桶,單筆小請求需等待約 1.2 秒,因此 buckets=(32768,) 僅建議用於離線大批次處理。)
快速上手與程式碼實作指南
1. 本地端 GPU 部署(使用官方 pplx_decider 套件)
本地運行需配備 Python 3.12+ 與支援 CUDA 的 GPU(27B 模型需預留約 52 GiB 顯存空間存放 BF16 權重與工作記憶體;4B Flash 模型僅需約 9 GiB)。若要啟用 fast=True,需額外安裝 requirements-fast.txt(包含 flash-linear-attention 與 torch >= 2.10)。
import sys
from pathlib import Path
from huggingface_hub import snapshot_download
# 1. 下載檢查點(若為輕量版可改為 "perplexity-ai/pplx-decider-flash-v1.2")
checkpoint = Path(snapshot_download("perplexity-ai/pplx-decider-v1.2"))
sys.path.insert(0, str(checkpoint / "source" / "src"))
from pplx_decider import Decider, FastOptions
# 2. 載入模型(標準參考路徑;若需高速推論可加上 fast=True 並呼叫 decider.warmup())
decider = Decider.from_pretrained(checkpoint, device="cuda")
# 3. 單次請求同時執行分類路由(choice)、是非判斷(noul)與情緒量表評分(score)
response = decider.decide({
"state": "My integration keeps failing with a 401 since we rotated our API key. Please help.",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": {
"billing": "Charges and refunds",
"support": "Technical integration errors",
"sales": "Questions about buying a product",
},
},
"urgent": {
"type": "noul",
"instructions": "Is the customer blocked right now?",
},
"frustration": {
"type": "score",
"criteria": ["calm", "mildly annoyed", "frustrated", "angry"],
},
},
})
print("負責團隊:", response["answers"]["team"]["choice"])
print("客戶受阻機率:", response["answers"]["urgent"]["noul"])
print("情緒期望評分:", response["answers"]["frustration"]["score"])
若要在生產環境中啟用 Fast Path 進行高併發推論,建議在啟動服務時先執行 warmup() 預編譯所有分桶(約需 1 分鐘):
from pplx_decider import Decider, FastOptions
# 線上低延遲 + 高吞吐預設模式(2k ~ 32k 動態分桶 + 末層修剪)
decider = Decider.from_pretrained(checkpoint, fast=True)
decider.warmup()
# 傳入請求列表時,背景執行緒會自動完成分詞與無填充序列打包
responses = decider.decide(requests_list)
# 若為離線超大批次處理,可指定單一 32k 靜態分桶以略過多桶編譯
decider_offline = Decider.from_pretrained(checkpoint, fast=FastOptions(buckets=(32768,)))
2. 透過雲端 Decisions API 呼叫(Perplexity 原生端點與 OpenRouter)
如果不希望自行維護 GPU 伺服器,可直接透過 Perplexity Decisions API(端點 POST /v1/decisions)或 OpenRouter Decisions API(端點 POST /api/alpha/decisions)呼叫。兩者的計費方式皆為 27B 模型每百萬輸入 Tokens $0.02 美元、4B Flash 模型每百萬輸入 Tokens $0.01 美元,且輸出 Tokens 完全免費 ($0)。
以下為使用 Python httpx 呼叫原生 API 的範例:
import os
import httpx
response = httpx.post(
"https://api.perplexity.ai/v1/decisions",
headers={"Authorization": f"Bearer {os.environ['PERPLEXITY_API_KEY']}"},
json={
"model": "pplx-decider-v1.2",
"state": {
"title": "Battery died after two weeks",
"review": "The headphones sound great, but the battery stopped charging after two weeks.",
},
"questions": {
"defect": {
"type": "noul",
"instructions": "Does the review report a product defect?",
},
"sentiment": {
"type": "choice",
"instructions": "What is the overall sentiment of the review?",
"criteria": {
"positive": "Mostly satisfied",
"mixed": "Praise and complaints in one review",
"negative": "Mostly dissatisfied",
},
},
"severity": {
"type": "score",
"instructions": "How severe is the reported problem?",
"criteria": ["Cosmetic", "Inconvenient", "Product unusable"],
},
},
},
timeout=30.0,
)
response.raise_for_status()
answers = response.json()["answers"]
print(answers["defect"]["noul"]) # 輸出範例: 0.9424... (94.2% 機率為產品瑕疵)
print(answers["sentiment"]["choice"]) # 輸出範例: "mixed"
print(answers["severity"]["score"]) # 輸出範例: 1.7838... (介於 1 與 2 之間,偏向無法使用)
此外,若使用 Vercel AI SDK,也可直接透過 ai 套件的 experimental_decide 函數呼叫 perplexity/pplx-decider-v1.2 或 perplexity/pplx-decider-flash-v1.2。
系統限制與常見疑難排解(Troubleshooting)
根據 官方模型卡 與 API 開發文件,在實務整合時需留意以下邊界條件:
- 超長脈絡與自動遞迴切分:模型架構上限
max_length預設為 262,144 Tokens。雖然訓練序列主要在 32K Tokens 以內,但官方實測在長達 243K Tokens 的長日誌大海撈針(Needle-in-a-Haystack)測試中,各深度正確率 $P(\text{correct})$ 皆超過0.999(單卡 GB200 Fast Path 耗時約 2 分鐘、峰值顯存 107 GiB;4B Flash 版僅需 20 秒、峰值顯存 54 GiB)。當一個多問題請求超過max_length時,SDK 絕不會截斷輸入內容,而是自動將問題列表遞迴對半切分(每個分塊皆保留完整的state與圖片),並在usage.sequences回報切分數量;若單一問題加上state即超過上限,則會直接拋出pplx_decider.LengthError。 - 圖片輸入尺寸規範:本地 SDK 會自動保持長寬比,將大於 1.6 MP(
1,638,400畫素)的圖片縮放至上限(每張 1.6 MP 圖片約佔用 1,600 個序列位置)。若透過雲端 Perplexity Decisions API 傳送 Base64 圖片(支援 PNG、JPEG、WebP,不支援直接傳入http/https網址),請確保每張圖片不超過 2,048 個32 × 32圖塊(例如1440 × 1440或2048 × 1024),否則會觸發504逾時錯誤。 - 切勿混用 v1.1 提示詞模板:
pplx-decider-v1.2專為pplx_decider建構的聯合請求格式訓練,請勿將前代v1.1的單題提示詞直接餵給v1.2,否則會導致輸出異常。