langchain的prompt模块,提示词拼接与使用教程

LangChain ChatPromptTemplate 类及 from_messages 方法总结

一、ChatPromptTemplate 类概述

langchain_core.prompts.chat.ChatPromptTemplate 是 LangChain 中用于构建聊天模型模板化提示的核心类,继承自 BaseChatPromptTemplate,核心作用是为对话式 AI 模型提供灵活、可复用的提示结构,支持多轮对话、变量替换、消息类型区分等功能。

1. 核心特性

  • 多消息类型支持:原生支持 system(系统指令)、human(人类输入)、ai(AI 回复)、placeholder(消息占位符)等消息类型,适配主流聊天模型的对话格式。
  • Runnable 接口实现:集成 LangChain 标准 Runnable 接口,支持 invoke(同步调用)、ainvoke(异步调用)、batch(批量处理)、stream(流式输出)等方法,可无缝与 LLM、链(Chain)等组件集成。
  • 灵活变量管理:支持「必填变量」(input_variables)、「可选变量」(optional_variables)、「部分变量」(partial_variables),可预填充部分参数或动态传入对话内容。
  • 消息占位符:通过 MessagesPlaceholder 实现动态插入多轮对话历史,无需手动拼接消息列表。

二、from_messages 方法详解

from_messagesChatPromptTemplate核心类方法,用于从「多种消息格式」快速创建聊天提示模板,是构建多轮对话模板的推荐方式(替代已废弃的 from_role_stringsfrom_strings 方法)。

1. 方法定位

  • 作用:将任意格式的消息序列转换为 ChatPromptTemplate 实例,解决单消息模板(如 from_template)无法覆盖多轮对话的问题。
  • 优势:支持混合消息格式、自动解析变量、兼容动态对话历史,是最灵活的模板创建方式。

2. 关键参数

参数名 类型 是否必填 说明
messages 序列(Sequence),元素支持 5 种格式(见下文) 构建模板的消息列表,决定对话的角色、内容和变量占位符
template_format 字符串(Literal[“f-string”, “mustache”, “jinja2”]) 模板语法格式,默认 f-string,可根据需求选择 Mustache 或 Jinja2 语法

3. 支持的 5 种消息格式

messages 参数的元素可采用以下任意格式,覆盖绝大多数对话场景:

  1. BaseMessagePromptTemplate 实例:预定义的消息模板类(如 SystemMessagePromptTemplate)。
  2. BaseMessage 实例:直接传入具体消息(如 SystemMessage(content="你是助手")HumanMessage(content="你好"))。
  3. (消息类型字符串, 模板) 元组:最常用的简化格式,如 ("system", "你的名字是 {name}")("human", "{user_input}")
  4. (消息类, 模板) 元组:显式指定消息类,如 (SystemMessage, "你的名字是 {name}")
  5. 纯字符串:简写为「人类消息」,如 "请解释 {concept}" 等价于 ("human", "请解释 {concept}")

4. 典型示例

示例 1:从消息模板列表创建

通过「(消息类型, 模板) 元组」构建多轮固定对话模板:

from langchain_core.prompts import ChatPromptTemplate

# 用 from_messages 创建多轮对话模板
template = ChatPromptTemplate.from_messages([
    ("system", "你是一个友好的AI助手,名字是 {name}。"),  # 系统消息(带变量)
    ("human", "你好!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值