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

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

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

2.1 提示词 (Prompts) 概述

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

2.2 PromptTemplate

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

2.2.1 基本用法

import{PromptTemplate}from"@langchain/core/prompts";// 定义一个包含变量 `product` 的提示词模板constpromptTemplate=PromptTemplate.fromTemplate("请为以下产品名称生成一个吸引人的营销口号:{product}");// 格式化提示词,填充变量constformattedPrompt=awaitpromptTemplate.format({product:"智能咖啡机",});console.log(formattedPrompt);// 输出: 请为以下产品名称生成一个吸引人的营销口号:智能咖啡机

2.2.2 多个输入变量

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

import{PromptTemplate}from"@langchain/core/prompts";constpromptTemplate=PromptTemplate.fromTemplate("请根据以下主题和受众,生成一篇短文。主题:{topic},受众:{audience}");constformattedPrompt=awaitpromptTemplate.format({topic:"未来科技",audience:"青少年",});console.log(formattedPrompt);// 输出: 请根据以下主题和受众,生成一篇短文。主题:未来科技,受众:青少年

2.3 ChatPromptTemplate

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

2.3.1 基本用法

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

import{ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate}from"@langchain/core/prompts";constchatPrompt=ChatPromptTemplate.fromMessages([SystemMessagePromptTemplate.fromTemplate("你是一个友好的助手,你的名字是 {name}。"),HumanMessagePromptTemplate.fromTemplate("你好,我的名字是 {user_name}。请问你有什么可以帮助我的吗?"),]);constformattedChatPrompt=awaitchatPrompt.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 创建 FewShotPromptTemplate

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

import{FewShotPromptTemplate,PromptTemplate}from"@langchain/core/prompts";constexamplePrompt=newPromptTemplate({inputVariables:["input","output"],template:"输入: {input}\n输出: {output}",});constfewShotPrompt=newFewShotPromptTemplate({examples:examples,examplePrompt:examplePrompt,prefix:"请将以下文本转换为表情符号:",suffix:"输入: {input}\n输出:",inputVariables:["input"],exampleSeparator:"\n\n",});constformattedPrompt=awaitfewShotPrompt.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/

http://www.jsqmd.com/news/856418/

相关文章:

  • Anthropic《创始人手册:打造AI原生创业公司》Claude(中文精读版)完整38页pdf
  • 智能门锁语音方案:WTVXXX-32N芯片选型、硬件设计与调试实战
  • rsync与scp的作用与核心区别
  • 2026年英文文献阅读软件推荐:研一新生用Scholaread靠岸学术3个月读透50篇文献的完整方法
  • 别再只调超参了!深入TD3三大‘黑科技’,解决DDPG训练不稳定与过估计的老大难问题
  • STM32G474实战:用CubeIde配置互补PWM驱动电机,这10个坑我帮你踩过了
  • 央视解码君乐宝悦鲜活 郭晶晶与尼格买提探秘高品质中国鲜奶
  • VMware虚拟机内存越用越多?用Sysinternals RAMMap64一键清理宿主机缓存(附定时任务脚本)
  • 别再问‘我这是固定IP吗’了,Linux下用ip addr和nmcli一眼看穿静态/动态IP
  • 为什么你的Midjourney时装图总被拒稿?揭秘Pantone TPX数据库未公开调用逻辑及RGB→PMS精准映射公式
  • 为OpenClaw配置Taotoken作为后端大模型服务的完整流程
  • 2026年4月西藏靠谱的体育看台源头厂家推荐,体育看台/雨棚/遮阳棚/推拉蓬/电动推拉棚,体育看台生产厂家怎么选择 - 品牌推荐师
  • XTDrone集群调试实录:当ego-swarm遇上vins-fusion,如何揪出那个让无人机‘乱飞’的坐标偏移Bug?
  • 从鸢尾花到收入预测:手把手教你用Pandas和sklearn搞定KNN分类的数据预处理全流程
  • 软件研发 --- 应知应会 之 为什么别人的软件如此复杂我的如此简单
  • FPGA图像处理实战:用Vivado移位寄存器IP核搞定5x5中值滤波(附Verilog源码)
  • 轻松实现Zoho系统与轻易云数据集成平台的无缝对接
  • 从推荐逻辑到库存架构:木鸟民宿、携程民宿、爱彼迎场景化服务技术对比
  • AMKASYN AZ05-0-0-1驱动器
  • 别再傻傻分不清L2和L3了!一张图看懂自动驾驶分级(附SAE/国标对照表)
  • vscode里使用EIDE,编译GD32,如何屏蔽官方库的C语言代码警告提示(非错误)
  • 驭势科技上市首日破发,L4级自动驾驶商业化盈利之路仍待突破
  • 英语阅读_The bitter taste of climate change
  • 保姆级教程:用Docker Compose一键部署PostgreSQL 14,再也不用记那些繁琐的docker run命令了
  • 从元计算到舱驾融合:国产AI芯片五大技术路线横向观察
  • 极竞魔方XR大空间亮相孩子王南京城市亲子节
  • 保姆级教程:在Ubuntu 22.04上搞定MySQL 8.0安装、用户权限与远程连接(避坑指南)
  • 利刃混剪:告别重复劳动:用脚本思维搞定剪映批量混剪(实战分享)
  • GJB/Z 299D-2024 可靠性预计工具 —— 国产自主可控的电子设备可靠性评估利
  • 保姆级教程:用ROS2的Component机制和TF2实现小乌龟跟随(C++/Python双版本)