热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai教程 >LangChainJS之Runnable(三)

LangChainJS之Runnable(三)

来源:互联网 更新时间:2026-07-10 07:22

前面几篇文章聊了怎么用 LangChain 调用大模型、写提示词,接下来要进入重头戏——Chain 链。Chain 链可以说是 LangChain 的核心机制,它让开发者能轻松搭出标准化工作流,数据在各组件间自动流转,不用手动传递来传递去,方便又省心。

不过聊 Chain 链之前,得先把 Runnable 这个抽象类说清楚。它是一切链条的基石,没有它,链条根本搭不起来。下面我们就来拆解一下 Runnable

Runnable 是什么?

简单说,Runnable 是一套标准接口,让提示词模板、大模型、输出解析器这些不同组件,都能用统一的方式被调用和组合。它本身是个抽象类,不能直接 new 出来用,我们平时用的都是它的实现类。

比如下面这段代码里的 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 生成的代码时,你不仅知道它“在做什么”,更能理解它“为什么这么写”。

热门手游

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc