狀態
狀態是什麼、如何組織它,以及如何給 System One 模型提供它需要的上下文。
狀態是你讓 System One 模型去評估的內容。它可以是一條客服訊息、一段文本,也可以是你應用的當前狀態。你把它和想得到答案的問題一起,放進 API 請求的 state 欄位裡。
每次請求用一個狀態去求一個或多個問題。所有問題看到的是同一個狀態,且各自獨立求值。一次請求裡可以混用 Choice、Score 和 Noul 問題。
狀態可以是一個簡單字串,也可以是一個結構化 JSON 值
最簡單的狀態就是一個普通字串:
state = "My card was charged twice."
狀態也可以是一個 JSON 物件或陣列,裡面裝著相關上下文、示例,以及其它有助於模型回答對應問題的資訊。把狀態想成你遞給一組專家、請他們做判斷之前先擺出來的材料。在 Python 裡,把對應的字串、字典或列表直接傳給 client.system_one(state=...)。
| 格式 | 適合 | 示例 |
|---|---|---|
| 字串 | 一條訊息、一篇文章或一個段落 | "My card was charged twice." |
| 物件 | 具名欄位、相關記錄或應用狀態 | {"message": "My card was charged twice.", "order_id": "A-104"} |
| 陣列 | 一串訊息或記錄 | ["Hi", "My customer number is TS1337.", "My card was charged twice."] |
大多數請求都用物件,這樣狀態裡每一部分都有描述性的名字,彼此關係也清楚。用例簡單、只需要一段文本時,用字串就夠。
把一段客服對話作為狀態
{
"ticket": {
"subject": "Duplicate charge",
"messages": [
{"from": "customer", "text": "I was charged twice for order A-104. Please refund the duplicate."},
{"from": "support", "text": "We are checking the charges."}
]
},
"order": {
"id": "A-104",
"charges": [
{"amount_usd": 49, "status": "captured"},
{"amount_usd": 49, "status": "captured"}
]
},
"refund_policy": "Duplicate charges are eligible for a refund."
}
這個物件就是一個狀態,儘管裡面有一段對話、一個訂單和一條政策。當決策需要比較這幾部分時,就把相關資訊放在一起。
把內容和問題分開
狀態裡裝的是內容和支撐事實。問題定義模型應當就這些材料做出哪些判斷。比如,把退款請求和政策留在狀態裡,然後問:客戶是否請求了退款、政策是否支援退款。
關於指令、判定標準、問題型別,以及如何就一個狀態提多個問題,見原語(問題)。