【前端学习AI】PromptTemplate的使用

核心作用

通过 模板字符串 + 变量 的方式规范化生成提示词,避免手动拼接字符串导致的语法错误或格式混乱。

创建实例

类直接创建

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 字典,而非直接传关键字参数;
相关推荐
狗头大军之江苏分军2 小时前
Node.js 真香,但每次部署都想砸电脑
前端·javascript·后端
Shi_haoliu2 小时前
inno setup6.6.1实例,制作安装包,创建共享文件夹,写入注册表(提供给excel加载项,此文章解释iss文件)
前端·vue.js·windows·excel
MediaTea2 小时前
Python:实例 __dict__ 详解
java·linux·前端·数据库·python
狗头大军之江苏分军2 小时前
又是一个周末加班夜,前端的我只想哭…
前端
个案命题2 小时前
鸿蒙ArkUI组件通信专家:@Param装饰器的奇幻漂流
java·服务器·前端
Data_agent2 小时前
CNFANS模式淘宝1688代购系统搭建指南
大数据·开发语言·前端·javascript
澄江静如练_3 小时前
表单输入绑定
服务器·前端·javascript
猩球中的木子3 小时前
vue-plugin-hiprint打印高度不够,提示:没有足够空间,显示下方内容,问题处理方案及实操
前端·vue.js
狗头大军之江苏分军3 小时前
Node.js 原生功能越来越强,我们是不是被 npm 玩坏了?
前端·javascript·架构