You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LCEL链构建报TypeError:如何将LangChain文档加入LCEL链?

LCEL链TypeError错误修复方案

错误原因

触发TypeError: Expected a Runnable, callable or dict.Instead got an unsupported type: <class 'str'>的核心原因是:LCEL链的每个组件必须是Runnable、可调用对象或字典,而你在拼接文档内容时直接返回了字符串,这个字符串无法被LCEL的执行流程识别。

修复步骤及完整代码

1. 关键修复:用RunnableLambda包装文档拼接逻辑

将文档拼接函数通过RunnableLambda包装,使其成为符合LCEL规范的Runnable组件,这样就能无缝接入链的执行序列中。

2. 完整可运行代码示例

from langchain.retrievers import BM25Retriever, TFIDFRetriever
from langchain.retrievers.rrf import RRFRetriever
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnableLambda, RunnablePassthrough

# 假设已准备好文档集合docs
docs = [
    # 这里替换为你的实际文档对象
]

# 初始化多个检索器
bm25_retriever = BM25Retriever.from_documents(docs)
tfidf_retriever = TFIDFRetriever.from_documents(docs)

# 初始化RRF重排检索器
rrf_retriever = RRFRetriever(retrievers=[bm25_retriever, tfidf_retriever])

# 定义文档格式化函数:将RRF返回的(文档,分数)元组列表拼接为字符串
def format_retrieved_docs(result_context):
    return "\n\n".join([doc.page_content for doc, _ in result_context])

# 用RunnableLambda包装函数,转为LCEL兼容的Runnable
formatter = RunnableLambda(format_retrieved_docs)

# 构建Prompt
prompt = ChatPromptTemplate.from_template("""
根据以下上下文信息回答用户问题:
{context}

用户问题:{question}
""")

# 初始化LLM和输出解析器
llm = ChatOpenAI(model="gpt-3.5-turbo")
output_parser = StrOutputParser()

# 构建完整LCEL链
chain = (
    {
        "question": RunnablePassthrough(),  # 透传原始查询
        "context": rrf_retriever | formatter  # RRF重排后传递给格式化器
    }
    | prompt
    | llm
    | output_parser
)

# 调用链测试
response = chain.invoke("请根据上下文回答你的问题")
print(response)

3. 核心修复点说明

  • RunnableLambda包装:把返回字符串的format_retrieved_docs函数转为Runnable,解决类型不兼容问题
  • RunnablePassthrough:透传原始查询参数,确保Prompt能正确获取question字段
  • 链式调用逻辑:通过|运算符串联组件,保证每个环节的输出都能正确传递给下一个组件

内容的提问来源于stack exchange,提问作者Christian01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:43:15