← 返回文章列表

Jev 可以用来做什么?三个简单例子

AI
  • # ai
  • # jev
  • # automation

看完 Jev 与大语言模型的对比,更具体的问题是:它能放在程序的哪个位置?

可以先从一个小判断开始。输入一段内容,让 Jev 选择类别、打分或回答一个是非问题,程序再决定下一步。下面用三个自拟场景,分别展示官方提供的 Choice、Score 和 Noul,不涉及让模型生成文字。

代码使用 TypeSafe JavaScript SDK,仅展示业务逻辑片段。

例子一:把工单分给对应部门

用户写「上个月的发票抬头填错了,能重新开一张吗?」。程序需要确定处理部门,而不需要一段解释。这适合用 Choice,提前给出候选项及其范围。

const ticketResult = await client.systemOne({
  state: '上个月的发票抬头填错了,能重新开一张吗?',
  questions: {
    department: choice('这条工单应该由哪个部门处理?', {
      billing: '发票、付款和账单问题',
      technical: '软件故障和接口问题',
      other: '不属于以上类别,或信息不足以判断',
    }),
  },
})

const department = ticketResult.answers.department
const queue = department.confidence >= 0.8
  ? department.choice
  : 'manual-review'
console.log('工单队列:', queue)

模型返回的 choice 是选中的类别,confidence 表示答案的集中程度,另外还有每个选项的 probabilities。这里用 0.8 作为示例阈值,不够明确时交给人工分流。实际系统可以把 queue 接到工单队列,而不是直接执行退款等操作。

例子二:给检索到的片段打分

知识库检索通常会找出多个候选片段。可以用 Score 判断每个片段是否有助于回答问题,再决定哪些内容送给回答模型。

const passageResult = await client.systemOne({
  state: {
    query: '怎么修改发票抬头?',
    passage: '打开账单设置,在发票信息中修改抬头;已开票记录需联系客服更正。',
  },
  questions: {
    relevance: score('passage 对回答 query 有多大帮助?', [
      '与问题无关,不能提供帮助',
      '主题相关,但缺少回答所需的信息',
      '包含能够直接帮助回答问题的信息',
    ]),
  },
})

const relevance = passageResult.answers.relevance
const keepPassage = relevance.score >= 1.5 && relevance.confidence >= 0.8
console.log('是否保留检索片段:', keepPassage)

三个等级依次对应 0、1、2,返回的 score 可以落在等级之间。它是等级编号按概率加权后的值,不能把 1.5 理解为「75% 的概率正确」。这里的两个阈值也只是示例,需要用自己的检索样本调整。

评分只判断提供的片段是否有用。系统仍需先完成检索,再由语言模型结合保留的内容生成回答。

例子三:判断是否保存用户偏好

聊天记录不必每一句都写进长期记忆。「以后回答尽量简短,代码示例优先用 TypeScript」表达了可以用于后续对话的偏好,这适合用 Noul 判断。

const preference = '以后回答尽量简短,代码示例优先用 TypeScript。'
const memoryResult = await client.systemOne({
  state: preference,
  questions: {
    shouldRemember: noul('这句话是否表达了适合后续对话使用的长期偏好?'),
  },
})

const probability = memoryResult.answers.shouldRemember.noul
const action = probability >= 0.9
  ? 'save'
  : probability <= 0.1
  ? 'skip'
  : 'review'
console.log('记忆处理方式:', action)

noul 是回答为「是」的概率:接近 1 偏向肯定,接近 0 偏向否定,接近 0.5 则不明确。它没有独立的 confidence 字段。程序可以在 save 分支保存原句,在 review 分支等待确认;Jev 本身不会替你写数据库,也不会生成一份记忆摘要。

三个例子的分工都很小:Jev 提供判断,代码控制分支。接入真实业务前,用一批已知答案的样本检查判断效果,再决定阈值;API 超时或调用失败也应保留重试或人工处理的路径,不要把请求失败当成否定答案。