LangChain中的Prompt模板如何使用?

LangChain中的Prompt模板如何使用?

  • [1 关于Prompt Template](#1 关于Prompt Template)
  • [2 主要用法思路](#2 主要用法思路)
  • [3 一个示例](#3 一个示例)
  • [4 如何生成带默认值的模版?](#4 如何生成带默认值的模版?)
  • [5 如何从文件加载模型](#5 如何从文件加载模型)
  • [6 如何应用到聊天模版](#6 如何应用到聊天模版)
  • [7 使用总结](#7 使用总结)

今天在做测试用例设计的时候,代码中用到了LangChain中的Prompt模板;

所以把这个功能的使用简单整理下,便于后续的使用。

1 关于Prompt Template

  • 在 LangChain 中,Prompt 模板(Prompt Template)是管理提示词的重要工具;
  • 可以动态生成提示词,避免重复编写相似的提示文本。

2 主要用法思路

  • 导入必要的类:从langchain.prompts导入PromptTemplate;
  • 定义模板字符串:包含需要动态替换的变量(用{变量名}表示);
  • 创建 PromptTemplate 实例:指定模板和变量列表
  • 使用模板生成提示词:通过format()方法传入变量值。

3 一个示例

  • 示例代码如下:
python 复制代码
# 1. 导入PromptTemplate
from langchain.prompts import PromptTemplate

# 2. 定义模板字符串,包含变量{product}
template = "你是一名{product}工程师,请帮我设计{feature}的单元测试用例"

# 3. 创建PromptTemplate实例,指定模板和变量列表
prompt = PromptTemplate(
    input_variables=["product", "feature"],  # 变量名列表
    template=template  # 模板字符串
)

# 4. 格式化模板,传入具体值生成提示词
formatted_prompt = prompt.format(product="资深测试", feature="条件覆盖")

print(formatted_prompt)
  • 输出如下:
python 复制代码
你是一名资深测试工程师,请帮我设计条件覆盖的单元测试用例

4 如何生成带默认值的模版?

  • 如果某些变量有默认值,可以使用PartialPromptTemplate;
  • 但是PartialPromptTemplate已经被移除或重构了;
  • LangChain 的 API 在不断迭代,一些早期版本的类会被调整;
  • 目前最新的使用方法是使用prompt.partial()方法来实现部分变量填充的功能:
python 复制代码
from langchain.prompts import PromptTemplate

template = "你是一名{role}工程师,请帮我设计{feature}用例,重点突出{style}的设计"

# 创建完整PromptTemplate
prompt = PromptTemplate(
    input_variables=["role", "feature", "style"],
    template=template
)

# 使用partial()方法设置默认值,生成部分填充的模板
partial_prompt = prompt.partial(style="条件覆盖")

# 后续只需传入剩余变量
full_prompt = partial_prompt.format(role="资深测试", feature="单元测试")
print(full_prompt)
  • 输出如下:
python 复制代码
你是一名资深测试工程师,请帮我设计单元测试用例,重点突出条件覆盖的设计

5 如何从文件加载模型

  • 对于复杂的提示词,可以将模板内容保存到文件中:
python 复制代码
# 假设template.txt文件内容为:"分析{test}的主要优势和劣势。"
with open("template.txt", "r") as f:
    template = f.read()

prompt = PromptTemplate(
    input_variables=["test"],
    template=template
)

print(prompt.format(topic="软件测试"))

6 如何应用到聊天模版

  • 可以使用ChatPromptTemplate:
python 复制代码
from langchain.prompts import ChatPromptTemplate
from langchain.schema import HumanMessage, SystemMessage

# 定义系统消息和人类消息模板
system_template = "你是一个{role},擅长{skill}。"
human_template = "请帮我{task}。"

chat_prompt = ChatPromptTemplate.from_messages([
    ("system", system_template),
    ("human", human_template)
])

# 格式化生成消息列表
messages = chat_prompt.format_messages(
    role="资深软件测试专家",
    skill="软件测试架构设计",
    task="设计一个高并发场景的用例设计"
)

# 输出的messages可直接传入聊天模型
for msg in messages:
    print(f"{msg.type}: {msg.content}")
  • 输出:
python 复制代码
system: 你是一个资深软件测试专家,擅长软件测试架构设计。
human: 请帮我设计一个高并发场景的用例设计。

7 使用总结

  • Prompt 模板通过变量替换实现提示词的动态生成,提高复用性;
  • PromptTemplate适用于普通文本提示,ChatPromptTemplate适用于聊天模型;
  • 可以通过partial_variables设置默认值,或从文件加载复杂模板;
  • 使用模板可以让提示词管理更清晰,尤其在需要多次生成相似提示时非常有用。
相关推荐
遇见火星26 分钟前
Aiops探索:基于Ansible的Dify版本运维智能体落地思路
运维·服务器·ansible
TG_yunshuguoji2 小时前
亚马逊云渠道商:如何通过配置自动替换构建故障自愈的云架构?
运维·服务器·架构·云计算·aws
期待着20132 小时前
StarRocks 集群安装部署文档
linux·服务器
2301_772093563 小时前
高并发webserver_interview
运维·服务器·数据库·后端·网络协议·mysql·wireshark
TG:@yunlaoda360 云老大3 小时前
阿里云国际站GPU:怎么通过通过VNC连接实例?
服务器·阿里云·云计算
liulilittle5 小时前
LwIP协议栈MPA多进程架构
服务器·开发语言·网络·c++·架构·lwip·通信
观山岳五楼5 小时前
unbuntu系统配置IPV6的三种模式
linux·服务器·ip·1024程序员节
运维行者_5 小时前
AWS云服务故障复盘——从故障中汲取的 IT 运维经验
大数据·linux·运维·服务器·人工智能·云计算·aws
无聊的小坏坏6 小时前
从零开始:C++ 多进程 TCP 服务器实战(续篇)
服务器·c++·tcp/ip
命运之光6 小时前
【快速解决】Linux服务器安装Java17运行环境
linux·运维·服务器