从零学会规范写 Prompt|LangChain 双模板详解 + 3 套可复用业务案例源码
一、本章学习目标结合前序 DeepSeek 模型调用、消息角色配置、对话历史存储知识点本章吃透 Prompt 标准化管理方案学完具备以下能力认知 Prompt 对大模型输出效果的决定性作用熟练区分并使用PromptTemplate、ChatPromptTemplate两套模板掌握模板变量注入实现提示词复用与解耦独立开发商品文案、学习规划、智能客服三大实用案例使用MessagesPlaceholder挂载、截断多轮对话历史二、Prompt 基础认知1. 什么是 PromptPrompt 就是给到大模型的整套指令集合包含角色定位、工作任务、约束规则、业务入参。极简写法一句话介绍 LangChain 框架企业标准写法你是专业电商运营根据商品信息撰写详情文案 约束150字以内、突出用户收益、禁止夸大宣传2. 为什么要用 Prompt 模板原生使用f-string硬拼接字符串写提示词存在诸多痛点代码臃肿冗余、变量拼接易出错、后期修改维护成本高。模板核心优势固定提示文本与动态业务变量分离一处编写多处复用迭代维护更简单。三、两大核心提示模板详解3.1 PromptTemplate纯文本模板适用场景无 system/user 角色区分单纯文本生成需求基础示例from langchain_core.prompts import PromptTemplate 定义模板{}标记变量占位符 tpl PromptTemplate.from_template(商品{product_name}卖点{selling_points}撰写一句宣传广告语) 填充变量渲染文本 prompt tpl.invoke({product_name: 罗技鼠标, selling_points: 静音、灵敏、无延迟}) 取出渲染后的字符串 print(prompt.text)3.2 ChatPromptTemplate对话模型首选当前主流大模型DeepSeek/GPT/通义千问均采用system、human、ai结构化消息交互该模板为项目开发标配。基础示例from langchain_core.prompts import ChatPromptTemplate tpl ChatPromptTemplate.from_messages([ (system, 身份电商文案师文案简洁写实拒绝浮夸话术), (human, 商品{product_name}卖点{selling_points}编写商品介绍文案) ]) prompt tpl.invoke({product_name: 罗技鼠标, selling_points: 静音、灵敏、无延迟}) 向模型传参必须传递完整 prompt 对象不要单独截取字符串3.3 两种模板核心对比模板名称输出格式角色支持推荐使用场景PromptTemplate纯文本字符串无原生角色区分简单单次文本生成、无对话交互ChatPromptTemplate结构化消息数组原生支持系统/用户/AI 消息聊天机器人、Agent、所有正式业务项目3.4 高质量 Prompt 编写四要素角色限定 AI 身份固定回答风格任务清晰描述需要 AI 完成的工作内容约束限制字数、格式、禁用词汇规避输出跑偏入参标注明确各个变量含义让 AI 精准识别业务数据四、实战案例公共封装模型工厂 model_factory.py消除每个文件重复的模型初始化代码统一管理 DeepSeek 配置# utils/model_factory.py import os from dotenv import load_dotenv from langchain.chat_models import init_chat_model def get_deepSeek_model(temperature: float 0.7): load_dotenv() model init_chat_model( modeldeepseek-v4-flash, model_provideropenai, base_urlos.getenv(DEEPSEEK_BASE_URL), api_keyos.getenv(DEEPSEEK_API_KEY), temperaturetemperature ) return model案例1商品文案自动生成from langchain_core.prompts import ChatPromptTemplate from utils.model_factory import get_deepSeek_model model get_deepSeek_model(temperature0.5) prompt_tpl ChatPromptTemplate.from_messages([ (system, 资深电商运营文案贴合用户体验不使用虚假宣传), (human, 商品名称{product_name} 商品卖点{selling_points} 目标用户{target_user} 要求文案150字以内重点描述用户使用后的实际好处) ]) prompt_val prompt_tpl.invoke({ product_name: 无线静音鼠标, selling_points: 静音按键、蓝牙连接、续航30天、机身轻便, target_user: 办公、图书馆学习的上班族 }) res model.invoke(prompt_val) print(res.content)案例2个性化学习计划生成from langchain_core.prompts import ChatPromptTemplate from utils.model_factory import get_deepSeek_model model get_deepSeek_model(temperature0.5) prompt_tpl ChatPromptTemplate.from_messages([ (system, 编程教学规划师输出落地可执行的学习方案搭配每日练习), (human, 学习科目{topic} 总学习天数{days}天 每日可用时长{hours_per_day}小时 自身基础{level} 需求按天划分学习内容同步配套实操练习) ]) prompt_val prompt_tpl.invoke({ topic: LangChain框架, days: 3, hours_per_day: 1, level: 掌握Python基础语法 }) res model.invoke(prompt_val) print(res.content)案例3电商客服智能回复from langchain_core.prompts import ChatPromptTemplate from utils.model_factory import get_deepSeek_model model get_deepSeek_model(temperature0.7) prompt_tpl ChatPromptTemplate.from_messages([ (system, 电商客服回复先安抚用户情绪客观说明问题并给出解决方案全文120字以内), (human, 用户提问{user_question}订单状态{order_status}物流详情{shipping_info}) ]) prompt_val prompt_tpl.invoke({ user_question: 快递三天物流没更新包裹是不是丢失了, order_status: 已发货, shipping_info: 包裹抵达上海转运中心暂未更新下级物流节点 }) res model.invoke(prompt_val) print(res.content)五、MessagesPlaceholder 对话历史占位符5.1 核心作用普通变量仅能传入一段文本MessagesPlaceholder支持批量插入多条历史对话消息是实现多轮上下文记忆的核心组件同时支持裁剪历史消息条数防止上下文超长溢出。5.2 参数说明参数释义variable_name绑定变量名称调用入参名称必须保持一致optional默认 False不传历史会报错True 代表历史为空也可正常运行n_messages仅读取最近 N 条对话管控上下文长度5.3 完整可运行示例from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from utils.model_factory import get_deepSeek_model model get_deepSeek_model(temperature0.7) chat_tpl ChatPromptTemplate.from_messages([ (system, 友好的通用问答助手), MessagesPlaceholder(variable_namehistory, optionalTrue, n_messages4), (human, {question}) ]) res model.invoke(chat_tpl.invoke({ history: [(human, 我叫Alice), (ai, 很高兴认识你Alice)], question: 请问我的名字是什么 })) print(res.content)⚠️ 注意history 入参必须是消息列表格式禁止直接传入普通字符串六、本章知识总结 常见问题解答核心总结正式项目优先使用ChatPromptTemplatePromptTemplate只用于简单纯文本生成场景模板实现提示词与业务数据解耦大幅提升代码可维护性MessagesPlaceholder专门用来托管、截断多轮对话上下文高频问题答疑Prompt 写得越长回答效果越好答并非越长越好指令逻辑清晰精简即可过多的约束条件会造成模型顾此失彼输出更容易混乱。模型无法严格按照我的指令输出怎么办大模型属于概率生成式模型无法做到 100% 严格执行指令如果对输出格式、字段有强约束后续章节会讲解结构化输出、代码校验的解决方案。 码字不易如果文章对你有帮助点赞收藏不迷路后续持续更新 LangChain 全套实战干货

相关新闻

C++多进程编程深度解析:从fork到IPC实战应用

C++多进程编程深度解析:从fork到IPC实战应用

1. 项目概述:为什么需要深入理解C多进程编程?在C开发者的日常工作中,尤其是当项目从单机玩具程序迈向高性能服务器、复杂桌面应用或系统级工具时,一个绕不开的话题就是并发与并行。我们常听到多线程,但多进程编程往往被…

2026/7/23 7:31:42阅读更多 →
Linux 查找文件指令总结

Linux 查找文件指令总结

一、find(最强大、最常用)基本语法find [搜索路径] [匹配条件] [执行动作]按名称查找# 精确匹配文件名 find / -name "test.txt"# 忽略大小写 find /home -iname "Readme.md"# 通配符匹配 find /var -name "*.log" find /…

2026/7/23 7:31:42阅读更多 →
嵌入式I2C通信实战:从寄存器配置到驱动实现与故障排查

嵌入式I2C通信实战:从寄存器配置到驱动实现与故障排查

1. 项目概述:从寄存器位到通信总线在嵌入式开发的底层世界里,我们写的每一行C代码,最终都要落到芯片内部那些由0和1组成的寄存器上。很多人觉得寄存器编程枯燥,无非是查手册、写数值。但在我看来,真正理解一个外设&…

2026/7/23 7:31:42阅读更多 →
TMS470 ARM7开发套件快速入门:从环境搭建到LED闪烁实战

TMS470 ARM7开发套件快速入门:从环境搭建到LED闪烁实战

1. 从零到一:TMS470 IAR KickStart套件开箱与初体验 如果你刚拿到TI的TMS-FET470A256 IAR KickStart开发套件,面对一堆板卡、线缆和光盘,可能会有点无从下手。别担心,这几乎是每个嵌入式工程师的必经之路。我当年第一次接触TMS470…

2026/7/23 9:04:10阅读更多 →
【K8S 运维实战】10-配置与密钥ConfigMap

【K8S 运维实战】10-配置与密钥ConfigMap

配置与密钥:ConfigMap、Secret 与外部配置中心 一句话定位:ConfigMap 热更新的坑 Secret 到底安不安全 Vault 集成实操。 写在前面 "我改了 ConfigMap,为什么 Pod 里的配置还是老的?"这个问题我每年要回答 50 遍。还有一类高频问题:“Secret 是 base64 编码,这不…

2026/7/23 9:04:10阅读更多 →
【K8S 运维实战】09-服务暴露Service与Ingress

【K8S 运维实战】09-服务暴露Service与Ingress

服务暴露:Service、Ingress 与流量治理 一句话定位:ClusterIP/NodePort/LoadBalancer 怎么选 Ingress 生产配置 金丝雀实操。 写在前面 新人最常问的两个问题:"我的 Service 有 ClusterIP 但访问不通,为什么?“和"Ingress 配了但 404,到底哪层出了问题?”。这两…

2026/7/23 9:04:10阅读更多 →
成人书法国画也太香了‼️

成人书法国画也太香了‼️

👋家人们,你们是不是也和我一样,每次看到别人写毛笔字、画国画,都觉得自己手残得不行?😭 想学又怕零基础学不会,或者囤了材料在家吃灰?别怕,我也是这么过来的&#xff01…

2026/7/23 9:04:10阅读更多 →
50个实战运维项目解析:从基础架构到云原生

50个实战运维项目解析:从基础架构到云原生

1. 项目背景与价值解析 在IT运维领域,真正能让HR眼前一亮的简历往往不是那些罗列技术栈的"技能清单",而是能体现实际问题解决能力的项目经验。我见过太多候选人写着"熟悉Linux、掌握Docker",但当被问到具体实施细节时却支…

2026/7/23 9:04:10阅读更多 →
SpaceX工程数据训练Grok 2T:专业数据驱动AI模型的技术解析

SpaceX工程数据训练Grok 2T:专业数据驱动AI模型的技术解析

马斯克确认SpaceX工程数据将训练Grok 2T模型的消息,让整个AI行业重新思考一个问题:当火箭发射、卫星部署、太空探索这样的高精度工程数据被用于训练大语言模型时,会产生什么样的化学反应?这不仅仅是又一个"大数据训练大模型&…

2026/7/23 9:02:10阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →