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

如何在LangChain的chain.invoke()中传递含schema的多个参数

解决LangChain链调用时传递多参数(含schema)的问题

要在调用chain.invoke()时传入schema变量,你需要调整链的结构,让它能接收包含多个参数的输入(而非仅单一问题文本),具体实现如下:

1. 调整链的输入映射逻辑

把原来硬编码的schema改为从输入字典中动态读取,同时保留question和context的处理逻辑:

from langchain_core.runnables import RunnablePassthrough

chain = (
    RunnablePassthrough.assign(
        # 基于输入的question获取并处理上下文
        context=lambda x: vector_retriever_chain.invoke(x["question"]) | extract_relevant_docs
    )
    | prompt
)

RunnablePassthrough.assign()会自动保留输入中的所有键(比如schema和question),同时新增处理后的context键,完美匹配Prompt需要的三个变量。

如果偏好更显式的映射写法,也可以用字典结构定义:

chain = (
    {
     "schema": lambda x: x["schema"],
     "context": lambda x: vector_retriever_chain.invoke(x["question"]) | extract_relevant_docs,
     "question": lambda x: x["question"]
    }
    | prompt
)

2. 调用时传入包含多参数的字典

修改invoke的调用方式,传入一个包含schema和question的字典:

chain.invoke({
    "schema": "你的数据库Schema具体内容",
    "question": "my question?"
})

核心说明

  • 原链中schema直接绑定外部变量的写法,会导致它无法随调用动态变更;改为从输入字典提取后,每次调用都可以传入不同的schema值。
  • context的处理逻辑需要关联输入中的question,确保每次调用都能基于当前问题检索对应上下文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:04:55