创建时间: 2026-03-29最后更新: 2026-09-10

1. 容错思路

前面的文章已经介绍顺序、并行和条件分支,这些工具解决的是“任务怎样执行”。真实应用还要面对另一个问题:某个步骤执行失败以后,程序应该怎样继续。

模型服务、数据库和第三方接口都有可能失败。如果没有提前设计容错,异常会一直向上传递,最终中断整次请求:

code.ts
1
输入 -> 读取上下文 -> 调用模型 -> 解析结果 -> 输出
2
× 失败
3
-> 整条链结束

最基础的处理方式是 try/catch

try-catch.ts
1
try {
2
const result = await chain.invoke(input)
3
return result
4
} catch (error) {
5
console.error('执行失败', error)
6
throw error
7
}

try/catch 能捕获异常,但接下来采取什么措施仍要由我们决定。常见策略有三种:

  1. 重试:同一个操作可能只是暂时失败,稍后再执行一次。
  2. 回退:主方案无法完成任务,切换到另一个实现。
  3. 直接失败:错误无法通过重试或备用方案恢复,立即返回明确提示。

LCEL 提供 withRetry()withFallbacks() 帮助我们把前两种策略直接组合到 Runnable 上。

正在加载图示...
正在验证登录状态
请稍候,验证完成后将继续显示文章内容