Langchain SequentialChain多输出场景run方法报错求助
解决方案
方法1:使用invoke方法(推荐)
LangChain v0.1及之后版本,所有链统一用invoke方法处理输入输出,单/多输出场景都适用。传入输入字典后,会直接返回包含所有输出键的结果字典:
# 示例输入(根据你的业务场景调整) input_data = {"content": "用于生成MCQ的目标文本"} # 执行链并获取结果 result = sequential_chain.invoke(input_data) # 提取两个输出结果 quiz = result["quiz"] review = result["review"]
方法2:调整为单输出键(适配旧逻辑可选)
如果需要适配仅支持单输出的业务逻辑,可以修改SequentialChain的输出配置,把两个结果打包成字典作为单个输出键的值:
from langchain.chains import SequentialChain # 重新定义SequentialChain,设置单输出键 sequential_chain = SequentialChain( chains=[quiz_chain, review_chain], input_variables=["content"], # 将输出改为单个键,值包含quiz和review的合并结果 output_keys=["combined_output"], # 需确保链的最后一步能生成包含两个结果的字典,或额外添加合并步骤 ) # 此时可使用run方法(仍推荐优先用invoke) result = sequential_chain.run(input_data) quiz = result["quiz"] review = result["review"]
关键说明
run方法仅支持单一输出键的链,设计目的是直接返回单个结果值,而非字典,多输出场景下必然报错。- SequentialChain继承自BaseChain,新版LangChain已统一用
invoke作为标准执行方法;predict方法仅针对LLMChain这类单输出链设计,SequentialChain本身确实没有该方法。
内容的提问来源于stack exchange,提问作者light0-0
相关产品推荐
相关产品推荐

