【前端学习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 字典,而非直接传关键字参数;
相关推荐
ct97813 分钟前
React 状态管理方案深度对比
开发语言·前端·react
胡志辉的博客30 分钟前
深入浅出理解浏览器事件循环:从一道输出题讲到 Chrome 源码
前端·javascript·chrome·chromium·event loop
代码不加糖38 分钟前
js中不会冒泡的事件有哪些?
前端·javascript·vue.js
懂懂tty1 小时前
Vue2与Vue3之间API差异
前端·javascript·vue.js
AI焦点1 小时前
跨越协议鸿沟:Tool Use状态机从Anthropic到OpenAI兼容体系的适配要点
前端·人工智能
Dxy12393102161 小时前
Python线程锁:为什么多线程会“打架“,以及怎么解决
开发语言·前端·python
海兰2 小时前
【web应用】Excel 项目数据自动化分析系统(AI 驱动分析)详细设计与部署指南(附源代码)
前端·人工智能·自动化·excel
2501_940041742 小时前
技术分享:高质量全栈开发提示词设计实践 —— 覆盖简单到复杂
前端·prompt
IT_陈寒2 小时前
Python的os.path.join居然能这么坑?
前端·人工智能·后端
艳阳天_.2 小时前
星瀚弹框页面实现
java·前端·python