Langchain LCEL:向链式字典添加变量报错求助
问题原因
LangChain的字典式Runnable(即代码中{}定义的部分)要求每个键对应的值必须是Runnable对象、可调用对象(如lambda函数)或嵌套字典,直接传入字符串''不符合类型要求,因此触发TypeError。
解决方案
你可以通过以下几种方式修改代码,让chat_history符合类型要求:
方法1:用lambda返回空字符串
将直接赋值的空字符串替换为返回空字符串的lambda函数:
full_chain = { "topic": classification_chain, "input": lambda x: x["input"], "chat_history": lambda x: '' } | RunnableLambda(route)
方法2:使用RunnablePassthrough.assign追加字段
如果希望原字典结构更简洁,可以用RunnablePassthrough.assign来额外添加chat_history字段:
from langchain_core.runnables import RunnablePassthrough full_chain = ( { "topic": classification_chain, "input": lambda x: x["input"], } | RunnablePassthrough.assign(chat_history=lambda x: '') | RunnableLambda(route) )
方法3:用RunnableLambda包装返回逻辑
也可以显式用RunnableLambda包装返回空字符串的逻辑:
from langchain_core.runnables import RunnableLambda full_chain = { "topic": classification_chain, "input": lambda x: x["input"], "chat_history": RunnableLambda(lambda x: '') } | RunnableLambda(route)
以上三种方法都能让chat_history的取值逻辑符合LangChain Runnable的类型要求,解决报错问题。
内容的提问来源于stack exchange,提问作者garg10may
相关产品推荐
相关产品推荐

