LangChain学习之提示词模板 Prompts(2/8)

模块 2: 提示词模板 (Prompts)

2.1 提示词 (Prompts) 概述

在与大型语言模型(LLM)交互时,提示词 (Prompt) 是向模型发出的指令或问题。一个好的提示词能够引导模型生成高质量、符合预期的输出。LangChain 提供了强大的提示词管理功能,允许开发者创建可复用、动态的提示词模板 1

2.2 PromptTemplate

PromptTemplate 是 LangChain 中最基础的提示词模板。它允许您定义一个包含一个或多个变量的字符串模板。在实际调用模型时,这些变量会被具体的值填充。这使得提示词可以根据不同的输入动态生成。

2.2.1 基本用法

typescript 复制代码
import { PromptTemplate } from "@langchain/core/prompts";

// 定义一个包含变量 `product` 的提示词模板
const promptTemplate = PromptTemplate.fromTemplate(
  "请为以下产品名称生成一个吸引人的营销口号:{product}"
);

// 格式化提示词,填充变量
const formattedPrompt = await promptTemplate.format({
  product: "智能咖啡机",
});

console.log(formattedPrompt);
// 输出: 请为以下产品名称生成一个吸引人的营销口号:智能咖啡机

2.2.2 多个输入变量

PromptTemplate 可以处理多个输入变量,只需在模板字符串中定义它们即可。

typescript 复制代码
import { PromptTemplate } from "@langchain/core/prompts";

const promptTemplate = PromptTemplate.fromTemplate(
  "请根据以下主题和受众,生成一篇短文。主题:{topic},受众:{audience}"
);

const formattedPrompt = await promptTemplate.format({
  topic: "未来科技",
  audience: "青少年",
});

console.log(formattedPrompt);
// 输出: 请根据以下主题和受众,生成一篇短文。主题:未来科技,受众:青少年

2.3 ChatPromptTemplate

ChatPromptTemplate 专门用于聊天模型 (Chat Models)。与 PromptTemplate 处理纯文本不同,ChatPromptTemplate 允许您定义一系列消息,这些消息可以包含不同的角色(如系统、人类、AI)和变量。这对于构建复杂的对话系统至关重要 2

2.3.1 基本用法

ChatPromptTemplate 通过 fromMessages 方法接收一个消息数组,每个消息可以是 SystemMessagePromptTemplateHumanMessagePromptTemplateAIMessagePromptTemplate

typescript 复制代码
import { ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate } from "@langchain/core/prompts";

const chatPrompt = ChatPromptTemplate.fromMessages([
  SystemMessagePromptTemplate.fromTemplate("你是一个友好的助手,你的名字是 {name}。"),
  HumanMessagePromptTemplate.fromTemplate("你好,我的名字是 {user_name}。请问你有什么可以帮助我的吗?"),
]);

const formattedChatPrompt = await chatPrompt.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 示例定义

首先,需要定义一些示例。这些示例通常是输入-输出对。

typescript 复制代码
const examples = [
  {
    input: "开心",
    output: "😄",
  },
  {
    input: "悲伤",
    output: "😢",
  },
];

2.4.2 创建 FewShotPromptTemplate

FewShotPromptTemplate 结合了 PromptTemplate 和示例。它会根据提供的示例和输入变量动态生成提示词。

typescript 复制代码
import { FewShotPromptTemplate, PromptTemplate } from "@langchain/core/prompts";

const examplePrompt = new PromptTemplate({
  inputVariables: ["input", "output"],
  template: "输入: {input}\n输出: {output}",
});

const fewShotPrompt = new FewShotPromptTemplate({
  examples: examples,
  examplePrompt: examplePrompt,
  prefix: "请将以下文本转换为表情符号:",
  suffix: "输入: {input}\n输出:",
  inputVariables: ["input"],
  exampleSeparator: "\n\n",
});

const formattedPrompt = await fewShotPrompt.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/

相关推荐
MartinYeung5几秒前
[论文学习]透过增强式 Few-Shot Learning 实现高效 PII 从大型语言模型中提取
人工智能·学习·语言模型
公考指南针7 分钟前
公务员面试怎么准备?2026 结构化面试流程、答题训练和备考工具测评
经验分享·学习·面试
.千余10 分钟前
【C++】C++继承入门(上):继承语法与基本特性详解
开发语言·c++·笔记·学习·其他
承渊政道10 分钟前
【MySQL数据库学习】MySQL基本查询(下)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统
skywalk816317 分钟前
段言的设计文档:中文编程赛道的竞争格局,谁在牌桌上?
开发语言·学习·编程
段一凡-华北理工大学22 分钟前
工业领域的Hadoop架构学习~系列文章24:adoop工业应用总结与展望 - 技术路线图与最佳实践
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
一锅炖出任易仙35 分钟前
创梦汤锅学习日记day30
学习·ai·ue5·游戏引擎
打小就很皮...1 小时前
基于 Python + LangChain + React 实现智能发票识别与验真系统实战
前端·react.js·langchain·ocr·发票识别
AOwhisky1 小时前
Redis 学习笔记(第二期):核心数据类型与消息队列实战
运维·数据库·redis·笔记·学习·云计算
keira6741 小时前
个人健康日程表(小时级行为系统)
学习·生活