部分提示模板
langchain Partial prompt templates是指Langchain框架中的部分提示模板。这些部分提示模板可以更加方便地为模型输入添加参数,提高模型的性能和效果。具体来说,部分提示模板可以“部分填充”模板,即只传入部分必需的参数,生成新的提示模板。与传统的提示模板相比,部分提示模板更加灵活,可以更好地适应不同场景的需求。
LangChain支持两种方式:
- 使用字符串值进行部分格式化。
- 使用返回字符串值的函数进行部分格式化。
这两种不同的方式支持不同的用例。在下面的示例中,我们将讨论两种用例的动机以及如何在LangChain中实现。
使用字符串进行部分格式化
部分提示模板的一个常见用例是在获取某些变量之前获取其他变量。例如,假设您有一个提示模板,需要两个变量foo
和baz
。如果您在链的早期获得了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