分类
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
函数默认使用classify
model 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中的分类方法。