聚合 langchain LCEL 元素的输出

问题描述 投票:0回答:1

我有两个链,一个用于生成文档,另一个用于创建简短的文档简历。我想将它们链接起来,使用第一个的输出到另一个的内部。但我想在结果中得到两个输出。

在 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})
langchain
1个回答
0
投票

也许下面的就是你想要的。它将第一条链的输出作为输入输入到第二条链中。

from langchain_core.runnables import RunnablePassthrough

aggregated_chain = generate_document_chain | {
    "first_chain_output": RunnablePassthrough(),
    "second_chain_output": resume_document_chain
}
content = aggregated_chain.invoke({"topic": topic})

然后输出将是一个带有键的字典:

"first_chain_output"
"second_chain_output"

您也可以使用

RunnablePassthrough.assign
。与上面的情况不同,
generate_document_chain
输出的键应该与第二条链的输入变量名称匹配。下面,假设第二条链的输入变量为
"input"
(顺便说一句,第一条链的输入变量为
"topic"
)。

aggregated_chain = (
    {"input": generate_document_chain} 
    | RunnablePassthrough.assign(second_chain_output=resume_document_chain)
)

该链的输出将是一个带有键的字典:

"input"
"second_chain_output"

© www.soinside.com 2019 - 2024. All rights reserved.