本教程将介绍如何使用 LangChain 的 PromptTemplate
类来创建和管理模板化的提示(prompt)。通过几个示例,我们将展示如何使用模板、部分变量和输入变量来生成动态的提示。
基本用法
示例 1:使用 from_template
方法
from langchain_core.prompts import PromptTemplate# 创建一个模板
prompt = PromptTemplate.from_template("{foo}{bar}")# 部分填充模板
partial_prompt = prompt.partial(foo="foo")# 完全填充模板并打印结果
print(partial_prompt.format(bar="baz"))
输出:
foobaz
解释:
- 使用
from_template
方法创建一个模板"{foo}{bar}"
。 - 使用
partial
方法部分填充模板,将foo
的值设为"foo"
。 - 使用
format
方法完全填充模板,将bar
的值设为"baz"
,并打印结果。
示例 2:直接创建模板并指定变量
# 创建一个模板并指定输入变量和部分变量
prompt = PromptTemplate(template="{foo}{bar}", input_variables=["bar"], partial_variables={"foo": "foo"}
)# 完全填充模板并打印结果
print(prompt.format(bar="baz"))
输出:
foobaz
解释:
- 直接创建
PromptTemplate
对象,指定模板"{foo}{bar}"
。 - 指定
input_variables
为["bar"]
,表示bar
是需要后续填充的变量。 - 指定
partial_variables
为{"foo": "foo"}
,表示foo
已经被部分填充。 - 使用
format
方法完全填充模板,将bar
的值设为"baz"
,并打印结果。
高级用法
示例 3:使用函数动态生成部分变量
from datetime import datetimedef _get_datetime():now = datetime.now()return now.strftime("%m/%d/%Y, %H:%M:%S")# 创建一个模板
prompt = PromptTemplate(template="Tell me a {adjective} joke about the day {date}",input_variables=["adjective", "date"],
)# 部分填充模板
partial_prompt = prompt.partial(date=_get_datetime)# 完全填充模板并打印结果
print(partial_prompt.format(adjective="funny"))
输出:
Tell me a funny joke about the day 11/21/2024, 20:00:12
解释:
- 定义一个
_get_datetime
函数,用于获取当前时间并格式化。 - 创建一个模板
Tell me a {adjective} joke about the day {date}
。 - 指定
input_variables
为["adjective", "date"]
,表示这两个变量需要后续填充。 - 使用
partial
方法部分填充模板,将date
的值设为_get_datetime
函数的返回值。 - 使用
format
方法完全填充模板,将adjective
的值设为"funny"
,并打印结果。
示例 4:在创建模板时指定部分变量
# 创建一个模板并指定输入变量和部分变量
prompt = PromptTemplate(template="Tell me a {adjective} joke about the day {date}",input_variables=["adjective"],partial_variables={"date": _get_datetime},
)# 完全填充模板并打印结果
print(prompt.format(adjective="funny"))
输出:
Tell me a funny joke about the day 11/21/2024, 20:00:20
解释:
- 创建一个模板
Tell me a {adjective} joke about the day {date}
。 - 指定
input_variables
为["adjective"]
,表示adjective
是需要后续填充的变量。 - 指定
partial_variables
为{"date": _get_datetime}
,表示date
已经被部分填充为_get_datetime
函数的返回值。 - 使用
format
方法完全填充模板,将adjective
的值设为"funny"
,并打印结果。
参考链接:https://python.langchain.com/v0.2/docs/how_to/few_shot_examples/
希望这个教程对你有所帮助!如果有任何问题,欢迎提问。