LLM Provider

LLM 能力通过统一 provider 接口注入 workflow。业务 workflow 不直接绑定 OpenAI、Anthropic 或其它 SDK;当前真实调用统一走 Vercel AI SDK 适配。

创建 provider ref

推荐在 workflow 中创建 provider ref:
const llmProvider = workflow.createLLMProviderRef("default", () => {
  return workflow.createLLMProviderFromEnv();
});
节点运行时会解析 provider,避免业务代码在模块加载阶段就读取环境变量。

LLM 节点

非流式节点:
const llmNode = workflow.createLLMNode<Input>({
  name: "answer-llm",
  provider: llmProvider,
  mapInput(input) {
    return {
      system: "你是一个简洁助手。",
      prompt: input.message,
      maxOutputTokens: 300,
    };
  },
});
流式节点:
const llmStreamNode = workflow.createLLMStreamNode<Input>({
  name: "answer-stream",
  provider: llmProvider,
  mapInput(input) {
    return {
      messages: [{ role: "user", content: input.message }],
      temperature: 0.2,
    };
  },
});

环境变量

workflow.createLLMProviderFromEnv() 会读取:
  • LLM_TYPE
  • LLM_API_KEY
  • LLM_BASE_URL
  • LLM_MODEL
这些值由 workflow.getEnv 统一获取,所以本地 CLI、App 本地环境变量和 server 环境变量都可以使用相同名称。

Provider 类型

当前 provider factory 支持的类型来自 LLM_PROVIDER_TYPES。未配置模型时,会按 provider 类型选择默认模型。测试时可以使用 mock provider。

输出与错误

LLM provider 调用失败会被包装为 workflow 错误并进入执行报告。用户可见输出应通过 output node 产生,而不是直接依赖 provider 的原始返回。

追踪

本文档首版由 issue #32 记录。LLM provider 行为对齐 core/provider/llm/*core/node/llm/index.ts