getLLMProvider

workflow.getLLMProvider() 是 provider 解析工具。LLM 节点内部会调用它,业务代码也可以在自定义节点或高级场景中直接使用。 当 executor 配置 tokenUsage.enabled 时,通过 getLLMProvider() 解析出的 provider 会在 chat() 返回或 stream finish chunk 携带 usage 时自动上报 token 用量。直接在自定义节点中调用 provider 的 workspace 示例也会走同一条统计链路;没有 usage 的 provider 不会写入统计。上报会读取常见 provider usage 字段,包括 cache read / cache write 或 cache creation token 明细。

签名

workflow.getLLMProvider(
  context: NodeContext,
  nodeName: string,
  source?: LLMProviderSource,
): LLMProvider

参数

参数类型说明
contextNodeContextcontext.providers 读取 provider、绑定和默认 provider。
nodeNamestring当前节点名;用于节点级 binding 和错误信息。
sourceLLMProviderSource可选 provider 来源:实例、id、ref 或 resolver。

ProviderRegistry

字段类型说明
llmLLMProvider | undefined兼容的默认单 provider。
llmProvidersobject | undefinedprovider id 到 provider 实例的映射。
llmProviderBindingsobject | undefined节点名到 provider/model 绑定的映射。
defaultLLMProviderBindingLLMProviderBinding | undefined默认 provider/model 绑定。
defaultLLMProviderIdstring | undefined默认 provider id。

LLMProviderSource

形态类型说明
provider 实例LLMProvider直接返回。
provider idstringllmProviders 查找。
provider refLLMProviderRef先查 ref.id,必要时使用 ref.fallback
resolver(context, nodeName) => LLMProvider | undefined自定义解析。

解析顺序

顺序来源说明
1节点绑定优先使用 context.providers.llmProviderBindings[nodeName]
2source使用节点声明的 provider source。
3默认绑定使用 defaultLLMProviderBinding
4默认 id使用 defaultLLMProviderIdllmProviders 查找。
5兼容默认 provider直接使用 context.providers.llm
6ref fallback只有 source 是 ref 时尝试。

返回值

返回类型说明
providerLLMProvider包含 namechat(input)stream(input)

错误

情况错误类型说明
绑定的 provider/model 找不到provider_call报错会包含 providerId、modelId 和 nodeName。
所有来源都解析失败provider_call当前节点需要 LLM provider,但上下文中没有可用 provider。

示例

const provider = workflow.getLLMProvider(
  context,
  "answer",
  workflow.createLLMProviderRef("default"),
);

const output = await provider.chat({ prompt: input.message });