游乐游手机版
首页/AI教程/文章详情

LangChainJS Runnable详解:第三篇核心用法

时间:2026-07-10 11:08
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 生成的代码时,不仅能明白它“在做什么”,更能理解它“为什么这么写”。

来源:https://juejin.cn/post/7660033072000450610
上一篇Claude Code 工作原理详解 下一篇AI编程智能体沙箱设计原理解析
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
AI如何从聊天能力进化到做事能力 Skill的实践之路
AI教程 · 2026-07-10

AI如何从聊天能力进化到做事能力 Skill的实践之路

让AI从“会聊天”转向“会做事”的关键在于Skill(技能包)。Skill由可执行代码、精确的说明书(如JSONSchema描述)及结果翻译器构成。通过精细定义参数与边界,AI能稳定调用接口完成重启服务、查询数据等操作,从而从空谈顾问变为可靠的数字员工。

零基础看懂Agent Skill MCP三层关系解读
AI教程 · 2026-07-10

零基础看懂Agent Skill MCP三层关系解读

智能体是自主执行任务的实体,技能是被封装的原子能力,MCP协议是智能体与技能间的标准化通信协议。智能体通过MCP协议发现并调用技能,灵活组合完成复杂任务。三者解耦,实现即插即用,降低了系统集成复杂度。

AI编码时代UI自动化测试智能化演进之路—中国平安人寿蔡雪
AI教程 · 2026-07-10

AI编码时代UI自动化测试智能化演进之路—中国平安人寿蔡雪

AI编码时代,UI自动化测试面临效率断层。平安人寿蔡雪基于自研“女娲”平台,分享从可视化录制到AI智能录制、基于EventDOM的智能感知与自愈机制的演进路径,实现用例创建降本、维护减负、执行提稳,推动测试工具从自动化向智能化升级。

一文讲清Agent、Skill、MCP到底什么关系:零基础小白三层拆解
AI教程 · 2026-07-10

一文讲清Agent、Skill、MCP到底什么关系:零基础小白三层拆解

Agent是自主执行任务的数字打工人,Skill为原子化能力函数,MCP是标准协议接口。Agent通过MCP发现并调用Skill,实现即插即用,解耦技能与智能体,让大模型能力安全、统一、可扩展地集成。

文生图同一提示词为何每次不同?随机性与可复现解析
AI教程 · 2026-07-10

文生图同一提示词为何每次不同?随机性与可复现解析

文生图每次结果不同源于从随机噪声开始去噪。固定种子(seed)可锁定初始噪声,但还需采样步数、引导强度、采样器、尺寸、提示词、模型等参数一致才能复现。通过控制变量法调参,先固定种子再逐一调整其他参数,可精确归因差异。