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

【第二周】RAG与Agent实战13:通用提示词模板 (PromptTemplate)

在之前我们直接将字符串传给模型model.invoke(帮我写一首诗)这种写法叫做Zero-shot零样本提示。但在实际应用中我们需要动态地替换提示词中的内容比如用户的名字、查询的问题、文档的片段。如果每次都手动拼接字符串你好 name ...不仅代码难看还容易出错比如忘记空格、特殊字符转义等。LangChain 提供了PromptTemplate类它就像 Python 的f-string或format函数的增强版专门用于管理提示词的结构和变量。本文将带你掌握两种使用PromptTemplate的方式并重点推荐基于 Chain 链的现代写法。️ 核心概念什么是 PromptTemplatePromptTemplate是一个模板引擎。它的作用是定义结构预先写好提示词的固定部分如“你是一个翻译助手请将以下文本翻译成英文{text}”。定义变量用{变量名}标记出需要动态填充的部分。注入数据在运行时将具体的数据填入变量生成最终的提示词。 实战案例给邻居宝宝起名字我们要构建一个应用用户输入姓氏和性别AI 自动推荐一个符合该姓氏和性别的名字。方式一标准写法手动格式化这是最直观的理解方式适合初学者理解原理但在复杂场景中不够优雅。fromlangchain_core.promptsimportPromptTemplatefromlangchain_community.llms.tongyiimportTongyi# 1. 定义模板# 使用 {变量名} 作为占位符prompt_templatePromptTemplate.from_template(我的邻居姓{lastname}刚生了{gender}你帮我起个名字简单回答。)# 2. 手动注入变量 (类似 python 的 .format)# 这一步生成了一个普通的字符串prompt_textprompt_template.format(lastname王,gender儿子)# 打印看看生成的提示词长什么样# print(prompt_text)# 输出: 我的邻居姓王刚生了儿子你帮我起个名字简单回答。# 3. 创建模型对象modelTongyi(modelqwen-max)# 4. 调用模型# 注意这里传入的是已经格式化好的字符串 inputprompt_textresmodel.invoke(inputprompt_text)print( 推荐名字,res)缺点分析步骤繁琐需要先.format()生成字符串再传给model.invoke()。灵活性差如果后续要加预处理或后处理逻辑代码会变得很乱。类型不安全.format()只是生成字符串LangChain 无法检查变量是否匹配。方式二基于 Chain 链的写法推荐 ⭐⭐⭐⭐⭐这是 LangChain 现代版本LCEL, LangChain Expression Language推荐的写法。它将“模板”和“模型”直接连接成一个链Chain实现了一站式调用。fromlangchain_core.promptsimportPromptTemplatefromlangchain_community.llms.tongyiimportTongyi# 1. 定义模板 (同上)prompt_templatePromptTemplate.from_template(我的邻居姓{lastname}刚生了{gender}你帮我起个名字简单回答。)# 2. 创建模型对象modelTongyi(modelqwen-max)# 3. 构建链 (关键步骤)# 使用 | 符号将 template 和 model 连接起来# 意思是先运行 template 填充变量 - 再把结果传给 model 处理chainprompt_template|model# 4. 调用链# 直接传入一个字典Key 对应模板中的变量名reschain.invoke(input{lastname:王,gender:儿子})print( 推荐名字,res)优势分析简洁高效一行代码chain ... | ...完成组装一行代码invoke完成执行。语义清晰|符号形象地表示了数据流向数据 - 模板 - 模型 - 结果。易于扩展如果以后想在模板和模型之间加一个“过滤步骤”只需在中间再加一个| 组件即可无需修改调用逻辑。统一接口无论底层是 LLM、ChatModel 还是其他组件invoke的用法都是一致的。 深度解析|操作符的魅力在 LangChain 中|被称为Runnable Sequence可运行序列。当你写下chain prompt_template | model时LangChain 并没有立即执行任何东西它只是创建了一个执行计划。当你调用chain.invoke({...})时LangChain 接收字典{lastname: 王, gender: 儿子}。自动调用prompt_template将字典值填入{lastname}和{gender}生成字符串。自动将生成的字符串传递给model.invoke()。返回模型的最终结果。这种声明式的编程风格让构建复杂的 AI 工作流如 RAG、Agent变得像搭积木一样简单。 常见变量命名规范在PromptTemplate中变量名可以随意取但为了可读性建议遵循以下习惯{query}或{question}用户的提问。{context}检索到的背景知识RAG 场景常用。{history}聊天历史。{input}通用输入。{topic},{style},{language}控制生成风格的参数。例如一个 RAG 的标准模板template 基于以下已知信息简洁和专业地回答用户的问题。 如果无法从中得到答案请说“根据已知信息无法回答该问题”。 已知信息 {context} 问题 {question} promptPromptTemplate.from_template(template)chainprompt|model# 调用时chain.invoke({context: ..., question: ...}) 总结本节课我们掌握了 LangChain 中管理提示词的核心工具PromptTemplate用于定义带变量的提示词结构避免手动拼接字符串。两种调用方式标准写法.format()model.invoke()适合理解原理。链式写法template | modelchain.invoke()生产环境推荐。LCEL 语法理解了|操作符如何将多个组件串联成一条流水线。掌握PromptTemplate是构建高质量 AI 应用的基础。无论是简单的问答还是复杂的 RAG 系统都需要通过精心设计的模板来引导模型输出我们想要的结果。

相关文章:

【第二周】RAG与Agent实战13:通用提示词模板 (PromptTemplate)

在之前我们直接将字符串传给模型: model.invoke("帮我写一首诗")这种写法叫做 Zero-shot(零样本) 提示。但在实际应用中,我们需要动态地替换提示词中的内容(比如用户的名字、查询的问题、文档的片段&#xf…...

基于VirtualLab Fusion的复合光源仿真

摘要能够在一个系统中包含多个光源是许多应用的基础,如成像或照明。VirtualLabFusion提供了解决这类问题的高级选项。在本文档中,我们简要概述了如何设置复合光源,并给出了几个仿真示例。概览复合光源可以:包含任意数量的主光源。…...

快速清理手机QQ大量占用的存储空间

快速清理手机QQ大量占用的存储空间 众所周知,手机QQ随着使用会占据越来越多的磁盘空间,甚至多达上百GB。 在面对如此大量的存储数据时,无论是QQ自带的清理工具,还是手机管家之类系统自带的清理工具,其实往往都表现很糟…...

LITESTAR 4D 新模块:Sport Plus-运动场高级照明管理模块

您是否想要一个程序以自动,简单和快速的方式设计运动区域的照明?如果是这样,LITESTAR 4D Litecalc 运动区的额外模块 Sport Plus 是理想的解决方案。区域和高桅杆定义运动区域和高杆定义中可以设定以下内容:1. 运动设施的一般区域…...

使用OpenClaw+Skill自动发布微信公众号文章

一、OpenClaw 介绍 OpenClaw 是一款‌本地优先、可自托管的AI自动化代理工具‌,可以运行在你自己的电脑上,通过各种聊天工具(飞书、QQ、Telegram 等)与你对话,帮你完成各种任务。 1.1 什么是 OpenClaw? 你可…...

受激发射损耗(STED)显微镜原理

摘要受激发射损耗(STED)显微镜描述了一种常用的技术,以实现在生物应用的超分辨率。在这种方法中,两束激光—一束正常,一束转变成甜甜圈模式—被叠加到荧光样品上。通过使用荧光过程的发射和损耗以及利用由此产生的饱和效应,与通常…...

电工操作证报名照片太大?1分钟学会照片压缩技巧

报考电工操作证,作为从事电力作业、设备维修、线路安装的一线人员,日常工作强度大、时间零散,报名办证时照片上传常常成为麻烦事。很多电工朋友已经按要求拍好证件照,清晰度、着装、背景都没问题,就因为照片文件体积太…...

在虚拟机中安装一个linux操作系统

...

ch4_1

//--------------------- // ch4_1.cpp //--------------------- #include<iostream> using namespace std; //--------------------- int main(){int i1,sum0; //初始化while(i<100){sumsumi;ii1;}cout<<"sum "<<sum<<endl; }//---…...

AgenticAIoT - 自进化智能物联网平台

AgenticAIoT - 自进化智能物联网平台 平台简介 AgenticAIoT 是一款企业级自进化智能物联网平台,深度融合 AI 大模型、物联网(IoT) 与 AI 自主编程 三大核心能力。平台以"智能设备接入 + 数据智能流转 + 规则引擎联动 + AI 决策运维 + 自主进化"为核心理念,提供…...

redhat8安装教程

一&#xff0c;下载vm,redhat8的镜像文件与Xshall VM 的安装地址&#xff1a;VMware-workstation-full-17.6.1-24319023.exe_免费高速下载|百度网盘-分享无限制 redhat8镜像文件&#xff1a; RHEL-server-8.0-x86_64-LinuxProbe.Com.iso_免费高速下载|百度网盘-分享无限制 …...

基于SpringBoot与微信小程序的付费自习室系统设计与实现

一、系统开发背景与目标 随着社会对学习效率的重视&#xff0c;付费自习室成为学生、职场人士备考进修的热门选择&#xff0c;但传统预约依赖电话沟通或现场登记&#xff0c;存在座位冲突、时段选择不便等问题。基于SpringBoot后端与微信小程序前端的付费自习室系统&#xff0c…...

基于小程序的篮球场馆预订系统设计与实现

一、系统开发背景与意义 随着全民健身意识的提升&#xff0c;篮球运动成为大众喜爱的体育项目&#xff0c;但篮球场馆预订存在诸多痛点&#xff1a;传统预订依赖电话或现场排队&#xff0c;易出现信息滞后导致的场地冲突&#xff1b;用户难以实时了解场馆空闲时段、场地类型&am…...

从零搭建企业级堡垒机:JumpServer 开源 PAM 平台深度实战指南

引言 在当今云原生与混合 IT 架构盛行的时代&#xff0c;如何安全地管理对服务器、数据库、K8s 集群的访问权限&#xff0c;已成为每个企业必须面对的核心问题。传统“账号共享 密码硬编码”的方式早已被时代淘汰&#xff0c;取而代之的是 特权访问管理&#xff08;Privilege…...

5-7列表去重

输入一个列表&#xff0c;去掉列表中重复的数字&#xff0c;按原来次序输出&#xff01;输入格式:在一行中输入列表输出格式:在一行中输出不重复列表元素neval(input()) a[] for i in n:if i not in a:a.append(i) a1 .join(str(x) for x in a) print(a1)neval(input()) a[] fo…...

18 Byte Buddy 进阶指南:解锁 `@Pipe` 注解,实现灵活的方法转发

在 Java 字节码增强的世界里&#xff0c;Byte Buddy 以其简洁的 API 和强大的功能成为了开发者手中的利器。我们通常使用 MethodDelegation 配合 SuperCall 来调用父类逻辑&#xff0c;或者使用 This 操作当前实例。 但你是否遇到过这样的场景&#xff1a;你想拦截一个方法&am…...

Servlet配置实战:XML与注解对比

方式 1&#xff1a;XML 配置方式这种方式需要在 WEB-INF/web.xml 中配置 Servlet 映射&#xff0c;步骤如下&#xff1a;1.1 编写 Servlet 类在 src/main/java/com/example/web 下创建HelloServlet.java &#xff1a;1.2 在 web.xml 中配置 Servlet打开 src/main/webapp/WEB-IN…...

DeepSeek+豆包+Kimi降AI指令怎么写?保姆级教程来了

DeepSeek豆包Kimi降AI指令怎么写&#xff1f;保姆级教程来了 很多同学私信问我降AI到底怎么操作&#xff0c;今天出一个保姆级教程&#xff0c;照着做就行。 核心工具推荐嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8元/千字&#xff0c;操作简单效果…...

【LeetCodehot100】T24:两两交换链表中的节点 T25:K个一组翻转链表

T24:两两交换链表中的节点 题目核心是&#xff1a;两个两个一组&#xff0c;进行交换。交换的是节点&#xff0c;不是数字我们来举例只有两个节点的情况&#xff1a;&#xff08;1->2&#xff09; 原来&#xff1a;1.next2; 2.nextnull我们要变换为&#xff1a;2.next1; 1.n…...

从零开始学习Zookeeper:大数据分布式系统的守护者

从零开始学习Zookeeper:大数据分布式系统的守护者 关键词 Zookeeper、分布式协调、ZNode、ZAB协议、分布式锁、配置中心、服务注册与发现 摘要 在大数据与分布式系统的世界里,“协调"是最棘手的难题之一:如何让成百上千台机器像一个团队般默契协作?Zookeeper作为分…...

共模电感选型全攻略:功能、场景与关键参数深度解析

一、共模电感核心功能&#xff1a;电磁干扰的 “筛选器”共模电感&#xff08;又称共模扼流圈&#xff09;是 EMC 设计的核心器件&#xff0c;本质是由两个尺寸相同、匝数一致的线圈对称绕制在同一铁氧体磁芯上的四端器件&#xff0c;其核心功能围绕 “区分信号与干扰” 展开&a…...

springboot基于JavaWeb的大学生房屋租赁系统

第一章 系统开发背景与SpringBoot适配性 大学生租房群体&#xff08;如实习、考研、校外住宿需求&#xff09;在租赁过程中面临诸多痛点&#xff1a;房源信息分散在社交平台、中介朋友圈&#xff0c;缺乏针对大学生的专属筛选渠道&#xff0c;易遭遇“虚假房源”“中介高额佣金…...

springboot基于Java的旅游攻略分享平台

第一章 平台开发背景与SpringBoot适配性 当前旅游攻略领域面临诸多痛点&#xff1a;旅行者获取攻略多依赖旅游平台官方推荐&#xff0c;内容同质化严重&#xff0c;缺乏真实、个性化的本地体验分享&#xff1b;攻略创作者发布内容需在多个平台切换&#xff0c;数据分散且收益难…...

springboot基于Java的旅游民宿网络营销系统

第一章 系统开发背景与SpringBoot适配性 当前旅游民宿行业面临诸多营销痛点&#xff1a;民宿多依赖OTA平台&#xff08;如携程、美团&#xff09;获客&#xff0c;平台佣金高&#xff08;通常10%-20%&#xff09;且用户数据被垄断&#xff0c;民宿难以建立私域流量&#xff1b;…...

为什么某些老电脑只支持4G内存?

为什么有些老电脑只支持4G内存&#xff1f;首先要明确&#xff1a; &#xff08;1&#xff09; 32位操作系统限制的是“能用多少”&#xff0c; &#xff08;2&#xff09; 老电脑某些老主板限制的是“能插多大”。简单来说&#xff1a;32位系统确实只认4G&#xff0c;但很多老…...

接口幂等性详解:从理论到全链路实战方案

接口幂等性详解&#xff1a;从理论到全链路实战方案在分布式系统和高并发场景下&#xff0c;“接口幂等性”&#xff08;Idempotency&#xff09; 是一个老生常谈却又极易被忽视的核心概念。很多线上事故&#xff08;如用户重复扣款、订单重复创建、库存重复扣减&#xff09;的…...

MySQL 视图与用户权限管理

一、视图 (View)1. 什么是视图&#xff1f;视图是一个虚拟表&#xff0c;它本身不存储数据&#xff0c;而是基于一个或多个基本表&#xff08;或其他视图&#xff09;的查询结果集动态生成。视图的本质是对一段复杂 SQL 的封装&#xff0c;执行查询时才会动态计算结果。对视图的…...

【2026年拼多多春招- 3月15日 -第二题- 多多的充电计划】(题目+思路+JavaC++Python解析+在线测试)

题目内容 多多驾驶电动车从起点000出发,目的地距离为LLL公里。电动车满电时可行驶CCC</...

十六届蓝桥杯java b组3,4题

两数之和为质数与电池分组&#xff1a;核心知识点与解题思路我帮你把这次问的所有题目 关键疑问&#xff0c;全部整理成&#xff1a;问题 代码思路 核心知识点&#xff0c;清晰分开&#xff0c;方便你复习。一、第一题&#xff1a;两数之和是质数&#xff08;你一开始超时那…...

Linux8的安装

1.先创建一个新的虚拟机2.选自定义模式&#xff0c;点击下一步3.这里默认&#xff0c;单击下一步4.这里选择稍后安装操作系统&#xff0c;然后点击下一步5.先选客户机操作系统Linux&#xff0c;再选版本Red Hat Enterprise 8 64位 6.给虚拟机命名&#xff0c;位置我们点击浏览把…...