You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LangChain LCEL聚合两条Chain的输出结果?

LCEL串联Chain并聚合双输出解决方案

我有两条Chain:一条用于生成文档,另一条用于生成该文档的简短摘要。我希望将二者串联,把第一条Chain的输出作为第二条的输入,同时要求最终结果包含两条Chain的输出。在使用LCEL之前,我可以通过LLMChain的output_key参数实现这个功能,但在LCEL中,虽然知道有RunnablePassthrough类,却不清楚如何用它来聚合输出。我的代码示例如下:

generate_document_chain = generate_document_prompt | llm | StrOutputParser()
resume_document_chain = resume_document_prompt | llm | StrOutputParser()

aggregated_chain = generate_document_chain | resume_document_chain 
content = aggregated_chain.invoke({"topic": topic})

直接用RunnablePassthrough.assign就能实现双输出的聚合,核心思路是先执行文档生成Chain,把结果保留下来,再用这个结果作为输入调用摘要Chain,最后把两个结果打包进同一个字典里。

修改后的代码示例

from langchain_core.runnables import RunnablePassthrough

# 生成文档的Chain,输入topic输出完整文档
generate_document_chain = generate_document_prompt | llm | StrOutputParser()

# 生成摘要的Chain,注意prompt要包含{document}变量来接收输入
resume_document_chain = resume_document_prompt | llm | StrOutputParser()

# 串联并聚合输出
aggregated_chain = (
    # 先执行文档生成,把结果存入document字段
    {"document": generate_document_chain}
    # 基于document字段生成摘要,并存入summary字段
    | RunnablePassthrough.assign(
        summary=lambda data: resume_document_chain.invoke({"document": data["document"]})
    )
)

# 调用后得到包含document和summary的字典
content = aggregated_chain.invoke({"topic": topic})

# 按需获取结果
print("完整文档:", content["document"])
print("文档摘要:", content["summary"])

更简洁的写法

如果不需要保留原始topic参数,也可以直接把文档生成的结果作为输入传递:

aggregated_chain = (
    generate_document_chain
    | RunnablePassthrough.assign(
        summary=lambda doc_content: resume_document_chain.invoke({"document": doc_content})
    )
    # 把输入的文档内容和生成的摘要整理成字典
    | lambda result: {"document": result["input"], "summary": result["summary"]}
)

关键说明

  • RunnablePassthrough.assign的作用是在当前的数据上下文里新增字段,这里我们用它把摘要结果附加到已有的文档结果中。
  • 最终输出是一个包含两条Chain结果的字典,完全满足你同时保留双输出的需求。

内容的提问来源于stack exchange,提问作者Igor Deruga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 20:57:35