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

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( model="deepseek-chat", model_provider="openai", base_url=os.getenv("DEEPSEEK_BASE_URL"), api_key=os.getenv("DEEPSEEK_API_KEY"), temperature=0.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

当你需要插入聊天历史时,用MessagesPlaceholder

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个有用的助手。"), MessagesPlaceholder("history"), # 这里插入历史消息 ("human", "{question}"), ]) 调用时传入历史 prompt_value = prompt.invoke({ "history": [ ("human", "我叫小明"), ("ai", "你好小明!"), ], "question": "我叫什么名字?", })

参数说明

参数作用
optional=True允许不传 history,不报错
n_messages=4只保留最近 4 条消息,防止 token 爆表

简写形式

("placeholder", "{history}") # 等价于 MessagesPlaceholder("history", optional=True)

封装技巧:告别重复代码

每个案例都写一遍模型初始化?太累了!

创建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() return init_chat_model( model="deepseek-chat", model_provider="openai", api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("DEEPSEEK_BASE_URL"), temperature=temperature, )

以后一行搞定:

from model_factory import get_deepseek_model model = get_deepseek_model(temperature=0.5)

常见问题快问快答

Q:Prompt 越长越好吗?

A:不是!要求太多反而会让模型顾此失彼,保持清晰就够了。

Q:为什么模型没完全按要求输出?

A:大模型不是程序,不能百分百服从。后续可以结合结构化输出做校验。

Q:PromptTemplate 和 ChatPromptTemplate 选哪个?

A:聊天模型优先用 ChatPromptTemplate!这是现代应用的标配。

总结划重点

知识点一句话总结
Prompt 本质给模型的"任务说明书"
模板好处变量分离,复用 easy
PromptTemplate简单文本任务用
ChatPromptTemplate聊天模型首选
MessagesPlaceholder插入历史消息神器
编写公式角色 + 任务 + 输入 + 约束

觉得有用的话,点个赞再走呗~ 你的鼓励是我持续输出的动力!🎉

有问题欢迎评论区唠两句,一起学习一起进步!

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

相关文章:

  • 其实我们的知识竞赛也能做出电视节目的质感
  • 医疗医患纠纷场景评测|魔珐星云职场法务数字人线下咨询实测
  • 营销避坑指南:如何通过GEO发稿平台绕开90%的无效营销损耗
  • TM4C1294定时器GPTM实战:从CRC校验到PWM、输入捕获应用
  • Godot项目构建全流程解析:从导出预设到多平台部署实战
  • 工业时序数据库怎么选?多模融合架构实战,附写入性能与压缩比实测
  • 便携式ORP分析仪的产品功能分析
  • 2026年镇远美食避雷指南:用服务参数锁定好餐厅 - 万相科技
  • 2026 年当下,东营可靠的自动扫码面条机制造商推荐几家,扫码一扫就出面条?颠覆你的厨房想象! - 领域鉴赏官
  • 2026年7月最新泰格豪雅温州国金IFS维修保养服务电话 - 亨得利钟表维修中心
  • 深入TM4C1294 GPIO外设识别与EPI高速接口:从寄存器到实战优化
  • 深入解析C++函数:从参数传递到现代函数式编程实践
  • WebAssembly复刻Windows 1.0:技术实现与教育应用
  • 龙岗区二院智能住院系统与就医流程优化解析
  • 第30讲:实战——USART串口收发原型快速搭建+调试
  • 本地CDN部署优化VRChat资源加载实践
  • 也谈TDD,以及三层架构、设计模式、ORM……:没有免费的午餐
  • ERP物料编码乱码问题排查与解决方案
  • Unity开发进阶:从可视化编辑到面向对象编程的思维跃迁
  • 2026年镇远小吃避坑指南:锁定26年零预制老店 - 万相科技
  • 2026年宁波大型搬家公司联系方式与价格透明实力测评 - myqiye
  • Visual C++运行库终极修复指南:从原理到一键解决方案
  • 企业微信应用消息推送(Markdown与图文)的可靠性重试与限流设计
  • C++实现神经网络:从底层原理到高性能部署实战
  • 2025护颈仪深度测评:性能对比与选购指南
  • 亲身到店探访上海爱彼售后服务中心|地址与客服服务热线(2026年7月最新) - 爱彼中国官方服务中心
  • 笔类产品评测:从技术参数到使用体验的全面分析
  • 主流内网穿透汇总,全是大实话
  • 2026年7月海信洗衣机售后服务电话24小时全新专属热线升级公示最新公告 - 家电技术百科
  • 零代码组态让产线看板当天上线,HiWoo Edge 边缘监测一体机这么干