发布时间:2026/7/23 7:31:34
从零学会规范写 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 全套实战干货

相关新闻

2026/7/23 7:31:34

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

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

2026/7/23 7:31:34

Linux 查找文件指令总结

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

2026/7/23 7:31:34

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

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

2026/7/23 9:11:39

FB账户是起点

做投放的你,一定遇到过这个怪事:同一条广告,同样的素材、出价、受众,换了个账户,效果一个天一个地。很多人第一反应是怪素材。但其实,更关键的原因藏在账户本身。你换的不是一个登录入口,换的是…

2026/7/23 9:11:39

账实核对、盘点管理一站式搞定,固资系统主要功能讲解

固定资产管理这件事,说大不大,说小也不小。一台设备几十万,漏盘一次、账实对不上一次,审计来的时候就够喝一壶的。很多企业目前还在用 Excel 管固定资产,盘点靠手抄、核对靠人眼,效率低不说,错漏…

2026/7/23 9:11:39

【Redis】5.常见命令

文章目录2. Redis 常见数据类型2.1 基础知识2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 String 字符串2.2.1 常见命令2.2.1.1 SET2.2.1.2 GET2.2.1.3 MSET:批量set2.2.1.4 MGET:批量get2.2.1.5 SETNX:不存在的话设置键值2. Redis 常见数据…

2026/7/23 9:11:39

Tiva™ TM4C123 GPTM定时器寄存器配置与中断管理实战指南

1. GPTM控制与中断管理:从寄存器到实战的深度解析 在嵌入式开发中,定时器是驱动整个系统心跳的核心。无论是实现一个简单的LED闪烁延时,还是构建一个复杂的电机FOC控制算法,其底层都离不开对通用定时器模块的精准操控。Tiva™ TM4…

2026/7/23 9:06:39

如何制定合理的装修预算方案?

在制定装修预算时,开始需要对自己的需求有清晰的认识。这包括对房间布局、功能需求的明确,以及对装修风格的基本构想。制定预算方案时,可以从轻工辅料、水电改造和主材三个主要方面入手。轻工辅料是指在装修中必不可少的材料,如涂…

2026/7/22 9:29:13

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/23 0:01:10

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

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

2026/7/22 21:00:12

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…