核心概念状态

状态是你请 System One 模型评估的内容。它可以是一条支持消息、一段文本,或者你的应用的当前状态。你把它放在 API 请求的 state 字段中,与你想要回答的问题一起传入。

每个请求针对一个状态评估一个或多个问题。所有问题看到的是同一个状态,并且相互独立地评估。你可以在一个请求中混用 Choice、Score 和 Noul 问题。

状态可以是简单字符串,也可以是结构化的 JSON 值

最简单的状态是纯字符串:

python
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."]

多数请求应使用对象,这样状态的每个部分都有描述性的名称,各部分之间的关系也保持清晰。当用例简单且只需要一段文本时,字符串就足够了。

Jev 仅接受文本。状态必须是字符串、JSON 对象或文本值数组。暂不支持图片、音频和视频。Jev 的主要训练语言是英语;其他语言(包括 CJK 文字)也可以接受,但目前准确率较低——参见模型。

json
{
  "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。