【前端学习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 字典,而非直接传关键字参数;
相关推荐
工控丫丫25 分钟前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
jerrywus1 小时前
我用 GPT-6.1-sol 做了台会讲解的 3D 售货机:60 罐饮料,一口没喝上
前端·agent·claude
孟陬2 小时前
Foobar 技术周刊#159:当看不懂代码时,如何高效排障调试。脏页陷阱:一条只读查询,写入数 TB 数据。推测解码:大模型加速利器
前端·人工智能·后端
Zhao-Jichao2 小时前
AI Prompting for Everyone 课程笔记 - P17 图像生成 Imaging Generation
前端
Highcharts.js3 小时前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化
螺丝钉tina3 小时前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript
小天源4 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
Highcharts.js6 小时前
React 中原生支持使用 JSX 组件配置自定义表格 Highcharts Grid
前端·javascript·react.js·前端框架·jsx·highcharts·自定义表格
薛定谔的猫-菜鸟程序员6 小时前
Electron开发超详细教程(从入门到放弃)
前端·javascript·electron
最强小杰7 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai