文档导航

状态

状态

状态是什么、如何组织它,以及如何给 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。