手撕Prompt?Out了!LangChain模板引擎,让你像‘拼乐高’一样开发AI应用
我挖掘了一个巨牛的 人工智能 学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
前言
在大模型应用开发中,提示词(Prompt)是连接开发者与LLM的核心桥梁。很多新手开发时,习惯手动硬编码拼接提示词,不仅代码冗余、复用性极差,还会出现格式不统一、维护成本高、迭代困难等问题。
LangChain 提供了PromptTemplate(提示词模板)核心抽象组件,完美解决以上痛点。它支持动态参数填充、结构化消息配置、多场景复用,是所有LangChain应用、AI对话机器人、工具Agent开发的基础核心能力。
本文将从零拆解提示词模板核心概念、两类主流模板用法、消息占位符高阶技巧,最后实战演示 LangChain Hub 公共模板拉取与使用,所有代码均可直接复制落地运行。
一、提示词模板(PromptTemplate)核心概念
1.1 什么是提示词模板?
提示词模板是 LangChain 核心可复用组件,本质是一套带占位符的提示词蓝图。我们只需提前定义固定文本结构与动态变量,运行时传入具体参数,即可自动生成完整、规范、统一的LLM请求提示词。
简单类比:等同于编程中的字符串格式化,告别手动拼接文本,实现提示词的标准化生产。
1.2 传统硬编码 VS 模板写法
❌ 传统写法(冗余、不可复用)
如果需要查询不同城市的历史,需要重复编写大量相似文本:
HumanMessage("请介绍上海的历史")
HumanMessage("请介绍西安的历史")
HumanMessage("请介绍北京的历史")
✅ 模板写法(一次定义、无限复用)
定义通用模板:请介绍{city}的历史,仅需动态替换 city 变量,即可生成任意城市的查询提示词。

1.3 提示词模板四大核心价值
-
可复用性:一套模板适配无数相似业务场景,无需重复编写提示词;
-
关注点分离:提示词工程师专注优化模板逻辑,业务代码专注传入动态参数;
-
输出一致性:统一LLM请求格式,让模型输出更稳定、可预测;
-
易维护性:迭代提示词风格、规则、结构时,仅需修改模板,无需全局改代码。
二、两大核心模板实战用法
LangChain 针对不同场景,提供两套核心模板:字符串模板(PromptTemplate) 适配基础文本模型,聊天模板(ChatPromptTemplate) 适配主流对话模型(GPT-3.5/4、通义千问等),两者均实现 Runnable 接口,支持链式调用。
2.1 字符串模板:PromptTemplate
适用于纯文本生成场景,无角色区分,是最基础、最轻量化的提示词模板,核心参数:
-
template:提示词模板文本,包含{变量名}占位符; -
input_variables:模板中所有动态变量名列表。
支持两种初始化方式,效果完全一致:
from langchain_core.prompts import PromptTemplate
# 方式1:快捷初始化(推荐)
prompt_template = PromptTemplate.from_template("Translate the following into {language}")
# 方式2:原生初始化
prompt_template = PromptTemplate(
input_variables=["language"],
template="Translate the following into {language}"
)
# 动态填充变量
result = prompt_template.invoke({"language": "Chinese"})
print(result)
# 输出:text='Translate the following into Chinese'
2.2 聊天模板:ChatPromptTemplate(重点)
当前AI开发首选模板,专门适配聊天大模型,支持分层定义 系统指令、用户提问、AI回复 多角色消息,完美贴合Chat模型的消息交互逻辑。
模板中可直接配置多角色消息组,同时支持多动态变量填充,结合LCEL链式调用可实现极简开发。
如下代码所示:
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
model = init_chat_model("deepseek-chat",model_provider="deepseek")
#注意提示词模板就是一个runnable实例
chat_prompt_template = ChatPromptTemplate(
[
("system",
"""你是专业翻译器,严格遵守以下规则:
1. 将用户提供文本,从{language_from}精准翻译成{language_to};
2. 只输出翻译后的结果,**绝对不能输出原文**;
3. 不要解释、不要额外对话、不要反问,仅返回译文;
4. 禁止复述用户输入的句子。"""),
("user","{text}"),
]
)
messages = chat_prompt_template.invoke(
{
"language_from":"英文",
"language_to":"中文",
"text":"hi,who are you?",
}
)
model.invoke(messages).pretty_print()
输出结果就是:
你好,你是谁?
解析代码:
创建对话提示词模板(核心:Prompt Template)
关键点拆解
- 结构:传入二元元组列表区分对话角色
("system", 内容):系统指令,定义模型身份、行为约束;内部有两个占位符{language_from}、{language_to};("user", 内容):用户输入区域,占位符{text}存放待翻译原文;
- 占位符:
{language_from}{language_to}{text}是三个动态变量,运行时必须传入对应值填充; - 重要特性:注释写了「提示词模板就是一个 runnable 实例」
ChatPromptTemplate实现了 Runnable 接口,自带.invoke()方法,可以接收变量字典、自动替换占位符,输出完整消息列表。
由于ChatPromptTemplate同样也实现了标准的Runnable接口,因此我们还可以通过链来完成
调用。如下所示:
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
model = init_chat_model("deepseek-chat",model_provider="deepseek")
#注意提示词模板就是一个runnable实例
chat_prompt_template = ChatPromptTemplate(
[
("system",
"""你是专业翻译器,严格遵守以下规则:
1. 将用户提供文本,从{language_from}精准翻译成{language_to};
2. 只输出翻译后的结果,**绝对不能输出原文**;
3. 不要解释、不要额外对话、不要反问,仅返回译文;
4. 禁止复述用户输入的句子。"""),
("user","{text}"),
]
)
chain = chat_prompt_template | model
chain.invoke(
{
"language_from": "中文",
"language_to": "英文",
"text": "天青色等烟雨,而我在等你~",
}
).pretty_print()
输出结果:
================================== Ai Message ==================================
The sky is waiting for misty rain, and I am waiting for you~
该模板的核心优势:角色分层清晰、结构规范、支持流式输出,是对话机器人、翻译、问答类应用的标准写法。
三,使用LangChainHub的提示词模板
3.1、LangChain Hub 是什么
- 定位:专门用来上传、浏览、拉取、共享、管理提示词模板的在线平台,对标代码领域的 GitHub。
- 诞生背景 提示工程在大模型开发中权重越来越高,需要一个平台统一分享、复用优质 Prompt,方便开发者协作、复用、微调提示词,加快 LLM 应用开发。
- 平台历史变化 早期 Hub 支持上传 Prompt / Chain / Agent;现在平台仅保留 Prompt 模板 分享功能。
- 访问地址
https://smith.langchain.com/hub/登录 LangSmith 账号即可浏览、搜索、收藏全网公开提示词。
3.2、核心价值
- 复用成熟高质量提示词,不用从零手写;
- 提示工程师之间协作、共享、迭代优化模板;
- 可基于公共模板二次修改微调,适配自身业务;
- 统一标准化 Prompt 分发,减少重复提示词开发工作。
3.3、使用教程
我们在使用LangChain Hub之前,我们需要需要先申请并配置LangSmith环境变量:
下面是操作实操
首先点击settings

进入界面后,点击右上角+ API Key

然后过期日期填写永不过期,不然过一阵时间还要重新申请。
描述description就默认填写

选项填写完毕后,直接创建,就会自动弹出你的API Key,注意要先复制!
接下来配置两个环境变量
LANGSMITH_TRACING="true"
LANGSMITH_API_KEY="你的 LangSmith API Key"

配置完成后,重启我们的编译器,就完成环境配置,可以从LangChain hub上找自己喜欢的提示词。
3.4、示例模板:hardkothari/prompt-maker
平台收藏量最高的公共提示词模板,功能是提示词自动生成器。
作用:
接收两个入参 task(你的业务任务)、lazy_prompt(你简陋原始提示词),这两个入参也就是两个占位符~调用链时传入对应值完成填充。
输入你的任务需求,它会自动帮你生成一段专业、规范、约束完善的系统提示词,优化模型输出效果。

这里可以直接复制粘贴python sdk
调用原码:
# Create a LangSmith API in Settings > API Keys
# Make sure API key env var is set:
# import os; os.environ["LANGSMITH_API_KEY"] = "<your-api-key>"
from langchain.chat_models import init_chat_model
from langsmith import Client
client = Client()
#prompt就是一个提示词模板,Runnable示例
prompt = client.pull_prompt("hardkothari/prompt-maker",
dangerously_pull_public_prompt=True)
# 定义模型
model = init_chat_model("deepseek-v4-flash", model_provider="deepseek")
# 定义链
chain = prompt | model
while True:
task = input("\n你的任务是什么?(输⼊ quit 退出聊天)\n")
if task == 'quit':
break
lazy_prompt = input("\n你当前的提⽰是什么?(输⼊ quit 退出聊天)\n")
if lazy_prompt == 'quit':
break
chain.invoke({'lazy_prompt': lazy_prompt, 'task': task}).pretty_print()
输出结果:
你的任务是什么?(输⼊ quit 退出聊天)
做一个python游戏
你当前的提⽰是什么?(输⼊ quit 退出聊天)
你是python专家
================================== Ai Message ==================================
作为Python游戏开发专家,请根据以下要求,为我设计并生成一个完整的Python游戏。
### 游戏类型与核心机制
- 请选择一款经典、易于实现的小游戏(例如:猜数字、贪吃蛇、井字棋、打砖块等),并说明选择理由。
- 游戏需包含至少以下功能:
- 用户输入(键盘或鼠标)
- 得分/回合记录
- 游戏结束条件及重新开始选项
- 若使用图形界面,推荐使用pygame或turtle库;若为文字界面,则使用input()与print()。
### 代码要求
- 提供完整可运行的Python代码,并包含必要的注释(中英文皆可)。
- 代码结构清晰,函数划分合理(例如:初始化、游戏循环、事件处理、渲染/输出)。
- 尽量遵循PEP 8编码规范。
### 输出格式
1. 首先简要描述游戏玩法与规则。
2. 然后列出所需的库或依赖(例如:`pygame`、`random`等)。
3. 接着给出完整代码,并用```python ```代码块包裹。
4. 最后提供运行说明(如:运行环境、启动命令)。
### 示例风格(以供参考)
“欢迎来到『猜数字』游戏!我随机生成一个1-100之间的整数,请你猜猜是多少。每次猜测后,我会告诉你猜高了还是低了。看看你最少需要几次猜中!”
---
请开始你的设计。
你的任务是什么?(输⼊ quit 退出聊天)
quit
总结:
通过使用这个模板,可以大大减少手动调整提示所需的工作量,从而节省时间和资源。Prompt Maker通过分析初始提示的结构和内容,然后应用一组预定规则或算法来优化提示,以提高响应质量、清晰度和相关性。这在提示的质量对模型的输出有很大影响的场景中特别有用,比如客户服务机器人、对话代理或数据分析任务。
五、核心知识点总结(面试/落地必背)
-
PromptTemplate:基础字符串模板,适用于简单文本生成,无角色分层;
-
ChatPromptTemplate:聊天模型专用模板,支持system/human/ai多角色,生产环境首选;
-
MessagesPlaceholder:消息占位符,专门用于批量注入多轮历史对话,实现上下文记忆;
-
所有模板均实现
Runnable接口,支持 LCEL 管道链式调用,搭配模型、解析器极简开发; -
LangChain Hub:官方Prompt共享平台,可一键复用社区优质模板,快速实现提示词工程优化。
结语
提示词模板是 LangChain 开发的基石,告别硬编码Prompt,掌握模板化、结构化、可复用的提示词开发思维,是从“玩具Demo”走向工程级AI应用的关键一步。
本文覆盖了基础模板、聊天模板、高阶占位符、公共Hub模板全场景实战,熟练掌握后,可快速搭建标准化、易维护、高稳定性的大模型对话、生成、Agent应用。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)