状态
状态
状态是什么、如何组织它,以及如何给 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."
}
这个对象就是一个状态,尽管里面有一段对话、一个订单和一条政策。当决策需要比较这几部分时,就把相关信息放在一起。
把内容和问题分开
状态里装的是内容和支撑事实。问题定义模型应当就这些材料做出哪些判断。比如,把退款请求和政策留在状态里,然后问:客户是否请求了退款、政策是否支持退款。
关于指令、判定标准、问题类型,以及如何就一个状态提多个问题,见原语(问题)。