LangChain LCEL执行报错:Serializable初始化参数数量不符
问题解决:LangChain中Serializable.init() TypeError报错
错误原因
你在链式调用中直接使用StrOutputParser类本身,而非创建它的实例,导致调用时错误地将输入参数传递给类的构造函数,触发Serializable.__init__()参数不匹配的报错。
修正后的代码
将StrOutputParser改为StrOutputParser()(添加括号完成实例化)即可解决问题:
from langchain.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_openai import ChatOpenAI # 部分LangChain版本需从该路径导入ChatOpenAI model = ChatOpenAI() prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}") chain = prompt | model | StrOutputParser() chain.invoke({"topic": "bears"})
简单示例的修正
同样需要实例化StrOutputParser:
prompt2 = ChatPromptTemplate.from_template("What's up?") chain = prompt2 | model | StrOutputParser() chain.invoke({})
补充说明
LangChain的输出解析器需要以实例形式加入链式调用,因为链式调用的每个环节都要求是可执行的Runnable对象,类本身不具备可执行能力,必须通过实例化生成可调用对象。
内容的提问来源于stack exchange,提问作者devinbost
相关产品推荐
相关产品推荐

