Bootstrap

4.langchain中的prompt模板 (partially format prompt templates)

本教程将介绍如何使用 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

解释:

  1. 使用 from_template 方法创建一个模板 "{foo}{bar}"
  2. 使用 partial 方法部分填充模板,将 foo 的值设为 "foo"
  3. 使用 format 方法完全填充模板,将 bar 的值设为 "baz",并打印结果。

示例 2:直接创建模板并指定变量

# 创建一个模板并指定输入变量和部分变量
prompt = PromptTemplate(
    template="{foo}{bar}", input_variables=["bar"], partial_variables={"foo": "foo"}
)

# 完全填充模板并打印结果
print(prompt.format(bar="baz"))

输出:

foobaz

解释:

  1. 直接创建 PromptTemplate 对象,指定模板 "{foo}{bar}"
  2. 指定 input_variables["bar"],表示 bar 是需要后续填充的变量。
  3. 指定 partial_variables{"foo": "foo"},表示 foo 已经被部分填充。
  4. 使用 format 方法完全填充模板,将 bar 的值设为 "baz",并打印结果。

高级用法

示例 3:使用函数动态生成部分变量

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 11/21/2024, 20:00:12

解释:

  1. 定义一个 _get_datetime 函数,用于获取当前时间并格式化。
  2. 创建一个模板 Tell me a {adjective} joke about the day {date}
  3. 指定 input_variables["adjective", "date"],表示这两个变量需要后续填充。
  4. 使用 partial 方法部分填充模板,将 date 的值设为 _get_datetime 函数的返回值。
  5. 使用 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

解释:

  1. 创建一个模板 Tell me a {adjective} joke about the day {date}
  2. 指定 input_variables["adjective"],表示 adjective 是需要后续填充的变量。
  3. 指定 partial_variables{"date": _get_datetime},表示 date 已经被部分填充为 _get_datetime 函数的返回值。
  4. 使用 format 方法完全填充模板,将 adjective 的值设为 "funny",并打印结果。

参考链接:https://python.langchain.com/v0.2/docs/how_to/few_shot_examples/
希望这个教程对你有所帮助!如果有任何问题,欢迎提问。

;