核心作用
通过 模板字符串 + 变量 的方式规范化生成提示词,避免手动拼接字符串导致的语法错误或格式混乱。
创建实例
类直接创建
python
from langchain_core.prompts import PromptTemplate
prompt_template = PromptTemplate(
# template:含变量占位符的模板字符串
template="将【{source_content}】翻译成{target_language}",
# partial_variables(可选):提前固定部分变量值
partial_variables={"target_language": "英文"}
)
2. from_template 快捷创建
自动解析模板字符串中的变量,无需手动指定 input_variables,更简洁高效。
python
from langchain_core.prompts import PromptTemplate
# 自动解析变量:source_content、target_language
prompt_template = PromptTemplate.from_template(
"将【{source_content}】翻译成{target_language}"
)
# 后续补充预填充变量(需重新赋值,因 partial 返回新实例)
prompt_template = prompt_template.partial(target_language="英文")
实例属性
template
核心属性,含 {变量名} 占位符的模板字符串,定义提示词的基础结构。
input_variables
待填充变量的名称列表(如 ["source_content", "target_language"]),未手动指定时,框架会自动解析 template 中的变量生成列表。
partial_variables
预填充变量的键值对字典,用于提前固定部分通用/全局变量(如固定翻译目标语言),减少后续重复填充操作。
input_types
指定待填充变量的值类型(如 {"count": int}),用于校验输入变量的类型合法性,默认所有变量均为字符串类型。
实例方法
partial
python
(method) def partial(**kwargs: str | (() -> str)) -> BasePromptTemplate
功能
为实例设置或补充 partial_variables(预填充变量),实现部分变量的固定。
参数
**kwargs:键值对参数,键为变量名,值为变量值(支持字符串或无参函数返回字符串)
返回值
返回 BasePromptTemplate 实例(PromptTemplate 的父类),原实例不会被修改,需重新赋值才能使用新的预填充配置。
示例
python
from langchain_core.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template("我是{name}")
# 设置预填充变量 name,接收返回的新实例
prompt_template = prompt_template.partial(name="张三")
format
python
def format(**kwargs: Any) -> str
功能
填充所有未被 partial() 预填充的变量,生成可直接使用的最终提示词字符串。
参数
**kwargs:键值对参数,填充template中未被预填充的剩余变量
返回值
字符串类型的最终提示词。
示例
python
from langchain_core.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template("我是{name}")
# 填充变量 name,生成提示词字符串
prompt_str = prompt_template.format(name="张三")
# 输出结果
print(prompt_str) # 输出:我是张三
format_prompt
python
def format_prompt(**kwargs: Any) -> PromptValue
功能
填充变量后,生成 LangChain 模型可直接接收的 PromptValue 对象(无需手动转换字符串)。
参数
**kwargs:键值对参数,填充未被预填充的剩余变量
返回值
PromptValue 对象(StringPromptValue 是其具体实现类),可直接传入 LangChain 模型的 invoke() 等方法。
示例
python
from langchain_core.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template("我是{name}")
# 生成 PromptValue 对象
prompt = prompt_template.format_prompt(name="张三")
invoke
python
def invoke(
input: dict,
config: RunnableConfig | None = None,
**kwargs: Any
) -> PromptValue
功能
适配 LangChain 链式调用(Runnable 接口)的规范方法,生成 PromptValue 对象,主要用于流水线式的模型调用流程。
参数
-
input:字典类型,键为变量名,值为变量值(核心传参方式); -
config:运行时配置(如超时时间、日志等级等); -
**kwargs:额外的键值对变量(可补充input中未包含的变量)。
返回值
PromptValue 对象,可直接用于链式调用中的模型输入。
示例
python
from langchain_core.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template("我是{name}")
# 正确传参:input 为字典
prompt = prompt_template.invoke(input={"name": "张三"})
stream
与 invoke() 功能一致,均用于链式调用,区别在于:stream() 为流式返回 PromptValue 相关结果(适配流式模型调用场景),invoke() 为同步一次性返回结果。
关键注意事项
partial()方法不修改原实例,必须将返回值重新赋值,才能生效新的预填充配置;- 调用
format()/format_prompt()时,必须填充所有未被预填充的变量,否则会抛出变量缺失异常; invoke()方法的核心传参是input字典,而非直接传关键字参数;