LangChainJS Runnable详解:第三篇核心用法
Runnable是LangChain链条的基石,提供标准接口使提示词模板、大模型等组件可统一调用与组合。通过RunnableLambda可将普通函数转为兼容组件,支持invoke、batch、stream等执行方式,并内置RunnableSequence、RunnableParallel等类实现顺序、并行及条件分支逻辑。
在前几篇文章中,我们详细探讨了如何使用 LangChain 调用大模型以及编写提示词,接下来将进入核心环节——Chain 链。Chain 链作为 LangChain 的关键机制,能够帮助开发者快速搭建标准化的 AI 工作流,让数据在各个组件之间自动流转,无需手动传递,既高效又省力。
不过在深入 Chain 链之前,首先需要理解 Runnable 这个抽象类。它是所有链条的基础,没有它,链条就无法构建。下面我们将对 Runnable 进行详细拆解。
Runnable 究竟是什么?
简单来说,Runnable 是一套标准接口,它使得提示词模板、大模型、输出解析器等各种组件能够以统一的方式被调用和组合。Runnable 本身是一个抽象类,不能直接实例化,我们日常开发中使用的都是它的具体实现类。
例如,下面代码中的 RunnableLambda 就是 Runnable 的一个实现:
const transformInput = RunnableLambda.from((input: { text: string }) => ({text: input.text,wordCount: input.text.split(/s+/).length,characterCount: input.text.length,
}));
// 这里是 Chain 链调用,下一章会聊到
const chain = transformInput.pipe(promptTemplate).pipe(model).pipe(new StringOutputParser());
const text = `LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它提供了一套丰富的工具和组件,使得构建复杂的 LLM 应用变得更加容易。无论是简单的聊天机器人还是复杂的智能袋里,LangChain 都能帮你实现。`.trim();
const result = await chain.invoke({ text });
这里 RunnableLambda.from 接收一个普通匿名函数作为参数,返回一个全新的、支持 Runnable 规范的对象 transformInput。这个对象就能直接用在 Chain 链里了。如果是普通函数,肯定不支持链式调用,但经过 RunnableLambda 一转换,它就变成了一个“Runnable 兼容”的组件。
通用插头
一个 Runnable 对象提供了多种执行方式,能够灵活应对不同的业务场景:
invoke/ainvoke:最基础的调用方式,输入一个参数,返回完整的输出结果。同步与异步版本均支持。batch/abatch:批量处理多个输入,显著提升执行效率。Runnable接口内部已内置了优化的并行处理能力。stream/astream:流式处理,在输出生成的同时逐步返回结果。在聊天类应用中尤为实用,可实现类似“打字机”的实时效果。
// 使用 invoke 返回完整的输出
const result = await runnable.invoke({ topic: "人工智能的未来" });
console.log(result);
// 使用 batch 批量处理多个输入
const runnableInput = RunnableLambda.from(text: string): string => text.toUpperCase());
const inputs = ["hello", "world", "langchain"];
const results = await runnableInput.batch(inputs);
// 使用 stream 逐字输出结果
const result = await runnable.stream({ question: "LangChain是什么" });
for await (const chunk of result) {
process.stdout.write(chunk); // 会像打字一样,逐字输出
}
Runnable 组件
除了模型、提示词等基础组件本身已经实现了 Runnable 接口,LangChain 还内置了多个专用的 Runnable 类,用于处理更复杂的逻辑:
RunnableSequence:按顺序执行一组Runnable,上一个的输出自动成为下一个的输入。通过|创建的链,本质上就是此类。RunnableParallel:并行执行多个Runnable,适用于需要同时获取多维度信息的场景。RunnableLambda:将任意普通函数转换为Runnable,便于在链条中插入自定义逻辑。RunnablePassthrough:透传数据,常用于在链条中传递或附加额外的上下文信息。RunnableBranch:实现条件分支逻辑,根据输入动态选择要执行的Runnable。
总结
以上就是 Runnable 的核心内容。随着 AI 编程工具日益强大,在日常开发中理解这些底层原理依然具有重要价值:当你阅读 AI 生成的代码时,不仅能明白它“在做什么”,更能理解它“为什么这么写”。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
AI如何从聊天能力进化到做事能力 Skill的实践之路
让AI从“会聊天”转向“会做事”的关键在于Skill(技能包)。Skill由可执行代码、精确的说明书(如JSONSchema描述)及结果翻译器构成。通过精细定义参数与边界,AI能稳定调用接口完成重启服务、查询数据等操作,从而从空谈顾问变为可靠的数字员工。
零基础看懂Agent Skill MCP三层关系解读
智能体是自主执行任务的实体,技能是被封装的原子能力,MCP协议是智能体与技能间的标准化通信协议。智能体通过MCP协议发现并调用技能,灵活组合完成复杂任务。三者解耦,实现即插即用,降低了系统集成复杂度。
AI编码时代UI自动化测试智能化演进之路—中国平安人寿蔡雪
AI编码时代,UI自动化测试面临效率断层。平安人寿蔡雪基于自研“女娲”平台,分享从可视化录制到AI智能录制、基于EventDOM的智能感知与自愈机制的演进路径,实现用例创建降本、维护减负、执行提稳,推动测试工具从自动化向智能化升级。
一文讲清Agent、Skill、MCP到底什么关系:零基础小白三层拆解
Agent是自主执行任务的数字打工人,Skill为原子化能力函数,MCP是标准协议接口。Agent通过MCP发现并调用Skill,实现即插即用,解耦技能与智能体,让大模型能力安全、统一、可扩展地集成。
文生图同一提示词为何每次不同?随机性与可复现解析
文生图每次结果不同源于从随机噪声开始去噪。固定种子(seed)可锁定初始噪声,但还需采样步数、引导强度、采样器、尺寸、提示词、模型等参数一致才能复现。通过控制变量法调参,先固定种子再逐一调整其他参数,可精确归因差异。
- 热门数据榜
相关攻略
2026-07-10 11:09
2026-07-10 11:09
2026-07-10 11:09
2026-07-10 11:09
2026-07-10 11:09
2026-07-10 11:08
2026-07-10 11:08
2026-07-10 11:08
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

