【LangChain系列 10】Prompt模版——Message的partial用法

原文地址:【LangChain系列 10】Prompt模版——Message的partial用法

本文速读:

  • 字符串partial

  • 方法partial

partial是什么意思呢?简单来说:将一个prompt模版传入部分变量值而生成一个新的prompt模版,当使用新的prompt模版时,就只需要传入剩下变量的值了。

LangChain提供了两种方式实现"partial":

  • 通过字符串实现 partial

  • 通过返回字符串的 方法 实现 partial

01 字符串 partial


顾名思义,字符串partial的意思:将字符串传入给prompt模版而生成一个新的prompt模版。一个常见的场景就是有时候我们一开始只能获取到部分变量的值,假设你有一个prompt需要两个变量:foo和bar,但是你在链中一开始只能获取到foo变量的值,bar变量的值要在后面才得获取到,此时你不得不等到两个值都能获取到的时候才能传给prompt模版,那么partial就是解决这个问题,你可以先将foo的值传入得到一个新的、只包含一个bar变量的prompt模版,等你能获取到bar的值时再将这个值传给新的prompt模版。

代码如下所示:

from langchain.prompts import PromptTemplate

prompt = PromptTemplate(template="{foo}{bar}", input_variables=["foo", "bar"])
partial_prompt = prompt.partial(foo="foo");
print(partial_prompt.format(bar="baz"))

当然你也可以初始化partial变量,如下所示:​​​​​​​

prompt = PromptTemplate(template="{foo}{bar}", input_variables=["bar"], partial_variables={"foo": "foo"})
print(prompt.format(bar="baz"))

02 方法 partial


另一种partial化的方式是通过方法(function),即传入一个返回值为字符串的方法。这种方式的使用场景就是:假设你获取某个变量的值是一种通用、公共的方式,这样你就可以把这些通用、公共的步骤封装成一个方法,然后将这个方法传给prompt模版。比如,你需要将当前时间传给prompt模版,此时你可以将获取当前时间封装成一个方法,然后把方法传给prompt模版即可。​​​​​​​


from datetime import datetime

def _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 02/27/2023, 22:15:16

同样,你也可以初始化partial变量,如下所示:​​​​​​​

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 02/27/2023, 22:15:16

本文小结

本文主要介绍了两种方式实现prompt模版的partial:字符串partial化和方法partial化。

更多最新文章,请关注公众号:大白爱爬山

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值