跳至主要内容

如何部分格式化提示模板

先决条件

本指南假设您熟悉以下概念

就像将参数部分绑定到函数一样,对提示模板进行“部分”绑定是有意义的 - 例如,传递一部分必需的值,以便创建一个新的提示模板,该模板仅期望剩余的子集值。

LangChain 以两种方式支持这一点

  1. 使用字符串进行部分格式化。
  2. 使用返回字符串值的函数进行部分格式化。

在下面的示例中,我们将介绍这两种用例的动机,以及如何在 LangChain 中实现它们。

使用字符串进行部分绑定

想要对提示模板进行部分绑定的一个常见用例是,如果您在获取其他变量之前,先获取提示中的一些变量。例如,假设您有一个提示模板,需要两个变量 foobaz。如果您在链中较早获得 foo 值,但在稍后获得 baz 值,则将这两个变量一直传递到链中会很不方便。相反,您可以使用 foo 值对提示模板进行部分绑定,然后将部分绑定的提示模板传递下去,只需使用它即可。以下是如何执行此操作的示例

import { PromptTemplate } from "langchain/prompts";

const prompt = new PromptTemplate({
template: "{foo}{bar}",
inputVariables: ["foo", "bar"],
});

const partialPrompt = await prompt.partial({
foo: "foo",
});

const formattedPrompt = await partialPrompt.format({
bar: "baz",
});

console.log(formattedPrompt);

// foobaz

您也可以直接使用部分绑定的变量来初始化提示。

const prompt = new PromptTemplate({
template: "{foo}{bar}",
inputVariables: ["bar"],
partialVariables: {
foo: "foo",
},
});

const formattedPrompt = await prompt.format({
bar: "baz",
});

console.log(formattedPrompt);

// foobaz

使用函数进行部分绑定

您也可以使用函数进行部分绑定。这样做的一种用例是,如果您有一个变量,您知道始终想以一种常见的方式获取它。一个很好的例子是日期或时间。假设您有一个提示,您始终希望它包含当前日期。您不能在提示中硬编码它,并且将它与其他输入变量一起传递可能很繁琐。在这种情况下,使用始终返回当前日期的函数对提示进行部分绑定非常方便。

const getCurrentDate = () => {
return new Date().toISOString();
};

const prompt = new PromptTemplate({
template: "Tell me a {adjective} joke about the day {date}",
inputVariables: ["adjective", "date"],
});

const partialPrompt = await prompt.partial({
date: getCurrentDate,
});

const formattedPrompt = await partialPrompt.format({
adjective: "funny",
});

console.log(formattedPrompt);

// Tell me a funny joke about the day 2023-07-13T00:54:59.287Z

您也可以直接使用部分绑定的变量来初始化提示

const prompt = new PromptTemplate({
template: "Tell me a {adjective} joke about the day {date}",
inputVariables: ["adjective"],
partialVariables: {
date: getCurrentDate,
},
});

const formattedPrompt = await prompt.format({
adjective: "funny",
});

console.log(formattedPrompt);

// Tell me a funny joke about the day 2023-07-13T00:54:59.287Z

下一步

您现在已经学习了如何将变量部分应用于提示模板。

接下来,查看本节中有关提示模板的其他操作指南,例如 向提示模板添加少样本示例


此页面是否有用?


您也可以在 GitHub 上留下详细的反馈 在 GitHub 上.