langchain 提示模版 PromptTemplate

1. 引入

from langchain.prompts import PromptTemplate

2. 定义模版

1. PromptTemplate 直接实例化

python 复制代码
PromptTemplate(
	# 字符串类型。使用{}作为占位符
	template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。", 
	 # 数组。值必须是占位符中的字符串,表示在format时为必填
	 # 经过测试,该属性可以不写,只要不在partial_variables中出现的值都会自动在这里
	input_variables=["input_language"],
	# 字典类型。可选。作用:预先固定模版的值,相当于一个默认值,不需要format时输入,如果format中有输入则覆盖此值
	partial_variables={"output_language":"德语"}
)
# 结果
# PromptTemplate(input_variables=['input_language'], input_types={}, partial_variables={'output_language': '德语'}, template='你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。')
  • 不使用input_variables和partial_variables的示例1
python 复制代码
PromptTemplate(
	template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。"
	)
# 结果,可以看到自动将模版加入了input_variables,并且partial_variables没有值
'''
PromptTemplate(
	input_variables=['input_language', 'output_language'], 
	input_types={}, 
	partial_variables={}, 
	template='你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。')
'''
  • 不使用input_variables的示例2
python 复制代码
PromptTemplate(
	template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。",
	partial_variables={"output_language":"德语"}
)
# 结果:input_variables的值是排除了partial_variables的值
'''
PromptTemplate(
	input_variables=['input_language'], 
	input_types={}, 
	partial_variables={'output_language': '德语'}, 
	template='你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。')
'''

2. from_template

和上面的PromptTemplate没有区别

python 复制代码
# 定义模板和输入变量
template_str = (
    "你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。"
    "请翻译以下内容:'{text}'"
)
prompt_template = PromptTemplate.from_template(
	# 无需手动写 input_variables,方法会自动提取模板中所有 {} 包裹的变量名
	template=template_str, 	
)
# 上面的方法等同于
prompt_template = PromptTemplate(
	template=template_str,
	input_variables=["input_language","output_language","text"]
)

2. 模版赋值

python 复制代码
prompt1 = PromptTemplate(template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。",partial_variables={"output_language":"德语"})

# 使用partial_variables固定值
prompt1.format(input_language="日语")
# 结果:'你是一个专业的翻译助手,擅长将日语文本准确翻译成德语。'

# 不使用partial_variables固定值
prompt1.format(input_language="英语",output_language="法语")
# 结果:'你是一个专业的翻译助手,擅长将英语文本准确翻译成法语。'
python 复制代码
# from_template构建的模版和上面的结果一样
prompt2 = PromptTemplate.from_template(template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。",partial_variables={"output_language":"德语"})

prompt2.format(input_language="英语",output_language="法语")
# '你是一个专业的翻译助手,擅长将英语文本准确翻译成法语。'
prompt2.format(input_language="日语")
# '你是一个专业的翻译助手,擅长将日语文本准确翻译成德语。'

3. invoke赋值

  • 注意参数为字典类型
python 复制代码
prompt1 = PromptTemplate(template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。",partial_variables={"output_language":"德语"})

# 使用partial_variables固定值
prompt1.invoke({"input_language":"英语"})
# 结果:StringPromptValue(text='你是一个专业的翻译助手,擅长将英语文本准确翻译成德语。')

# 不使用partial_variables固定值
prompt1.invoke({"input_language":"英语","output_language":"法语"})
# 结果:StringPromptValue(text='你是一个专业的翻译助手,擅长将英语文本准确翻译成法语。')

4. 部分赋值PromptTemplate.partial

不用一次性将模版所有的值赋值,从结果可以看出相当于给了partial_variables的值

python 复制代码
prompt3 = PromptTemplate.from_template(template="你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。")
prompt3.partial(output_language="德语")
# 结果 
'''
PromptTemplate(
	input_variables=['input_language'], 
	input_types={}, 
	partial_variables={'output_language': '德语'}, 
	template='你是一个专业的翻译助手,擅长将{input_language}文本准确翻译成{output_language}。')
'''
相关推荐
第九序言T2 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路2 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003962 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_2 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
quantdash_cc3 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl3 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
云和数据.ChenGuang4 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真4 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
wflynn6 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github
2601_967980116 小时前
python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)
python·scapy·pcap·协议分析·网络数据包