我有两个链,一个用于生成文档,另一个用于创建简短的文档简历。我想将它们链接起来,使用第一个的输出到另一个的内部。但我想在结果中得到两个输出。
在 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})
也许下面的就是你想要的。它将第一条链的输出作为输入输入到第二条链中。
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"
。