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

LangChain MultiPromptChain路由输入报错:缺失query输入键问题

问题修复方案

核心原因

RetrievalQA链默认要求输入键为query,但你的CustomMultiPromptChain在路由时直接将原始输入的input键传递给目标链,导致目标链找不到必填的query参数,触发报错。

修复方法(二选一即可)

方法1:修改RetrievalQA的输入键为input

在创建RetrievalQA实例时,显式指定input_key参数为input,让目标链直接接受input作为输入键,无需额外转换:

destination_chains = {}
for p_info in prompt_infos:
    name = p_info["name"]
    chain_kwargs = p_info["kwargs"]
    # 添加input_key参数,将输入键设置为input
    chain = RetrievalQA.from_chain_type(
        llm=ChatOpenAI(model="gpt-4"),
        chain_type="stuff",
        retriever=retriever,
        chain_type_kwargs=chain_kwargs,
        input_key="input"
    )
    destination_chains[name] = chain

方法2:在CustomMultiPromptChain中添加输入键转换逻辑

重写CustomMultiPromptChain的_call方法,将输入的input键转换为目标链需要的query键,再传递给目标链:

from typing import Dict, Any, Optional
from langchain.callbacks.manager import CallbackManagerForChainRun

class CustomMultiPromptChain(MultiRouteChain):
    destination_chains: Mapping[str, Chain]
    """Map of name to candidate chains that inputs can be routed to. Not restricted to LLM"""

    def _call(
        self,
        inputs: Dict[str, Any],
        run_manager: Optional[CallbackManagerForChainRun] = None,
    ) -> Dict[str, Any]:
        # 执行路由逻辑,获取目标链名称
        route_result = self.router_chain.run(
            inputs,
            callbacks=run_manager.get_child() if run_manager else None
        )
        # 选择对应的目标链(无匹配则用默认链)
        destination_chain = self.destination_chains.get(route_result, self.default_chain)
        # 将input键转换为query键,适配RetrievalQA的输入要求
        adjusted_inputs = {"query": inputs["input"]}
        # 运行目标链并返回结果
        return destination_chain(
            adjusted_inputs,
            callbacks=run_manager.get_child() if run_manager else None
        )

验证说明

两种方法都能解决输入键不匹配的问题:

  • 方法1更直接,通过修改目标链的输入要求适配当前路由逻辑;
  • 方法2更灵活,适合无法修改目标链配置的场景,在路由层完成键转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:26:23