createLLMNode

workflow.createLLMNode() 创建一次性 LLM 调用节点。节点执行时会先解析 provider,再调用 provider.chat(llmInput),最后可通过 mapOutput 把 LLM 输出转换为业务 payload。

签名

workflow.createLLMNode<Input>(
  options: LLMNodeOptions<Input, LLMChatOutput>,
): BaseNode<Input, LLMChatOutput>

workflow.createLLMNode<Input, Output>(
  options: LLMNodeOptions<Input, Output> & {
    mapOutput: LLMOutputMapper<Input, Output>;
  },
): BaseNode<Input, Output>

参数

参数类型说明
optionsLLMNodeOptions<Input, Output>定义 provider、输入映射、输出映射和节点元信息。

LLMNodeOptions

字段类型说明
namestring节点名称,默认 "llm"。provider binding 可按该名称覆盖 provider。
providerLLMProviderSourceprovider 实例、provider id、provider ref 或 resolver。必填。
mapInput(input, context) => LLMChatInput把业务输入转换成 LLM 请求。必填。
mapOutput(output, input, context) => Output把 LLM 输出转换成业务输出;不传时返回原始 LLMChatOutput
historyLimitnumber节点执行历史保留条数,默认 50
metadataWorkflowNodeMetadataInput节点展示元信息。

LLMProviderSource

形态类型说明
provider 实例LLMProvider直接使用可调用 provider。
provider idstringcontext.providers.llmProviders 查找。
provider refLLMProviderRefid 延迟解析,并可配置 fallback。
resolver(context, nodeName) => LLMProvider | undefined按节点或上下文动态选择 provider。

LLMChatInput

字段类型说明
promptstring单条 prompt;与 messages 二选一。
messagesModelMessage[]多轮消息;与 prompt 二选一。
systemstringsystem prompt。
temperaturenumber采样温度。
maxOutputTokensnumber最大输出 token 数。
topP / topKnumber采样参数。
presencePenalty / frequencyPenaltynumber重复惩罚参数。
stopSequencesstring[]停止序列。
seednumber随机种子。
maxRetriesnumber重试次数。
timeoutnumber调用超时。
headersobject额外请求头。
providerOptionsLLMProviderOptionsprovider 私有扩展参数。
abortSignalAbortSignal节点会自动从 context.abortSignal 注入。

输出

情况节点输出类型说明
未传 mapOutputLLMChatOutput原样返回 provider chat 结果。
传入 mapOutputOutput返回 mapOutput(output, input, context) 的结果。

LLMChatOutput

字段类型说明
textstring模型文本输出。
finishReasonFinishReason | undefined停止原因。
usageLanguageModelUsage | undefinedtoken 用量。
providerMetadataProviderMetadata | undefinedprovider 元信息。
当 executor 配置 tokenUsage: { enabled: true } 时,节点内部通过 getLLMProvider() 解析出的 provider 会在 chat 返回后读取 LLMChatOutput.usage 并上报到 context.tokenUsage,因此即使 mapOutput 不再返回 usage 字段也能统计。本次 run 的聚合会出现在 report.tokenUsage.run,同时写入 global/workflow/conversation KV 聚合;支持 input、output、reasoning、cached input 和 cache creation/write token 明细。

调用流程

阶段输入结果
上游节点Input业务输入
mapInputInputNodeContextLLMChatInput
provider chatLLMChatInputLLMChatOutput
mapOutputLLMChatOutputInputNodeContextOutput

示例

const llmNode = workflow.createLLMNode<ParsedInput, AnswerPayload>({
  name: "answer",
  provider: workflow.createLLMProviderRef("default"),
  mapInput(input) {
    return {
      system: "You answer briefly.",
      prompt: input.message,
      temperature: 0.2,
    };
  },
  mapOutput(output) {
    return {
      errCode: 0,
      errMessage: "",
      content: output.text,
    };
  },
});