【前端学习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 字典,而非直接传关键字参数;
相关推荐
cindershade1 分钟前
用 Web Workers 优化前端重计算任务:避免主线程卡顿的实战方案
前端
爱丶不疚1 分钟前
搞不清 CommonJS 与 ESM,你是否也有这些疑问🤔
前端·node.js
YIAN6 分钟前
http无状态?State来展示!从基础路由到鉴权守卫,吃透 SPA 前端路由核心
前端·react.js
__zRainy__19 分钟前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript
码云骑士24 分钟前
104-实战论文搜索引擎-ArXiv爬取-Milvus存储-RAG问答-Gradio前端
前端·python·搜索引擎·milvus
sunly_35 分钟前
TypeScript总结:15、类型速查
前端·javascript·typescript
Brown.alexis36 分钟前
es6知识点3-自备使用
前端·javascript·es6
2601_9539880738 分钟前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·后端·物联网·tcp/ip·数学建模·前端框架
天空之城--43 分钟前
Claude Code 高效开发 Web 2D/3D 完全指南:心法、自定义 Skill 体系与社区技能包实战
前端·3d
IT_陈寒1 小时前
SpringBoot自动配置坑了我三天,原来漏了这个注解
前端·人工智能·后端