创建时间: 2026-03-29最后更新: 2026-09-10作者: yangbo(9e98781e0)
1. 容错思路
前面的文章已经介绍顺序、并行和条件分支,这些工具解决的是“任务怎样执行”。真实应用还要面对另一个问题:某个步骤执行失败以后,程序应该怎样继续。
模型服务、数据库和第三方接口都有可能失败。如果没有提前设计容错,异常会一直向上传递,最终中断整次请求:
code.ts
1输入 -> 读取上下文 -> 调用模型 -> 解析结果 -> 输出2× 失败3-> 整条链结束
最基础的处理方式是 try/catch:
try-catch.ts
1try {2const result = await chain.invoke(input)3return result4} catch (error) {5console.error('执行失败', error)6throw error7}
try/catch 能捕获异常,但接下来采取什么措施仍要由我们决定。常见策略有三种:
- 重试:同一个操作可能只是暂时失败,稍后再执行一次。
- 回退:主方案无法完成任务,切换到另一个实现。
- 直接失败:错误无法通过重试或备用方案恢复,立即返回明确提示。
LCEL 提供 withRetry() 和 withFallbacks() 帮助我们把前两种策略直接组合到 Runnable 上。
正在加载图示...
正在验证登录状态
请稍候,验证完成后将继续显示文章内容