)
模块 2: 提示词模板 (Prompts)2.1 提示词 (Prompts) 概述在与大型语言模型LLM交互时提示词 (Prompt)是向模型发出的指令或问题。一个好的提示词能够引导模型生成高质量、符合预期的输出。LangChain 提供了强大的提示词管理功能允许开发者创建可复用、动态的提示词模板 [1]。2.2 PromptTemplatePromptTemplate是 LangChain 中最基础的提示词模板。它允许您定义一个包含一个或多个变量的字符串模板。在实际调用模型时这些变量会被具体的值填充。这使得提示词可以根据不同的输入动态生成。2.2.1 基本用法import{PromptTemplate}fromlangchain/core/prompts;// 定义一个包含变量 product 的提示词模板constpromptTemplatePromptTemplate.fromTemplate(请为以下产品名称生成一个吸引人的营销口号{product});// 格式化提示词填充变量constformattedPromptawaitpromptTemplate.format({product:智能咖啡机,});console.log(formattedPrompt);// 输出: 请为以下产品名称生成一个吸引人的营销口号智能咖啡机2.2.2 多个输入变量PromptTemplate可以处理多个输入变量只需在模板字符串中定义它们即可。import{PromptTemplate}fromlangchain/core/prompts;constpromptTemplatePromptTemplate.fromTemplate(请根据以下主题和受众生成一篇短文。主题{topic}受众{audience});constformattedPromptawaitpromptTemplate.format({topic:未来科技,audience:青少年,});console.log(formattedPrompt);// 输出: 请根据以下主题和受众生成一篇短文。主题未来科技受众青少年2.3 ChatPromptTemplateChatPromptTemplate专门用于聊天模型 (Chat Models)。与PromptTemplate处理纯文本不同ChatPromptTemplate允许您定义一系列消息这些消息可以包含不同的角色如系统、人类、AI和变量。这对于构建复杂的对话系统至关重要 [2]。2.3.1 基本用法ChatPromptTemplate通过fromMessages方法接收一个消息数组每个消息可以是SystemMessagePromptTemplate、HumanMessagePromptTemplate或AIMessagePromptTemplate。import{ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate}fromlangchain/core/prompts;constchatPromptChatPromptTemplate.fromMessages([SystemMessagePromptTemplate.fromTemplate(你是一个友好的助手你的名字是 {name}。),HumanMessagePromptTemplate.fromTemplate(你好我的名字是 {user_name}。请问你有什么可以帮助我的吗),]);constformattedChatPromptawaitchatPrompt.formatMessages({name:小智,user_name:张三,});console.log(formattedChatPrompt);/* 输出: [ SystemMessage { content: 你是一个友好的助手你的名字是 小智。, name: undefined }, HumanMessage { content: 你好我的名字是 张三。请问你有什么可以帮助我的吗, name: undefined } ] */2.4 少样本提示 (Few-shot Prompts)少样本提示是一种通过在提示词中提供少量示例来引导模型行为的技术。这对于模型理解任务的意图和期望的输出格式非常有效。LangChain 提供了FewShotPromptTemplate来方便地实现少样本提示 [3]。2.4.1 示例定义首先需要定义一些示例。这些示例通常是输入-输出对。constexamples[{input:开心,output:,},{input:悲伤,output:,},];2.4.2 创建 FewShotPromptTemplateFewShotPromptTemplate结合了PromptTemplate和示例。它会根据提供的示例和输入变量动态生成提示词。import{FewShotPromptTemplate,PromptTemplate}fromlangchain/core/prompts;constexamplePromptnewPromptTemplate({inputVariables:[input,output],template:输入: {input}\n输出: {output},});constfewShotPromptnewFewShotPromptTemplate({examples:examples,examplePrompt:examplePrompt,prefix:请将以下文本转换为表情符号,suffix:输入: {input}\n输出:,inputVariables:[input],exampleSeparator:\n\n,});constformattedPromptawaitfewShotPrompt.format({input:生气,});console.log(formattedPrompt);/* 输出: 请将以下文本转换为表情符号 输入: 开心 输出: 输入: 悲伤 输出: 输入: 生气 输出: */参考文献[1] LangChain.js Prompts. (n.d.). Docs by LangChain. Retrieved from https://js.langchain.com/docs/modules/prompts/[2] LangChain.js Chat Prompts. (n.d.). Docs by LangChain. Retrieved from https://js.langchain.com/docs/modules/prompts/chat_prompts/[3] LangChain.js Few-shot Prompts. (n.d.). Docs by LangChain. Retrieved from https://js.langchain.com/docs/modules/prompts/few_shot_prompts/