回答中的圖表
當回答包含一組可比較的數值時,代理程式會自動繪製圖表——無需提示,且在對話過程中即時生成。提供九種圖表類型及其範例,說明防止繪製非來源資料數值的過濾機制,以及為何衍生數值需透過程式碼而非模型進行計算。
```
```
```
詢問支援代理員每個方案的費用,你會得到一段文字。詢問真人,他們會畫出四條長條圖。代理員會做後者:當答案中已經包含一組可比較的數字時,它會將它們繪製出來——**無需特別要求**,在普通對話的中間進行。
此頁面上的每張圖表都由您的訪客所見的同一個元件渲染,且源自模型發送的同一份規格。這裡沒有任何截圖。
## 模型實際寫入的內容
一個程式碼區塊,旁邊附有文字:
{"type": "bar", "source": "passage:kb", "title": "Registration fee by market", "unit": "USD",
"labels": ["Brazil", "Mexico", "Colombia", "Chile", "Peru", "Argentina"],
"series": [{"name": "standard", "values": [4200, 2800, 1900, 2100, 2450, null]},
{"name": "expedited", "values": [6300, 4100, 2600, 3050, 3400, null]}]}
渲染結果如下:
```chart
{"type": "bar", "source": "passage:kb", "title": "Registration fee by market", "unit": "USD",
"labels": ["Brazil", "Mexico", "Colombia", "Chile", "Peru", "Argentina"],
"series": [{"name": "standard", "values": [4200, 2800, 1900, 2100, 2450, null]},
{"name": "expedited", "values": [6300, 4100, 2600, 3050, 3400, null]}], "cite": 1}
```
該範例中有三個要素是關鍵。
**`null`,而非 `0`。** 阿根廷的費用未在資料中公布,因此沒有數字——而零長條圖會構成一個資料從未做出的聲明。零是具有意義的數值;「未知」不等於零,而空白槽位明確指出這一點,若填入 `0` 則會產生誤導。
**文字保留。** 圖表是對答案的補充,而非取代。Telegram、WhatsApp 和螢幕閱讀器會收到與緊湊表格相同的内容,因此若代理員僅以圖片作答,則在多數頻道中等於沒有回答。
**`source` 為必填項。** 沒有來源的圖表就像沒有引用的數字,角落的徽章會顯示其來源材料的類型。若單個檢索到的段落包含這些數字,該徽章即為可點擊的即時引用。
## 數字必須來自您的資料
這部分比繪圖本身更重要。
`passage:` 圖表是常見情況:數字來自您的知識庫,模型將其複製出來。複製是可靠的——在三個模型從檢索到的文字中提取價格表且同一段落中混有過時價格作為干擾項的測試中,9 次中有 9 次正確,未受干擾項影響。
運算則不然。相同的模型、相同的段落,要求根據基本費用加上超額費率計算帳單:**12 次中有 12 次錯誤**。每次乘法都正確,但每個公式都錯誤。
因此,在圖表渲染之前,會執行確定性檢查:每個標籤與數值配對必須出現在代理員本次檢索到的資料中。若無法找到配對,則**整個區塊會被捨棄**——答案保留其文字,但失去其圖片。與產品中其他句子級別的錨定標記不同,此檢查拒絕繪製而非添加註解:錯誤繪製的長條圖在任何人閱讀腳註之前,已經完成了其錯誤的陳述。
<Callout tone="warning">
檢查會比較數字,涵蓋其所有書寫形式——`4,200` 與 `4200`、`25M` 與 `25000000`、`2500万` 與 `25 million`。它不驗證單位,也無法總是判斷句子中兩個標籤之一的數字歸屬。它是防止捏造的底線,而非正確性的證明。
</Callout>
## 衍生數值是計算得出,而非寫入
股份、增長率和累計總額正是模型會出錯的地方,也正是讓圖表值得觀看的原因。因此,模型不進行計算。
它將原始數值交給工具,命名所需的衍生類型——總額占比、百分比變化、累計總額——平台以程式碼計算該系列。**結果保留在伺服器上**;模型寫入引用,且在區塊發送前填入數字。模型沒有機會打錯程式碼剛剛算出的內容。
圖表會說明這一點:以此方式計算的系列會在圖表本身標註,因為「從您的材料複製」和「為您計算」是不同的保證,讀者有權知道他們正在查看哪一種。
## 可互動的圖表
點擊長條圖——或表格的一行——代理員會收到關於該類別的後續問題,彷彿訪客已輸入該內容。圖表從輸出變為輸入:無法精確表達想要哪部分數據的人,只需指向它即可。
每張圖表也支援匯出為 CSV,且長條圖 / 橫向 / 折線 / 面積是同一句話的四種講述方式,因此讀者可以在它們之間切換。圓餅圖、漏斗圖、雷達圖和散點圖是**不同**的句子——組成、流失、形狀、相關性——因此不提供切換。
## 九種類型,以及每種適用的時機
模型無法在之間選擇的類型設定等同於只有一種類型。每種類型回答不同的問題,選錯類型比不繪製更糟:圖表仍然存在,靜靜地表達其他含義。
### `bar` — 這些類別如何比較?
預設值。當沒有更具體的選項時使用它。
```chart
{"type":"bar","source":"tool:x","title":"Cases closed by team","unit":"cases",
"labels":["Intake","Triage","Review","Drafting","Filing","QA","Appeals","Renewals","Archive"],
"series":[{"name":"closed","values":[128,116,94,88,61,54,37,29,22]}]}
```
### `hbar` — 相同問題,標籤較長時
國家或產品名稱等類別名稱在垂直長條圖下方無法容納,且軸開始將它們旋轉 45°。橫向放置則Simply 適合。平台在超過十二個類別時自動切換至此——**不是**切換為折線圖,因為這些類別沒有順序,而折線圖會捏造趨勢。
```chart
{"type":"hbar","source":"tool:x","title":"Leads by market",
"labels":["United Kingdom","Germany","France","Spain","Poland","Netherlands","Italy","Sweden","Portugal","Ireland","Denmark"],
"series":[{"name":"leads","values":[812,640,455,390,210,180,164,131,98,76,54]}]}
```
### `line` — 這將走向何方?
適用於真正具有順序的類別:月份、階段、版本。間隙會連接而非斷開,因為中斷會被解讀為兩個獨立系列而非一個缺失數值。
```chart
{"type":"line","source":"tool:x","title":"Monthly recurring revenue","unit":"k",
"labels":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],
"series":[{"name":"new business","values":[12,15,14,19,23,28,31,29,35,41,44,52]},
{"name":"expansion","values":[3,4,6,5,9,11,10,14,16,15,19,24]}]}
```
### `area` — 相同趨勢,當總量是重點時
當累積數量比變化率更重要時使用它。
```chart
{"type":"area","source":"tool:x","title":"Tickets received","stacked":true,
"labels":["W1","W2","W3","W4","W5","W6","W7","W8","W9","W10","W11","W12"],
"series":[{"name":"answered by the agent","values":[40,62,58,90,120,138,151,144,166,180,175,198]},
{"name":"escalated to a person","values":[22,25,21,28,31,27,24,20,18,17,15,12]}]}
```
### `stacked` — 同時包含部分的比較
它不是一種獨立類型,而是 `bar`、`hbar` 和 `area` 的修飾符:仍是比較,但每個長條圖展開以顯示其組成。
```chart
{"type":"bar","source":"tool:x","stacked":true,"title":"Revenue by quarter","unit":"k",
"labels":["Q1 24","Q2 24","Q3 24","Q4 24","Q1 25","Q2 25","Q3 25","Q4 25"],
"series":[{"name":"new","values":[30,45,50,62,68,74,81,96]},
{"name":"renewal","values":[20,25,40,44,52,58,66,71]},
{"name":"expansion","values":[6,9,11,15,18,21,27,34]}]}
```
### `pie` — 這整體由什麼組成?
僅當部分確實加總為整體時使用。單一系列,無負數,最多八個切片——超過此數量後,沒人能夠分辨哪個切片是哪個,且會退化為長條圖。
```chart
{"type":"pie","source":"tool:x","title":"Where the questions come from",
"labels":["Website widget","WhatsApp","Telegram","Email hand-off","Embedded in-app","Shared link"],
"series":[{"name":"conversations","values":[6200,2700,1100,640,380,210]}]}
```
### `funnel` — 人們在哪裡流失?
每個階段必須是上一階段的子集。未遞減的系列不是漏斗,而是一組並排的數字——平台會將其繪製為長條圖。
```chart
{"type":"funnel","source":"tool:x","title":"From visit to paid",
"labels":["Visits","Started a chat","Left an email","Signed up","Activated","Paid"],
"series":[{"name":"people","values":[4200,1980,1140,860,410,120]}]}
```
### `radar` — 每個選項的形狀為何?
在相同少數維度上比較多個事物。它需要維度處於可比較的尺度:將 0–10 的評分與 0–1,000,000 的計數並置,會導致一個軸卡住而另一個軸平直,因此平台會回退至長條圖。
```chart
{"type":"radar","source":"tool:x","title":"Vendor comparison","labels":["Speed","Cost","Support","Coverage","Ease"],"series":[{"name":"agent4.io","values":[9,7,8,9,8]},{"name":"Incumbent","values":[5,9,6,4,5]}]}
```
### `scatter` — 這兩者相關嗎?
恰好兩個系列:第一個是 x,第二個是 y,標籤命名這些點。
```chart
{"type":"scatter","source":"tool:x","title":"Answer length against satisfaction",
"labels":["A","B","C","D","E","F","G","H","I","J","K","L","M","N"],
"series":[{"name":"words in the answer","values":[40,55,70,85,95,110,130,145,160,180,205,230,260,300]},
{"name":"satisfaction %","values":[62,68,74,79,83,86,88,87,84,80,74,69,61,55]}]}
```
### `table` — 當上述皆不恰當時
兩個不同尺度的測量值,或始終是表格的數據。當其他類型的假設破裂時,它也是最終歸宿。
```chart
{"type":"table","source":"passage:kb","title":"Registration by market",
"labels":["Brazil","Mexico","Colombia","Chile","Peru","Argentina"],
"series":[{"name":"days","values":[90,60,45,55,70,null]},
{"name":"fee (USD)","values":[4200,2800,1900,2100,2450,null]}]}
```
## 何時保持靜默
三個數字是底線。「從 120k 上升到 150k」是一句話,而非長條圖,繪製它會造成噪音。是/否問題和單一數值查詢會得到答案,而非圖片。一次回覆中最多兩張圖表,且僅當兩個測量值單位不同時才會有第二張——平台會計算數量,因此模型無法自行說服自己繪製第三張。
若本次未檢索到任何內容,則無圖可繪。代理員會說明其知道和不知道的,這與它使用文字時的行為相同。
## 開啟它
無需開啟。任何擁有知識庫或工具的代理員已經具備此功能,且隔離閘確保代理員不應繪製的圖表永遠不會到達訪客。圖表會與訊息一起儲存,因此一個月後重新開啟對話會顯示相同的圖片,而非答案中仍討論它卻中間缺失一塊。