|
|
在 LangChain 生态中,你提到的“提示模板库”通常包含两个层面的概念:一是代码层面的提示词模板(Prompt Templates),用于在工程化开发中动态生成和管理提示词;二是LangChain Hub,这是一个类似于 GitHub 的社区共享平台,用于上传、浏览和拉取优质的提示词。
以下是关于 LangChain 提示模板体系的详细介绍与使用指南:
1. 核心概念:为什么需要提示模板?
在实际开发中,如果直接在代码里硬编码(拼接字符串)提示词,会面临难以复用、变量拼接易错、缺乏结构等问题。LangChain 的提示模板将“写死的 Prompt”变成了“可配置、可复用的结构化指令系统”,就像填空题一样,固定角色和格式,动态注入用户输入。
2. 代码层面的常用提示模板
LangChain 提供了多种模板类,像搭积木一样满足不同场景的需求:
PromptTemplate(基础文本模板):最基础的模板,用于生成纯字符串 Prompt,适合简单的单轮问答和文本生成。
ChatPromptTemplate(聊天消息模板):生产环境中最常用的模板。专为聊天模型设计,生成的不是字符串,而是包含 system(系统指令)、human(用户输入)、ai(模型回复)等角色的消息列表,非常适合构建多轮对话系统。
FewShotPromptTemplate(少样本模板):当你需要模型严格按照某种格式或风格输出时,可以通过提供少量示例(Few-Shot)让模型“照葫芦画瓢”,这在分类任务或格式转换中非常有效。
MessagesPlaceholder(消息占位符):专门用于多轮对话场景,可以动态地将完整的对话历史记录插入到提示词中,保持上下文连贯。
3. 如何使用(代码实战示例)
以下是使用 ChatPromptTemplate 构建并调用大模型的标准流程:
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# 1. 定义聊天消息模板,使用 {变量名} 作为占位符
chat_template = ChatPromptTemplate.from_messages([
("system", "你是一个专业的{role},回答要控制在{word_count}字以内。"),
("human", "{user_input}")
])
# 2. 传入具体变量,生成最终的 PromptValue
prompt_value = chat_template.invoke({
"role": "产品经理",
"word_count": 100,
"user_input": "帮我写一段AI Agent的需求文档摘要。"
})
# 3. 初始化大模型并调用
llm = ChatOpenAI(model="gpt-4")
response = llm.invoke(prompt_value)
print(response.content)
注:在 LangChain 中,还可以通过管道符 | 将模板和模型直接组合成链(如 chain = chat_template | llm),实现更优雅的链式调用。
4. LangChain Hub(提示词共享平台)
如果你不想从零编写复杂的提示词,可以使用 LangChain Hub。这是一个由 LangChain 官方打造的社区平台,开发者可以在上面分享、拉取和管理经过验证的优质提示词模板。
如何使用:通过 LangSmith 客户端,只需一行代码即可拉取社区中优秀的提示词模板(例如著名的 prompt-maker),直接与大模型结合使用。
官网地址:LangChain Hub 目前集成在 LangSmith 平台中,官方访问地址为:
https://smith.langchain.com/hub/
|
|