LangChain Day2 课程:提示词模板 + Chain 链精讲

目标:吃透提示词模板与 Chain 核心用法,能独立写出基础问答、串行流程代码,为后续 RAG/Agent 打牢基础。


一、课程核心目标

✅ 掌握 3 种提示词模板的用法与场景 ✅ 理解 Chain 的本质:把组件串成自动化流水线 ✅ 熟练使用 5 种高频链(LLMChain / 顺序链 / 检索链 / 对话链) ✅ 写出可直接运行的示例代码,理解每一步作用


二、Part1:提示词模板精讲(1 小时)

1. 为什么要用提示词模板?

避免手动拼接字符串,实现代码复用、格式统一、易维护,减少错误。

2. 三类模板详解

(1)PromptTemplate:基础单轮模板
  • 适用场景:单次独立问答、知识点讲解、固定格式生成
  • 核心用法:input_variables声明变量,template定义格式

python

运行

复制代码
from langchain.prompts import PromptTemplate

# 1. 定义模板
template = "请用通俗易懂的语言,给前端工程师解释:{knowledge}"
prompt = PromptTemplate(
    input_variables=["knowledge"],  # 变量名,后续传参必须一致
    template=template
)

# 2. 填充变量
formatted_prompt = prompt.format(knowledge="向量数据库")
print(formatted_prompt)
(2)ChatPromptTemplate:对话角色模板
  • 适用场景:多轮对话、设定系统角色、区分用户 / 助手消息
  • 核心角色:system(系统规则)、human(用户提问)、ai(模型回复)

python

运行

复制代码
from langchain.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是资深大模型技术讲师,回答简洁易懂,避免术语堆砌"),
    ("human", "什么是LangChain的Chain链?"),
    ("ai", "Chain链就是把多个组件串成一条自动化流水线,自动执行多步骤任务"),
    ("human", "那它和直接调用大模型有什么区别?")
])
formatted_prompt = prompt.format()
print(formatted_prompt)
(3)FewShotPromptTemplate:少样本提示模板
  • 适用场景:约束输出格式、统一回答风格、给模型示例参考

python

运行

复制代码
from langchain.prompts import FewShotPromptTemplate, PromptTemplate

# 示例数据
examples = [
    {"input": "LangChain", "output": "LangChain是用于构建大模型应用的开发框架"},
    {"input": "RAG", "output": "RAG是检索增强生成,用于让大模型基于私有文档回答问题"}
]

# 示例模板
example_prompt = PromptTemplate(
    input_variables=["input", "output"],
    template="问题:{input}\n回答:{output}"
)

# 少样本模板
few_shot_prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    suffix="问题:{question}\n回答:",
    input_variables=["question"]
)

print(few_shot_prompt.format(question="Chain链是什么?"))

三、Part2:Chain 链精讲(2 小时)

1. Chain 的本质

把多个 LangChain 组件(模型、提示词、工具)按顺序组合,实现自动化执行流程,不用分步手动调用。

2. 五大高频链详解(附代码)

(1)LLMChain:基础问答链(入门必学)
  • 作用:绑定提示词模板 + 大模型,处理单次独立任务

python

运行

复制代码
from langchain_openai import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# 初始化模型
llm = OpenAI(temperature=0.2)

# 定义模板
template = "请用一句话解释:{concept}"
prompt = PromptTemplate(input_variables=["concept"], template=template)

# 组装链
llm_chain = LLMChain(llm=llm, prompt=prompt)

# 执行链
result = llm_chain.run(concept="向量数据库")
print(result)
(2)SimpleSequentialChain:简易顺序链(单入单出)
  • 作用:上一步结果直接作为下一步输入,适合简单两步流程

python

运行

复制代码
from langchain.chains import SimpleSequentialChain, LLMChain

# 第一步:解释名词
chain1 = LLMChain(
    llm=llm,
    prompt=PromptTemplate(input_variables=["topic"], template="详细解释:{topic}")
)

# 第二步:精简成一句话
chain2 = LLMChain(
    llm=llm,
    prompt=PromptTemplate(input_variables=["content"], template="精简成一句话:{content}")
)

# 组装顺序链
total_chain = SimpleSequentialChain(chains=[chain1, chain2])

# 执行
result = total_chain.run("大模型RAG")
print(result)
(3)SequentialChain:标准顺序链(多入多出)
  • 作用:支持多输入、多输出,适合复杂多步骤业务

python

运行

复制代码
from langchain.chains import SequentialChain

# 链1:生成原理
chain1 = LLMChain(
    llm=llm,
    prompt=PromptTemplate(input_variables=["tech"], template="简述{tech}工作原理"),
    output_key="principle"
)

# 链2:生成优缺点
chain2 = LLMChain(
    llm=llm,
    prompt=PromptTemplate(input_variables=["tech"], template="写出{tech}的优缺点"),
    output_key="advantage"
)

# 组装多入多出链
all_chain = SequentialChain(
    chains=[chain1, chain2],
    input_variables=["tech"],
    output_variables=["principle", "advantage"]
)

# 执行
res = all_chain.invoke({"tech": "Agent智能体"})
print("原理:", res["principle"])
print("优缺点:", res["advantage"])
(4)RetrievalQA:检索问答链(RAG 专用)
  • 作用:自动完成文档检索→上下文拼接→问答生成,用于知识库问答

python

运行

复制代码
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA

# 假设已有向量库(简化示例)
vectorstore = FAISS.from_texts(["LangChain是大模型应用开发框架"], embedding=OpenAIEmbeddings())
retriever = vectorstore.as_retriever()

# 组装检索问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever
)

# 提问
result = qa_chain.run("LangChain是什么?")
print(result)
(5)ConversationChain:对话记忆链
  • 作用:搭配记忆组件,实现多轮连贯对话

python

运行

复制代码
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

# 初始化记忆
memory = ConversationBufferMemory()

# 对话链
conv_chain = ConversationChain(llm=llm, memory=memory)

# 多轮对话
print(conv_chain.predict(input="我在学习LangChain"))
print(conv_chain.predict(input="帮我总结它的链功能"))

四、Part3:核心参数与易错点(30 分钟)

1. 关键参数区分

表格

参数 作用
input_variables 提示词模板的输入变量,需与后续传参名一致
chains 顺序链中存放子链的数组
output_key 单条子链的输出标识
output_variables SequentialChain 的整体输出字段集合
run()/invoke() 链的执行方法,功能等效,新版推荐invoke

2. 易错点提醒

  • ConversationChain必须手动传入memory,不会自带记忆
  • SimpleSequentialChain仅支持单入单出,无法传递多个独立变量
  • 提示词模板变量名必须和传参名完全一致,否则报错

五、课后作业(30 分钟)

  1. PromptTemplate写一个 "给前端工程师解释技术名词" 的模板,并调用LLMChain执行
  2. SimpleSequentialChain实现 "翻译英文句子→总结成一句话" 的流程
  3. SequentialChain实现 "输入一个技术名词,同时输出它的原理和应用场景"
  4. 简答题:区分PromptTemplateChatPromptTemplate的使用场景一、课后作业手把手拆解(带可运行代码)

作业 1:用 PromptTemplate + LLMChain 写 "给前端工程师解释技术名词"

目标:做一个固定格式的 "前端友好型技术解释器"

python

运行

复制代码
   from langchain_openai import OpenAI
   from langchain.prompts import PromptTemplate
   from langchain.chains import LLMChain

   # 1. 初始化模型
   llm = OpenAI(temperature=0.3)  # temperature控制回答的"创造性",0.3更严谨

   # 2. 定义提示词模板
   template = """
   你是一个懂前端的大模型讲师,用前端工程师听得懂的大白话,解释下面这个技术名词:
   {tech_term}

   要求:
   1. 类比前端概念(比如组件、API、状态管理)
   2. 不超过200字
   3. 举一个简单的使用场景
   """

   prompt = PromptTemplate(
       input_variables=["tech_term"],  # 变量名,和模板里的占位符必须一致
       template=template
   )

   # 3. 组装成LLMChain
   explain_chain = LLMChain(llm=llm, prompt=prompt)

   # 4. 执行调用
   result = explain_chain.run(tech_term="向量数据库")
   print(result)

作业 2:用 SimpleSequentialChain 实现 "翻译英文句子 → 总结一句话"

目标:感受单入单出的串行流程,上一步结果直接传给下一步

python

运行

复制代码
   from langchain.chains import SimpleSequentialChain, LLMChain
   from langchain.prompts import PromptTemplate

   # 1. 第一步链:翻译英文句子
   translate_chain = LLMChain(
       llm=llm,
       prompt=PromptTemplate(
           input_variables=["sentence"],
           template="请把下面的英文句子翻译成中文:{sentence}"
       )
   )

   # 2. 第二步链:把翻译结果总结成一句话
   summary_chain = LLMChain(
       llm=llm,
       prompt=PromptTemplate(
           input_variables=["content"],
           template="请把下面的内容用一句话总结:{content}"
       )
   )

   # 3. 组装成简易顺序链
   total_chain = SimpleSequentialChain(
       chains=[translate_chain, summary_chain],
       verbose=True  # 加这个参数可以看到每一步的执行过程,方便调试
   )

   # 4. 执行
   english_sentence = "LangChain is a framework for developing applications powered by language models."
   result = total_chain.run(english_sentence)
   print("最终结果:", result)

作业 3:用 SequentialChain 实现 "输入技术名词,同时输出原理 + 应用场景"

目标:掌握多入多出的复杂流程,理解 output_keyoutput_variables

python

运行

复制代码
   from langchain.chains import SequentialChain, LLMChain

   # 链1:生成技术原理
   principle_chain = LLMChain(
       llm=llm,
       prompt=PromptTemplate(
           input_variables=["tech"],
           template="用3句话讲清楚{tech}的工作原理"
       ),
       output_key="principle"  # 标记这条链的输出字段名
   )

   # 链2:生成应用场景
   scenario_chain = LLMChain(
       llm=llm,
       prompt=PromptTemplate(
           input_variables=["tech"],
           template="列出{tech}的3个实际应用场景"
       ),
       output_key="scenario"
   )

   # 组装成多入多出顺序链
   all_chain = SequentialChain(
       chains=[principle_chain, scenario_chain],
       input_variables=["tech"],  # 声明整体输入变量
       output_variables=["principle", "scenario"]  # 声明整体要输出的字段
   )

   # 执行(必须用invoke,传入字典格式)
   result = all_chain.invoke({"tech": "RAG"})
   print("原理:", result["principle"])
   print("应用场景:", result["scenario"])

作业 4:简答题(背诵版标准答案)

题目:区分 PromptTemplate 和 ChatPromptTemplate 的使用场景
6. PromptTemplate :用于单轮独立任务,无角色概念,适合固定格式的文本生成、知识点解释等场景,比如 "给前端解释技术名词"。
7. ChatPromptTemplate :用于多轮对话场景 ,支持划分system/human/ai角色,能设定系统规则、拼接历史对话上下文,适合聊天机器人、智能客服等交互类应用。

相关推荐
AINative软件工程8 小时前
LLM 推理加速工程实战:从 KV Cache 到 Continuous Batching,把吞吐拉满但不把延迟搞崩
llm
虎鲸不是鱼10 小时前
LM Studio使用MTP的qwen3.6-27B-以7840hs的780M为例
大模型·llm·qwen·lm studio·mtp
lazyn10 小时前
vLLM 目前尚无法支持 Codex CLI:Responses API 兼容性问题的深度剖析与修复跟踪
python·大模型·codex·vllm
数据智能老司机10 小时前
领域专用小型语言模型——端到端 Transformer 微调
llm
这是谁的博客?11 小时前
RAG 技术原理深度解析:检索增强生成架构与实践
人工智能·ai·架构·大模型·架构设计·向量检索·rag
晓山清11 小时前
【大模型入门系列】之多模态大模型综述
人工智能·大模型·多模态·综述
风雨中的小七11 小时前
和AI一起搞事情#6. 如何实现图片文字元素编辑?
人工智能·llm
程序员三明治12 小时前
【AI】Tika:一次文档解析引擎的工程实践
java·人工智能·大模型·llm·后端开发·rag·tika文件解析
冬奇Lab1 天前
Agent系列(四):工具调用深度解析——Agent 的手和眼
人工智能·llm