LangChain提示词模板解决了LLM应用开发中的两大挑战:复杂输入组合和代码复用。文章详细介绍了四种核心包装器:基础PromptTemplate、支持消息列表的ChatPromptTemplate、支持动态示例的FewShotPromptTemplate,以及用于组合多个子模板的PipelinePromptTemplate。通过这些工具,开发者可以将提示词从"一段文本"提升为"可管理、可组合、可测试的工程化组件",构建标准化、模块化且易于迭代的LLM应用。


在开发基于大语言模型(LLM)的应用时,常常会面临两个挑战:一是,如何将复杂的用户输入、上下文指令和任务示例,组合成模型能理解的提示词(Prompt);二是,在应用迭代中,如何避免 Prompt 代码的散落和重复,实现高效复用与维护。

早期的“字符串拼接”方式脆弱且混乱,而手工编写的 Prompt 也难以保证一致性与最佳效果。这正是 LangChain 提示词模板(Prompt Templates) 所要解决的根本问题,想要将 Prompt 从“一段文本”提升为“一个可管理、可组合、可测试的工程化组件”的关键模块。

本文将系统剖析 LangChain 提示词模板的设计思想与使用实践。不仅可以了解到 PromptTemplate 和 ChatPromptTemplate 等基础模板的用法,更能掌握如何通过 FewShotPromptTemplate 注入示例、利用管道组合复杂流程,从而构建出标准化、模块化且易于迭代的LLM应用。

01

LangChain 的提示词模板

在 LangChain 中使用提示词模板,是一个将零散的指令和变量,标准化、模块化为可复用组件的过程。

在 LangChain 框架中,提示词是由 PromptTemplate 这个包装器对象生成的。每一个 PromptTemplate 类的实例都定义了一种特定类型的提示词格式和生成规则。想要构造提示词,就要学会使用这个包装器的使用。

一般会包含以下 3 个元素:

(1)明确的指令:指导大模型理解用户的需求,并按照特定的方式进行回应。

(2)少量示例:帮助大模型更好地理解任务,并生成更专缺的响应。

(3)用户输入:用户的交互内容,可以直接引导大模型生成特定回应。

1、提示词模板的输入

在 LangChain 中,开发这向提示词模板殊途的数据有很多来源,可以分为内部数据和外部数据。

内部数据是指被 LangChain 框架封装好的数据,以及开发者写的案例和需求描述文本,这些提示词被预先定义在源码 prompt.py 文件中,使用时导入即可。

外部数据是指开发者自由添加的数据。最主要的外部数据是用户的输入、用户和模型的历史聊天记录,以及开发者额外增加的知识库、运行的上下文信息等。

2、提示词模板的输出

在 LangChain 中,提示词模板输出的是适用于各种模型平台 API 类型的提示词。可以这样理解,当开发者调用 ChatGPT API 接口时,本来是需要按照接口规范进行对接,现在 LangChain 框架已经封装好了,在调用时 PromptTemplate 包装器会生成符合 API 要求的提示词。

02

PromptTemplate 包装器

1、PromptTemplate 包装器

PromptTemplate 是 LangChain 提示词组件中最核心的一个类,构造提示词的步骤本质上是实例化这个类的过程。PromptTemplate 包装器接受内部数据(实例化定义的 template 和 input_variables)和外部数据,在使用链调用时,外部数据是通过链组件传递的,不是直接传递给提示词模板包装器的。

from langchain import PromptTemplate
template = """
你是一个旅游专家,请根据用户提出的描述:{msg},给出建议。
"""
# 实例化模板的第一种方式
prompt = PromptTemplate(template=template, input_variables=["msg"])
# 实例化模板的第二种方式
# prompt = PromptTemplate.from_template(template)
# 将用户的输入通过 format 方法嵌入提示词模板,并且做格式化处理
final_prompt = prompt.format(msg="xxx")
print(final_prompt)

运行后:

2、ChatPromptTemplate 包装器

ChatPromptTemplate 包装器与 PromptTemplate 包装器不同,ChatPromptTemplate 的构造的提示词是消息列表,支持输出 Message 对象。

LangChain 提供了内置的聊天提示词模板和角色消息提示词模板。角色消息提示词模板包括 AIMessagePromptTemplate、SystemMessagePromptTemplate、HumanMessagePromptTemplate 这3种。

from langchain.prompts import (
ChatPromptTemplate,
PromptTemplate,
SystemMessagePromptTemplate,
AIMessagePromptTemplate,
HumanMessagePromptTemplate
)
template = """
你是一个旅游专家。
"""
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "请根据用户提出的描述:{msg},给出建议"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
chat_prompt = ChatPromptTemplate.from_messages([
system_message_prompt,
human_message_prompt
])
final_prompt = chat_prompt.format_prompt(msg="xxx")
print(final_prompt.to_string())

运行后(与上面是一样的效果,可以对比下):

3、FewShotPromptTemplate 包装器

FewShotPromptTemplate 是 LangChain 内置的一个少样本提示词模板,其独特在于支持动态添加示例和选择示例。

FewShotPromptTemplate 类在参数上多了一些内容,比如 examples 和 example_selector,这些参数可以在实例化时添加,也可以在运行时动态添加。

from langchain.prompts import FewShotPromptTemplate
template = """
词语:{input},反义词是:{output}
"""
example_prompt = PromptTemplate(template=template, input_variables=["input", "output"])
examples = [
{"input": "高", "output": "矮"},
{"input": "胖", "output": "瘦"},
{"input": "黑", "output": "白"},
]
few_shot_prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix="来玩个游戏,我说正义词,你回答它的反义词",
suffix="现在轮到你了,正义词:{input},反义词",
input_variables=["input"]
)
final_prompt = few_shot_prompt.format(input="高")
print(final_prompt)

运行后:

4、PipelinePromptTemplate 包装器

PipelinePromptTemplate 是 LangChain 中用于组合串联多个子提示模板的高级工具。它的核心设计思想是 “分治”与“组装”,将一个复杂的提示工程任务,拆解为多个逻辑独立、可复用的子模板,再像管道一样将它们有序地连接,形成最终的完整提示。

from langchain.prompts import PromptTemplate
# 1. 角色定义模板:定义助手的基本身份和风格
role_template = """你是一名{company}的{style}技术支持专家。
你必须根据提供的产品知识库和对话历史来回答问题。
如果知识库中没有相关信息,请如实告知,切勿编造。"""
role_prompt = PromptTemplate.from_template(role_template)
# 2. 知识库模板:从外部系统查询并注入相关知识
kb_template = """【相关产品知识】
{knowledge_base}
"""
kb_prompt = PromptTemplate.from_template(kb_template)
# 3. 历史对话模板:管理多轮对话的上下文
history_template = """【对话历史】
{dialog_history}
"""
history_prompt = PromptTemplate.from_template(history_template)
# 4. 当前问题模板:格式化用户的最新输入
question_template = """【用户当前问题】
{human_input}"""
question_prompt = PromptTemplate.from_template(question_template)
# 定义最终提示的“总装图纸”
final_template = """{role_instruction}
{knowledge_context}
{conversation_context}
请基于以上信息,专业、清晰地回答用户问题:
{final_question}
"""
final_prompt = PromptTemplate.from_template(final_template)
# 创建 PipelinePromptTemplate,建立子模板到最终模板变量的映射关系
from langchain.prompts import PipelinePromptTemplate
pipeline_prompt = PipelinePromptTemplate(
final_prompt=final_prompt, # 指定最终组装的模板
pipeline_prompts=[
# 格式: (在final_prompt中的变量名, 对应的子模板)
("role_instruction", role_prompt),
("knowledge_context", kb_prompt),
("conversation_context", history_prompt),
("final_question", question_prompt)
]
)
# 准备输入变量(通常来自应用的不同模块)
input_data = {
"company": "天颖科技",
"style": "耐心且专业",
"knowledge_base": "产品‘天颖AI’支持OCR等功能。最新版本为v2。",
"dialog_history": "用户:天颖AI支持什么功能?\n助手:支持图生图功能。",
"human_input": "那它的最新版本是多少?"
}
# 格式化管道提示,引擎会自动按顺序调用所有子模板并组装
full_prompt_text = pipeline_prompt.format(**input_data)
print(full_prompt_text)

运行后:

可以看出在复杂的情形下,需要用到组合模板。

03

技巧与避坑

1、小技巧

(1)优先使用 from_template 方法

这是最简洁的创建方式,能自动提取变量名,避免手动声明 input_variables 的错误。

# 推荐
prompt = PromptTemplate.from_template(“翻译成{language}:{text}“)
# 繁琐且易错
prompt = PromptTemplate(input_variables=[“language“, “text“], template=“...”)

(2)为变量提供清晰的描述或示例

在模板注释或变量名中说明期望的输入,这对协作非常有帮助。

template = """
角色:{role_description}   # 例如:'一位严格的历史老师'
任务:根据以下大纲,生成一份{output_length}的课程讲义。
大纲:{outline}
"""

2、常见陷阱

(1)变量不匹配:确保 format() 时提供的变量名与模板中定义的完全一致。善用 .partial() 可以减少此类错误。

(2)特殊字符转义:如果模板内容中包含 { 或 } 但不作为变量,需根据模板格式(f-string 或 Jinja2)进行正确转义。

(3)忘记调用 .to_messages():使用 ChatPromptTemplate 格式化后,发送给模型前务必调用 .to_messages(),而不是直接传递字符串。

之前看到有留言说到 LangChain1.0 版本问题,因为 1.0 版本今年下半年刚升级,有很多存量项目还是以前的版本,后续也会更新 LangChain1.0 相关文章,其实主要还是以思想为主,编程思想更重要。

AI时代,未来的就业机会在哪里?

答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具,到自然语言处理、计算机视觉、多模态等核心领域,技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。

在这里插入图片描述

掌握大模型技能,就是把握高薪未来。

那么,普通人如何抓住大模型风口?

AI技术的普及对个人能力提出了新的要求,在AI时代,持续学习和适应新技术变得尤为重要。无论是企业还是个人,都需要不断更新知识体系,提升与AI协作的能力,以适应不断变化的工作环境。

因此,这里给大家整理了一份《2026最新大模型全套学习资源》,包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等,带你从零基础入门到精通,快速掌握大模型技术!

由于篇幅有限,有需要的小伙伴可以扫码获取!
在这里插入图片描述

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。

在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

为什么大家都在学AI大模型?

随着AI技术的发展,企业对人才的需求从“单一技术”转向 “AI+行业”双背景。企业对人才的需求从“单一技术”转向 “AI+行业”双背景。金融+AI、制造+AI、医疗+AI等跨界岗位薪资涨幅达30%-50%。

同时很多人面临优化裁员,近期科技巨头英特尔裁员2万人,传统岗位不断缩减,因此转行AI势在必行!

在这里插入图片描述

这些资料有用吗?

这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

在这里插入图片描述
在这里插入图片描述

大模型全套学习资料已整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费】

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐