文件導航

狀態

狀態是什麼、如何組織它,以及如何給 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."
}

這個物件就是一個狀態,儘管裡面有一段對話、一個訂單和一條政策。當決策需要比較這幾部分時,就把相關資訊放在一起。

把內容和問題分開

狀態裡裝的是內容和支撐事實。問題定義模型應當就這些材料做出哪些判斷。比如,把退款請求和政策留在狀態裡,然後問:客戶是否請求了退款、政策是否支援退款。

關於指令、判定標準、問題型別,以及如何就一個狀態提多個問題,見原語(問題)。

請求 schema 見 API 參考;安裝、型別化輸入和響應處理見客戶端 SDK。