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

LangChain调用run方法报错:不支持多输入键问题求助

解决LangChain LLMChain.run()多输入键的ValueError问题

当你的LLMChain绑定了包含多个输入变量的PromptTemplate时,直接调用run()方法会触发ValueError: run() supports only one input key, got ['question', 'documents'],这是因为run()方法设计为仅支持单输入变量的场景。

解决方案

你可以通过以下两种方式替代run()方法来处理多输入变量的情况:

1. 使用call()方法传入字典参数

call()方法接受包含所有输入键值对的字典作为参数,返回包含输出结果的字典:

# 示例调用
result = chain.call({
    "question": "你的问题内容",
    "documents": "你的文档内容"
})
# 提取输出文本
print(result["text"])

2. 使用predict()方法直接传入命名参数

predict()方法支持直接传入与Prompt变量名对应的命名参数,返回纯输出文本:

# 示例调用
result = chain.predict(
    question="你的问题内容",
    documents="你的文档内容"
)
print(result)

完整示例代码

下面是修正前后的代码对比:

错误代码(触发报错)

from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.chains import LLMChain

prompt = PromptTemplate(
    input_variables=["question", "documents"],
    template="根据以下文档回答问题:\n{documents}\n问题:{question}\n答案:"
)
llm = OpenAI(temperature=0)
chain = LLMChain(llm=llm, prompt=prompt)

# 错误调用:run()不支持多输入键
chain.run("如何优化LLM应用?", "LLM应用优化可从提示工程、模型选择等方面入手...")

修正后的代码(使用call方法)

from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.chains import LLMChain

prompt = PromptTemplate(
    input_variables=["question", "documents"],
    template="根据以下文档回答问题:\n{documents}\n问题:{question}\n答案:"
)
llm = OpenAI(temperature=0)
chain = LLMChain(llm=llm, prompt=prompt)

# 正确调用
result = chain.call({
    "question": "如何优化LLM应用?",
    "documents": "LLM应用优化可从提示工程、模型选择等方面入手..."
})
print(result["text"])

补充说明

run()方法是predict()的简化封装,仅适用于PromptTemplate只有单个输入变量的场景。当存在多个输入变量时,必须使用call()或predict()方法来传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 07:30:12