createQuestionClassifierNode

workflow.createQuestionClassifierNode() 创建一个输入为 string 的分类节点。它会把问题、分类列表和说明拼成 LLM prompt,并要求模型只返回分类名;如果返回值不在允许分类中,节点输出空字符串。

签名

workflow.createQuestionClassifierNode<
  const Categories extends readonly QuestionClassifierCategory[],
>(
  options: QuestionClassifierNodeOptions<Categories>,
): BaseNode<string, QuestionClassifierOutput<Categories>>

参数

参数类型说明
optionsQuestionClassifierNodeOptions<Categories>定义 provider、分类、用户说明和 LLM 设置。

Options 字段

字段类型说明
namestring节点名,默认 "question-classifier"
providerLLMProviderSource分类所用 provider。必填。
categoriesQuestionClassifierCategory[]允许返回的分类。名称不能重复。必填。
userDescriptionstring分类任务和用户场景说明。必填。
systemstringsystem prompt,默认 "You are a strict question classifier."
settingsLLMCallSettings 子集LLM 调用参数;会覆盖默认的 temperature: 0maxOutputTokens: 50
historyLimitnumber节点执行历史保留条数,默认 50
metadataWorkflowNodeMetadataInput节点展示元信息。

输入输出

名称类型说明
输入string要分类的问题。空字符串会触发输入校验错误。
输出CategoryName | ""匹配到分类时返回分类名;模型返回非允许分类时返回空字符串。

QuestionClassifierCategory

字段说明
name分类名,也是模型必须返回的精确文本。必填。
description分类说明,会写入 prompt。必填。

LLM 请求内容

片段来源说明
分类规则节点内部固定模板要求只返回分类名,不返回 JSON、Markdown 或解释。
userDescriptionoptions业务分类说明。
categoriesoptions按序号列出允许分类和说明。
question节点输入用户问题。

示例

const classifier = workflow.createQuestionClassifierNode({
  name: "route-question",
  provider: workflow.createLLMProviderRef("default"),
  userDescription: "判断用户是在问技术问题还是闲聊。",
  categories: [
    { name: "technical", description: "代码、API、部署或错误排查。" },
    { name: "chat", description: "普通对话或非技术问题。" },
  ] as const,
});

const category = await workflow.runNode(classifier, input.message, context);

错误

情况错误类型说明
categories 为空input_validation至少需要一个分类。
分类名重复input_validationname 不能重复。
userDescription 或 question 为空input_validation必填文本不能为空。
provider 调用失败provider_call由 provider 层抛出。