LangChain Prompt 模板保姆级教程:让大模型秒懂你的心
别再手写一坨坨的 Prompt 字符串了LangChain 的模板功能让你的提示词优雅又好维护~开篇碎碎念你是否也曾写出过这种代码prompt f请帮我为商品{name}写文案它的卖点是{points}目标用户是{user}要求不超过{length}字语气要{tone}... # 字符串越来越长越来越难维护...明明能用但维护起来简直要命。改一个地方满代码找半天。别慌LangChain 的 Prompt 模板来拯救你的代码洁癖了啥是 Prompt通俗点说Prompt 就是你跟大模型说的话。比如请用一句话介绍 LangChain。 —— 这是最简单的 Prompt你是一名资深程序员请用通俗易懂的语言解释什么是递归。 —— 这就复杂点了Prompt 写得好模型输出就像开了挂Prompt 写得烂输出能让你怀疑人生。PromptTemplate最简单的模板想象一下你有个模板请为商品 {商品名} 写一句广告语突出卖点{卖点}每次只需要填空就行from langchain_core.prompts import PromptTemplate 创建模板 template PromptTemplate.from_template( 请为商品 {product_name} 写一句广告语突出卖点{selling_points} ) 填空调用 prompt template.invoke({ product_name: 无线鼠标, selling_points: 静音、续航长、轻便 }) print(prompt.text)输出请为商品 无线鼠标 写一句广告语突出卖点静音、续航长、轻便是不是像填空题一样简单ChatPromptTemplate聊天模型的好搭档现代大模型GPT、Claude、通义千问等都支持角色消息这时候用ChatPromptTemplate更香from langchain_core.prompts import ChatPromptTemplate chat_template ChatPromptTemplate.from_messages([ (system, 你是一名电商运营专家回答要简洁有吸引力。), (human, 请为商品 {product_name} 写一段文案卖点是{selling_points}) ]) prompt chat_template.invoke({ product_name: logi鼠标, selling_points: 静音、灵敏、无延迟 })PromptTemplate vs ChatPromptTemplate模板类型输出格式角色支持推荐指数PromptTemplate纯文本字符串❌ 无⭐⭐⭐ChatPromptTemplate消息列表✅ system/human/ai⭐⭐⭐⭐⭐一句话总结聊天模型用 ChatPromptTemplate 就对了Prompt 编写的万能公式记住这个四件套你的 Prompt 就不会太差1️⃣ 明确角色你是一名资深电商运营专家。让模型知道自己是谁风格就稳了。2️⃣ 明确任务请根据商品信息生成详情页文案。别让模型猜你想要啥直接说清楚。3️⃣ 明确约束要求 1. 不超过 150 字 2. 不夸大宣传 3. 适合年轻用户规则越多跑偏越少。4️⃣ 明确输入商品名称{product_name} 商品卖点{selling_points} 目标用户{target_user}变量清清楚楚模型一看就懂。实战演练三个拿来即用的案例案例 1商品文案生成器import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.prompts import ChatPromptTemplate load_dotenv() model init_chat_model( modeldeepseek-chat, model_provideropenai, base_urlos.getenv(DEEPSEEK_BASE_URL), api_keyos.getenv(DEEPSEEK_API_KEY), temperature0.5 ) prompt_str 请根据以下信息生成商品详情页文案 商品名称{product_name} 商品卖点{selling_points} 目标用户{target_user} 要求 不超过 150 字 突出用户利益 不虚假夸张 chat_prompt ChatPromptTemplate.from_messages([ (system, 你是电商运营专家擅长写自然有吸引力的商品文案), (human, prompt_str) ]) prompt chat_prompt.invoke({ product_name: 无线静音鼠标, selling_points: 静音按键、蓝牙连接、续航30天, target_user: 办公室和图书馆用户 }) response model.invoke(prompt) print(response.content)一句话点评角色 输入 约束 稳定输出 ✅案例 2学习计划生成器prompt_template ChatPromptTemplate.from_messages([ (system, 你是一名编程老师擅长制定可执行的学习计划。), (human, 请为我制定学习计划 学习主题{topic} 学习时长{days} 天 每天学习{hours_per_day} 小时 当前基础{level} 要求 按天列出学习内容 每天给出练习任务 内容适合当前基础 ) ]) prompt prompt_template.invoke({ topic: LangChain 入门, days: 5, hours_per_day: 2, level: 会 Python 基础 })小贴士变量可以是数字哦~ 不一定是字符串案例 3客服回复生成器prompt_template ChatPromptTemplate.from_messages([ (system, 你是电商客服回复礼貌明确不推卸责任。), (human, 请根据以下信息生成客服回复 用户问题{user_question} 订单状态{order_status} 物流信息{shipping_info} 要求 先安抚用户 再说明情况 最后给建议 不超过 120 字 ) ]) prompt prompt_template.invoke({ user_question: 我的快递三天没更新了是不是丢了, order_status: 已发货, shipping_info: 包裹已到上海转运中心 })业务价值用户问题 → 数据库 → 第三方接口 → Prompt → 秒回用户进阶玩法MessagesPlaceholder当你需要插入聊天历史时用MessagesPlaceholderfrom langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder prompt ChatPromptTemplate.from_messages([ (system, 你是一个有用的助手。), MessagesPlaceholder(history), # 这里插入历史消息 (human, {question}), ]) 调用时传入历史 prompt_value prompt.invoke({ history: [ (human, 我叫小明), (ai, 你好小明), ], question: 我叫什么名字, })参数说明参数作用optionalTrue允许不传 history不报错n_messages4只保留最近 4 条消息防止 token 爆表简写形式(placeholder, {history}) # 等价于 MessagesPlaceholder(history, optionalTrue)封装技巧告别重复代码每个案例都写一遍模型初始化太累了创建model_factory.pyimport os from dotenv import load_dotenv from langchain.chat_models import init_chat_model def get_deepseek_model(temperature: float 0.7): load_dotenv() return init_chat_model( modeldeepseek-chat, model_provideropenai, api_keyos.getenv(DEEPSEEK_API_KEY), base_urlos.getenv(DEEPSEEK_BASE_URL), temperaturetemperature, )以后一行搞定from model_factory import get_deepseek_model model get_deepseek_model(temperature0.5)常见问题快问快答QPrompt 越长越好吗A不是要求太多反而会让模型顾此失彼保持清晰就够了。Q为什么模型没完全按要求输出A大模型不是程序不能百分百服从。后续可以结合结构化输出做校验。QPromptTemplate 和 ChatPromptTemplate 选哪个A聊天模型优先用 ChatPromptTemplate这是现代应用的标配。总结划重点知识点一句话总结Prompt 本质给模型的任务说明书模板好处变量分离复用 easyPromptTemplate简单文本任务用ChatPromptTemplate聊天模型首选MessagesPlaceholder插入历史消息神器编写公式角色 任务 输入 约束觉得有用的话点个赞再走呗~ 你的鼓励是我持续输出的动力有问题欢迎评论区唠两句一起学习一起进步

相关新闻

如何使用 OpenTelemetry 对你的搜索 API 进行埋点,并使用 ES|QL 对其进行查询

如何使用 OpenTelemetry 对你的搜索 API 进行埋点,并使用 ES|QL 对其进行查询

作者:来自 Elastic Matthew Adams 向你的 OpenTelemetry span 添加自定义属性,并运行六个 ES|QL 查询,以揭示最热门的搜索、零结果率以及最慢的查询。 Elasticsearch 提供了大量新功能,帮助你针对自己的使用场景构建最佳搜索解决方…

2026/10/18 19:56:31 阅读更多 →
Kimi K3搭载自研KDA注意力算法

Kimi K3搭载自研KDA注意力算法

Kimi K3这几天的热度,表面是国产大模型又一次刷屏,深层其实是全球AI产业的一次压力测试。7月17日,月之暗面发布新一代模型Kimi K3。公开信息显示,K3参数规模达2.8万亿,原生支持视觉理解,具备100万Token上下…

2026/10/19 4:07:47 阅读更多 →
正交编码器接口(QEI)原理与Stellaris驱动开发实战

正交编码器接口(QEI)原理与Stellaris驱动开发实战

1. 正交编码器(QEI)核心原理与设计思路拆解在嵌入式运动控制领域,无论是驱动一个精密的机械臂关节,还是控制一台3D打印机的步进电机,我们都需要一个“眼睛”来告诉控制器:“电机轴现在转到了哪里&#xff1…

2026/10/17 0:45:08 阅读更多 →

最新新闻

WebSocket消息推送实战:从轮询到高并发长连接的全流程拆解

WebSocket消息推送实战:从轮询到高并发长连接的全流程拆解

接手过一个实时通知服务,业务上要求订单状态变更、客服会话、后台告警都要在秒级内推到用户端。最开始图省事用HTTP轮询,连接一多业务一复杂就明显顶不住——服务端压力大、客户端拿到的数据也不是实时的,高峰时段光无效请求就能把接口拖垮。…

2026/10/20 19:40:18 阅读更多 →
context-mode工程模式:从if-else泥潭到可维护的状态管理

context-mode工程模式:从if-else泥潭到可维护的状态管理

1. 从“上下文模式”这个命名说起:它到底在解决什么问题第一次看到“context-mode”这个词,很多人会下意识觉得它是个抽象概念,甚至怀疑它是不是又一个被过度包装的技术名词。但如果你真正在工程一线待过,尤其是在做对话系统、状态…

2026/10/20 19:40:18 阅读更多 →
select单线程高并发服务器:原理、实现与C代码实战

select单线程高并发服务器:原理、实现与C代码实战

你有没有算过这样一笔账:一个客户端占一个线程,一千个客户端就得开一千个线程,默认线程栈按 8MB 算,光栈空间就要 8GB。更不用说线程多了以后调度器在那边疯狂切换,锁竞争、死锁、共享数据打架,调一个并发 …

2026/10/20 19:40:18 阅读更多 →
AI教材写作如何降低查重率?从原理到实战的完整指南

AI教材写作如何降低查重率?从原理到实战的完整指南

上周,某高校教研组的A老师抱着一沓教材初稿找我,说AI生成的“专业基础课讲义”内容完整、目录清晰,结果一查重,直接超过40%。她说了一句让我印象极深的话:“我不理解,这些内容明明是我自己让AI按教材大纲写…

2026/10/20 19:40:18 阅读更多 →
MATLAB GUI定时器实战:用timer实现实时时钟与可重置倒计时

MATLAB GUI定时器实战:用timer实现实时时钟与可重置倒计时

简介:这是一份面向MATLAB GUI初学者的定时任务功能案例资源,针对需要掌握timer函数与TimerFcn回调机制、实现动态界面更新的开发者。资源包含两个可直接运行的Demo:第一个Demo每间隔1秒获取系统时间并在编辑框实时刷新;第二个Demo…

2026/10/20 19:40:18 阅读更多 →
MSA存储入门指南:从SAN协议到选型场景的全面解析

MSA存储入门指南:从SAN协议到选型场景的全面解析

简介:这份文档面向备考H3C认证工程师-MSA存储(H3CNE-MSA)的技术人员与H3C代理服务工程师,聚焦MSA存储设备基础配置与维护知识,帮助读者在有限时间内系统梳理考点、检验掌握程度。资源为1个docx文件,压缩包约…

2026/10/20 19:39:14 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →