在使用大语言模型的时候,可以在提示文本里包含一些示例,让模型可以学习这些小样本数据。在 LangChain 应用里,准备这种带示例数据的提示可以定义一些 FewShotPromptTemplate。
在这个 Node.js 程序文件的顶部,导入 FewShotPromptTemplate 还有一个 PromptTemplate,它们来自 langchain/prompts。
假设我们想让模型根据提供的 emoji 表情符号输出对应的文字,在提示文本里需要包含点示例数据,可以先准备一个小样本示例提示模板去生成这种提示。
先声明一个 examples 它的值是一些示例数据,一个数组,每个项目都是一个对象,添加一个 emoji,对应的值是一个表情符号,然后再添加一个 word,对应的值是“开心”,复制一份,再添加一个示例数据,修改一下表情符号的值,还有对应的文本。
然后准备一个示例提示模板,声明一个 examplePrompt,用一下 PromptTemplate.fromTemplate,提供一个字符串,emoji 冒号,大括号,然后是 emoji,添加一个 \n 表示换行符,再添加一个 word 冒号,然后是大括号 word。
再声明一个 fewShotPromptTemplate,它的值可以新建一个 FewShotPromptTemplate,提供一个对象,在里面需要添加一些东西,先添加一个 examples,这的值是在提示里提供的样本数据,这里就是上面定义的 examples,再添加一个 examplePrompt ,示例数据提示模板,对应的值就是上面定义的 examplePrompt。再添加一个 exampleSeparator,设置一下示例数据的分隔符,这里可以使用两个换行符。
下面准备一下提示里的 prefix ,“将表情符号转换成文字”,再提供一个 suffix,一个字符串 emoji 冒号,大括号 emoji,换行符,然后是 word 冒号。最后再添加一个 inputVariables 设置一下提示模板里需要的变量,这里就是 emoji。
声明一个 prompt ,等于 await,用一下这个 fewShotPromptTemplate 上面的 format 这个方法,提供一个对象,设置一下提示模板里的变量,这里需要提供一个 emoji ,它的值是一个表情符号。
最后可以在控制台上输出这个 prompt 检查一下。
在终端,用 node 运行一下 index.mjs ,这里输出的就是一个使用 FewShowPromptTemplate 生成的带示例数据的提示文本。
验证
我们可以把这个提示文本交给模型处理一下,声明一个 model,新建一个 OpenAI,提供一个对象,设置一下要使用的模型的名字,比如 gpt-3.5-turbo。这个 OpenAI 来自 langchain/llms/openai。
再声明一个 result,等于 await,用一下 model.call ,把 prompt 交给这个方法,最后在控制台上输出这个 result。
在终端,运行一下应用,这里输出的就是模型在学习了提示文本里的示例以后,根据提供的表情符号生成的对应的文本。