LLM Provider
LLM 能力通过统一的 provider 接口注入 workflow。公开 workflow 使用自己的 provider 配置和 API key;服务端不会替 workflow 保存或代理第三方模型凭据。
创建 provider ref
推荐在 workflow 中创建 provider ref,让节点运行时读取配置:
const llmProvider = steamharness.createLLMProviderRef("default", () => {
return steamharness.createLLMProviderFromConfig();
});
节点运行时才解析 provider,避免业务代码在模块加载阶段读取业务配置。
LLM 节点
非流式节点:
const llmNode = steamharness.createLLMNode<Input>({
name: "answer-llm",
provider: llmProvider,
mapInput(input) {
return {
system: "你是一个简洁助手。",
prompt: input.message,
maxOutputTokens: 300,
};
},
});
流式节点使用同一个 provider:
const llmStreamNode = steamharness.createLLMStreamNode<Input>({
name: "answer-stream",
provider: llmProvider,
mapInput(input) {
return { messages: [{ role: "user", content: input.message }] };
},
});
项目配置字段
steamharness.createLLMProviderFromConfig() 读取以下字段:
LLM_TYPELLM_API_KEYLLM_BASE_URLLLM_MODEL
在 configuration.json 声明这些字段,然后通过项目配置面板填写值。值来自本次运行的冻结快照,不回退读取 .env 或进程变量。LLM_BASE_URL 必须是没有用户名、密码、查询参数或片段的 HTTP(S) 地址。
项目业务值来自项目配置,不加载项目 env,也不回退读取进程变量。宿主部署和通信配置由宿主单独管理。
Provider 类型与错误
provider factory 支持的类型来自 LLM_PROVIDER_TYPES。未配置模型时,会按 provider 类型选择默认模型;测试时可以使用 mock provider。
provider 调用失败会被包装为 workflow 错误并进入执行报告。模型不支持的可选参数可能产生 compatibility warning;鉴权失败、模型不可用和上游请求失败仍然会直接失败。