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

Langchain中PromptTemplate字典类型输入的问题及报错解决咨询

解决Langchain中字典类型输入的处理问题

错误原因:Langchain的PromptTemplate默认会将单大括号{}包裹的内容识别为独立输入变量,而非从字典中取值的表达式。你写的{data['Gender']}会被系统当成一个名为data['Gender']的独立输入变量,因此提示缺少这些不存在的键。

以下是两种可行的解决方法:

方法一:使用Jinja2模板语法(推荐)

Langchain的PromptTemplate支持Jinja2语法,用双大括号{{ }}包裹字典取值表达式,系统会正确解析并从传入的data字典中提取对应键的值。

修改后的代码示例:

from langchain.prompts.prompt import PromptTemplate
from langchain.llms import GooglePalm
from langchain.chains import LLMChain

prompt_template_advice = PromptTemplate(
    input_types={"data": dict},
    input_variables=["data"],
    # 用双大括号包裹字典取值逻辑
    template="...{{ data['Gender'] }}...{{ data['Age'] }}...{{ data['output'] }} (etc)"
)

advisor = GooglePalm(temperature=0.9)
advice_chain = LLMChain(verbose=True, llm=advisor, prompt=prompt_template_advice, output_key="main_advice")
advice_chain.run(data)

方法二:将字典键作为独立输入变量

如果不想使用Jinja2语法,可以把字典的所有键都加入input_variables列表,调用run方法时用解包运算符**传入字典内容:

from langchain.prompts.prompt import PromptTemplate
from langchain.llms import GooglePalm
from langchain.chains import LLMChain

# 提取目标字典的所有键作为输入变量
input_keys = list(data.keys())
prompt_template_advice = PromptTemplate(
    input_variables=input_keys,
    # 直接使用字典键名作为模板变量
    template="...{Gender}...{Age}...{output} (etc)"
)

advisor = GooglePalm(temperature=0.9)
advice_chain = LLMChain(verbose=True, llm=advisor, prompt=prompt_template_advice, output_key="main_advice")
advice_chain.run(**data)  # 用**解包字典传入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:03:19