跳至内容

分类

GenAIScript中的classify函数允许您基于机器学习模型对输入进行分类。它提供了一个简单的接口来利用LLMs的强大能力完成分类任务。

使用说明

classify 定义在 GenAIScript runtime 中,需要被导入。它接收待分类的文本、一组标签(以及LLM的选项)作为输入,并返回LLM提供的标签。

import { classify } from "genaiscript/runtime"
const { label } = await classify(
"The app crashes when I try to upload a file.",
{
bug: "a software defect",
feat: "a feature request",
qa: "an inquiry about how to use the software",
}
)
  • 提示词鼓励大型语言模型在返回标签之前先解释其选择。
  • 标签标记通过logit-bias进行增强,以提高分类的可靠性。

图片

您可以传递一个接收提示上下文的函数, 并通过编程方式构建DATA变量。 这使您能够选择文件、图像和其他GenAIScript选项。

const res = await classify(_ => {
_.defImages('DATA', img)
}, ...)

标签

labels 参数是一个对象,其中键是您想要将输入分类到的标签,值是对这些标签的描述。LLM 使用这些描述来理解每个标签的含义。

每个标签ID应该是一个能编码成单个标记的单词。这样可以通过logit-bias来增强标签,提高分类的可靠性。

other 标签

可以在标签列表中添加一个other标签,以便当LLM无法对文本进行分类时提供一个退路。

const res = await classify(
"...",
{ ... },
{ other: true }
)

说明

默认情况下,分类提示词被调整为返回一个标记(maxToken: 1)作为标签。 您可以在返回标签前启用输出理由说明的功能。

const res = await classify(
"...",
{ ... },
{ explanation: true }
)

模型和其他选项

classify函数默认使用classifymodel alias。 您可以在选项中修改此别名或指定其他模型。

const res = await classify("...", {
model: "large",
})

options参数会在内部传递给inline prompt,可用于修改LLM的行为。

评估分类质量

GenAIScript返回分类标签的logprob(和熵)。您可以使用此值来评估标签的质量。

如果标签具有高概率,意味着这可能是一个高质量的类别分类。较低的概率可能表示大语言模型(LLM)犹豫不决,或者也考虑了其他标签。

const { label, probPercent } = await classify(...)
if (probPercent < 80) { // 80%
console.log(`classifier confused...`)
}

配置

您可以通过在选项中设置logprobs: false来禁用logprobs。您可以通过在选项中设置topLogprobs: false来禁用topLogprobs

致谢

这个函数的灵感来源于Marvin中的分类方法。