当前位置: 首页 > news >正文

[LangChain] 04. 提示词模板

在使用 LangChain 构建大模型应用时,提示词(Prompt)设计是第一步。但直接写死字符串容易出错、复用性差,也不利于维护。这时候就该用上 LangChain 提供的 Prompt Template —— 一个专为语言模型设计的提示词模板工具。

快速上手

无变量,纯字符串模板

import { PromptTemplate } from "@langchain/core/prompts";// 创建一个最简单的提示模板
const prompt = new PromptTemplate({inputVariables: [], // 变量列表template: "Hello, AI!", // 模板
});// 使用 format 方法格式化模板(此处无变量)
const result = await prompt.format();console.log(result); // Hello, AI!

有变量,嵌入到字符串模板

import { PromptTemplate } from "@langchain/core/prompts";// 创建一个包含变量的提示模板
const prompt = new PromptTemplate({inputVariables: ["user"], // 在这个数组里面,声明有哪些变量template: "Hi, {user}!", // 使用了 {} 作为变量名的容器
});// 使用 format 方法替换变量
// 需要提供变量的值
const output = await prompt.format({user: "Alex",
});console.log(output); // Hi, Alex!

嵌入多个变量:

import { PromptTemplate } from "@langchain/core/prompts";// 定义一个多变量模板
const prompt = new PromptTemplate({inputVariables: ["period", "user"], // 会用到2个变量template: "Good {period}, {user}!",
});// 提供对应的变量值进行格式化
const result = await prompt.format({period: "evening",user: "Lynn",
});console.log(result); // Good evening, Lynn!

如果你想在最终结果中保留 {} 字符,比如输出 {debug}{info},可以使用 {{}} 进行转义:

import { PromptTemplate } from "@langchain/core/prompts";// 创建一个包含变量的提示模板
const prompt = new PromptTemplate({inputVariables: ["info"],template: "{{debug}}: 当前调试的信息为{info}",
});// 使用 format 方法替换变量
// 需要提供变量的值
const output = await prompt.format({info: "日志已经上传至数据库",
});console.log(output);

这样就不会被当作变量解析,而是原样输出 {debug}

静态方法

PromptTemplate.fromTemplate() 用来快速创建模板:

import { PromptTemplate } from "@langchain/core/prompts";const pt = PromptTemplate.fromTemplate("你是一位精通{subject}的专家,请用{language}来回答用户的问题"
);
console.log(pt.inputVariables); // [ 'subject', 'language' ]const result = await pt.format({subject: "生物学",language: "中文",
});
console.log(result); // 你是一位精通生物学的专家,请用中文来回答用户的问题

通过这种方式,我们无需手动声明 inputVariables,LangChain 会自动从模板字符串中识别 {} 包裹的变量,是构建快速模板的理想选择。

prompt.inputVariables // ["subject", "language"]

部分填充

我们有时并不会一次性拿到所有的变量数据。这时就可以先传入一部分变量生成一个“部分填充”的模板,后续再继续补全 —— 这与函数式编程中的柯里化(Currying)思路非常相似。

import { PromptTemplate } from "@langchain/core/prompts";const pt = PromptTemplate.fromTemplate("你是一位精通{subject}的专家,请用{language}来回答用户的问题:{info}"
);
const pt2 = await pt.partial({subject: "生物学",
});
const pt3 = await pt2.partial({language: "中文",
});
const result = await pt3.format({info: "大象的鼻子为什么那么长",
});
console.log(result);

动态生成变量值

在某些场景下,我们希望在模板格式化时动态生成变量值,比如当前时间、随机数或用户上下文。

此时可以在 partial 方法中传入一个函数,而不是固定的值。

之后在调用 .format() 时,函数会自动执行,生成实际变量内容。

import { PromptTemplate } from "@langchain/core/prompts";// 定义一个函数,获取当前的日期
const getToday = () => new Date().toLocaleDateString();const pt = PromptTemplate.fromTemplate("今天是{date},今天的活动是:{event}");const pt2 = await pt.partial({date: getToday,
});const result = await pt2.format({event: "出去郊游",
});
console.log(result);

另外一个示例:

import { PromptTemplate } from "@langchain/core/prompts";// 获取当前日期
const getDate = () => new Date().toLocaleDateString();function createGreeting(period) {const date = getDate(); // 获取了当前的日期if (period === "早上") return `${date},早上好`;if (period === "下午") return `${date},下午好`;if (period === "晚上") return `${date},晚上好`;return `${date},你好`;
}// 定义提示模板
const prompt = new PromptTemplate({template: "{greeting}!欢迎回来。",inputVariables: ["greeting"],
});// 设置当前时间段
const timePeriod = "下午";// 传入函数,而不是字符串
const partialPrompt = await prompt.partial({greeting: createGreeting(timePeriod),
});const result = await partialPrompt.format();console.log(result); // 8/6/2025,下午好!欢迎回来。

构建少样本提示词

🤔什么是少样本提示词?

少样本学习(few-shot learning),也称之为少样本提示,这是一种范式,在这种范式中,模型通过提示词获得你希望模型执行的任务示例。

示例:

例子:
评论:这个产品真不错,用得很顺手! → 情感:正面
评论:完全失望,质量太差了。 → 情感:负面
评论:快递到了。 → 情感:中性评论:外观还行,性能一般般。 → 情感:
例子:
句子:马云是阿里巴巴的创始人。  
实体:[马云: 人名], [阿里巴巴: 组织]句子:乔布斯出生在旧金山。  
实体:[乔布斯: 人名], [旧金山: 地点]句子:李雷明天去北京出差。  
实体:

PromptTemplate.fromExamples() 已经不推荐使用,在 @langchain/core@0.3.x 版本中已经逐步转向使用 FewShotPromptTemplate

import { PromptTemplate, FewShotPromptTemplate } from "@langchain/core/prompts";const examples = [{ input: "apple", output: "苹果" },{ input: "banana", output: "香蕉" },{ input: "orange", output: "橙子" },
];// 每个示例的模板
const examplePt = PromptTemplate.fromTemplate("输入: {input} --- 输出: {output}"
);const pt = new FewShotPromptTemplate({examples, // 示例的数组examplePrompt: examplePt, // 示例的模板suffix: "输入: {fruit} --- 输出: ",inputVariables: ["fruit"],
});const result = await pt.format({fruit: "grape",
});
console.log(result);

课堂练习

生成情感反馈的 few-shot 提示词

参考答案

import { PromptTemplate, FewShotPromptTemplate } from "@langchain/core/prompts";const examples = [{ comment: "这个产品真不错,用得很顺手!", sentiment: "正面" },{ comment: "完全失望,质量太差了。", sentiment: "负面" },{ comment: "快递到了。", sentiment: "中性" },
];// 每个示例的模板
const examplePt = PromptTemplate.fromTemplate("评论:{comment} → 情感:{sentiment}"
);const pt = new FewShotPromptTemplate({examples, // 示例的数组examplePrompt: examplePt, // 示例的模板suffix: "评论:{comment} → 情感: ",inputVariables: ["comment"],
});const result = await pt.format({comment: "外观还行,性能一般般",
});
console.log(result);

-EOF-

http://www.hskmm.com/?act=detail&tid=33817

相关文章:

  • 2025 最新不锈钢板厂家推荐榜:剖析国内头部品牌竞争优势,附优质供应商选择指南N06625/N06600/C70600不锈钢板厂家推荐
  • 2025 夹丝玻璃源头厂家最新推荐排行榜:解析防火 / 艺术 / 酒店等多场景厂商优势,助力精准选型
  • 2025 中空板源头厂家最新推荐排行榜揭晓:覆盖全产业链,老牌与新锐共筑品质标杆
  • 2025 年感温电缆厂家最新推荐榜单:覆盖线型 / 缆式 / 可恢复 / 消防等多类型产品,全方位解析头部企业核心优势
  • 2025 年盖板源头厂家最新推荐榜单:电力 / 隧道 / 电缆沟等多场景适用品牌优选,解析原材料采购与成本控制要点
  • win
  • 2025 年真空炉制造厂家最新推荐排行榜:涵盖高温烧结真空炉 / 真空退火炉 / 智能铍铜真空炉,助力企业精准选型
  • 2025 年最新推荐排水沟厂家排行榜:聚焦树脂 / 线性 / 树脂混凝土 / 成品 / U 型排水沟优质企业
  • 将 XMind 测试用例转换为 CSV 文件导入测试管理平台
  • 互评-OO之接口-DAO模式代码阅读及应用
  • experiment2
  • 【为美好CTF献上祝福】unity逆向
  • 扩展欧几里得算法
  • 今日学习笔记
  • CSP-S 2022 Solution
  • 印刷电子技术挑战传统PCB主导地位
  • 2025-10-18
  • 某兔网站加密学习
  • 5.vtk学习——点云显示进阶
  • [LangChain] 03. 缓存
  • 面试 / 答辩总卡壳?这款 AI 面试辅助新功能:上传专属资料,精准应答不翻车
  • C语言编程之旅:从入门到实战
  • 引用
  • 实用指南:大数据毕业设计 python智慧交通监控系统 Flask+Echarts可视化 百度地图 毕业设计(源码)✅
  • Selenium元素定位总失败?这8种定位策略你必须掌握
  • 2025 年钢闸门厂家最新推荐排行榜:涵盖不锈钢 / 渠道 / 河道 / 水库 / 平面 / 手动 / 电动 / 液压钢闸门,聚焦十大实力厂家核心优势
  • 2025 年最新铸铁闸门源头厂家推荐排行榜,涵盖四川 / 镶铜 / 渠道 / 圆形 / 方形等类型,助力一站式采购优质供应商
  • 内存四区
  • 2025 年钢闸门源头厂家最新推荐口碑排行榜:聚焦防腐技术与密封性能,助力水利工程采购精准选型固定卷扬/四川卷扬/螺杆/螺杆式启闭机厂家推荐
  • 2025 年耐火砖厂家最新推荐排行榜:绝热/轻质/莫来石等类型优质厂家权威榜单发布氧化铝泡沫/氧化铝空心球/抗渗碳/高温轻质莫来石耐火砖厂家推荐