Skip to content

Jev / System One API ​

Jev 是 TypeSafe 决策模型,使用专用的 System One 协议。它不是聊天模型,不能通过 /v1/chat/completions 的 messages 格式调用。

IMPORTANT

Jev 请求必须发送到 POST /v1/systemone。如果把 Jev 模型发送到 /v1/chat/completions,会返回 TypeSafe channels support only /v1/systemone。

API Path ​

http
POST https://ai.furry.vg/v1/systemone

请求仍然使用普通 S3AI API Key:

http
Authorization: Bearer sk-your-s3ai-key
Content-Type: application/json

可用模型 ​

当前 TypeSafe 渠道使用的模型包括:

  • jev-1.13
  • jev-1.13-free

模型权限和公开名称可能随账户配置变化,请先调用 GET /v1/models,并将返回的模型 ID 原样填入 model。oc-proxy_jev 是后台渠道名称,不应作为模型 ID,除非它确实出现在当前 Key 的模型列表中。

完整调用示例 ​

下面的请求让 Jev 根据一段状态,同时完成分类、评分和二元判断:

bash
curl -sS https://ai.furry.vg/v1/systemone \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-1.13-free",
    "state": {
      "message": "客户反馈信用卡被重复扣款,并要求尽快处理。"
    },
    "questions": {
      "route": {
        "type": "choice",
        "instructions": "选择负责处理该问题的团队。",
        "criteria": {
          "billing": "支付、账单、退款或重复扣款问题",
          "support": "产品使用或技术故障问题"
        }
      },
      "urgency": {
        "type": "score",
        "instructions": "评估该问题的处理紧急程度。",
        "criteria": [
          "低:可以排队处理",
          "中:应当尽快处理",
          "高:需要立即处理"
        ]
      },
      "needs_human": {
        "type": "noul",
        "instructions": "是否需要人工客服立即介入?"
      }
    }
  }'

请求体参数 ​

字段类型必填说明
modelstring是从 GET /v1/models 返回结果中选择 Jev 模型 ID。
statestring、object 或 array是需要模型分析的当前状态;不能是 null。
questionsobject是非空问题对象;每个键是调用方自定义的问题 ID。
questions.<id>.typestring是支持 noul、choice 或 score。
questions.<id>.instructions任意非空 JSON 值是告诉模型需要判断什么,通常使用字符串。
questions.<id>.criteriaobject 或 array视类型而定choice 和 score 必填,noul 可省略。

问题类型 ​

type用途criteria 格式
noul二元判断可省略。
choice从多个命名选项中选择非空对象,键为选项 ID、值为选项说明;最多 255 个选项。
score按有序等级评分包含 2 至 10 个等级说明的数组,顺序从低到高。

同一请求可以在 questions 中放入多个不同类型的问题。问题 ID(例如 route)由调用方定义,建议使用稳定且便于程序读取的英文标识。

JavaScript 调用 ​

js
const response = await fetch('https://ai.furry.vg/v1/systemone', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'jev-1.13-free',
    state: { message: '客户反馈信用卡被重复扣款。' },
    questions: {
      route: {
        type: 'choice',
        instructions: '选择负责处理该问题的团队。',
        criteria: {
          billing: '支付、账单和退款问题',
          support: '技术故障和产品使用问题',
        },
      },
    },
  }),
})

if (!response.ok) {
  throw new Error(`${response.status}: ${await response.text()}`)
}

const result = await response.json()
console.log(result)

读取响应 ​

System One 的响应由 TypeSafe 上游以 JSON 返回,并由网关原样转发。它不是 OpenAI Chat Completions 响应,因此不要读取 choices[0].message.content。

调用方应按照请求中的问题 ID,从响应的对应问题结果中读取判断值;响应还可能包含 usage.input_tokens 和 usage.output_tokens。实际字段以当前接口响应为准,接入时建议先输出一次完整 JSON 再完成字段映射。

常见错误 ​

TypeSafe channels support only /v1/systemone ​

请求被发送到了 /v1/chat/completions 等其他路径。把地址改为:

text
https://ai.furry.vg/v1/systemone

并将 OpenAI messages 请求体改成本文的 state + questions 格式。

/v1/systemone requires a TypeSafe channel ​

当前 model 没有路由到 TypeSafe 渠道。重新查询 GET /v1/models,确认使用的是已授权的 Jev 模型 ID;如果模型存在但仍报错,请联系管理员检查模型映射和渠道状态。

不能直接使用 OpenAI SDK 的聊天方法 ​

chat.completions.create() 固定调用 /v1/chat/completions,不适用于 Jev。请使用 fetch、curl 或其他能够向 /v1/systemone 发送自定义 JSON 的 HTTP 客户端。

Powered by VitePress