当前位置: 首页 > news >正文

Python----大模型(Langchain-Prompt提示词)

        Prompt(提示)是一种指导语言模型生成特定类型输出的文本模板。 它通常包含一些预设的文本框架,以及一些变量占位符,当实际运行时,这些占位符 会被具体的值所替换。 Prompt的作用在于引导语言模型按照预期的方式生成回复,确保输出符合特定的格 式、语境或者目的。

Langchain使用Prompt

单个变量

        PromptTemplate 是一个基础的模板类,用于构建格式化的提示字符串。它允许你 定义一个模板字符串,并在运行时根据传入的变量替换其中的占位符。 对于单个变量(句子里有一个占位符可以自定义)可以通过以下两种方式格式化 Prompt。

from langchain_core.prompts import PromptTemplate# 方式1:通过字符串模板自动提取变量
# 定义包含占位符的模板字符串(使用大括号{}表示变量)
template = """
今天{location}天气怎么样?
"""# 从模板字符串创建PromptTemplate(自动提取location变量)
prompt = PromptTemplate.from_template(template=template)# 格式化模板(传入具体值替换占位符)
print("北京天气预报提示词:")
print(prompt.format(location='北京'))  # 输出:今天北京天气怎么样?
print('-' * 30)# 方式2:显式指定输入变量
# 重新创建PromptTemplate(显式声明input_variables)
prompt = PromptTemplate(input_variables=['location'],  # 明确指定输入变量名template=template             # 使用相同的模板字符串
)# 格式化模板
print("上海天气预报提示词:")
print(prompt.format(location='上海'))  # 输出:今天上海天气怎么样?
特性from_template() 自动提取显式声明 input_variables
变量检测自动从模板字符串中提取 {var} 格式的变量需要手动指定所有变量名
灵活性适合简单模板适合需要严格控制的复杂模板
错误检查运行时才会发现变量不匹配创建时会检查变量是否与模板匹配
典型使用场景快速原型开发生产环境代码

多个变量

        PromptTemplate 是一个基础的模板类,用于构建格式化的提示字符串。 它允许你定义一个模板字符串,并在运行时根据传入的变量替换其中的占位符。 对于多个变量(句子里有多个占位符可以自定义)可以通过以下两种方式格式化 Prompt。

# 导入LangChain的提示模板类
from langchain_core.prompts import PromptTemplate# 定义模板字符串,包含两个变量占位符 {date} 和 {location}
template = """
{date}{location}天气怎么样?
"""# ========= 方式1:自动提取变量 =========
# 使用from_template自动从模板字符串提取变量(推荐简单场景使用)
prompt = PromptTemplate.from_template(template=template)# 格式化模板(必须提供所有自动提取的变量)
print("【自动变量提取】北京天气预报:")
print(prompt.format(date='今天', location='北京'))  # 输出:今天北京天气怎么样?
print('-' * 40)# ========= 方式2:显式声明变量 ========= 
# 创建时显式指定input_variables(推荐生产环境使用)
prompt = PromptTemplate(input_variables=['date', 'location'],  # 明确声明所有输入变量template=template                      # 使用相同的模板字符串
)# 格式化模板(必须提供所有声明的变量)
print("【显式变量声明】上海天气预报:")
print(prompt.format(date='明天', location='上海'))  # 输出:明天上海天气怎么样?
特性from_template() 自动模式显式声明 input_variables
变量检测自动提取 {var} 格式变量需手动声明所有变量
错误检查只在调用format时发现缺失变量实例化时立即检查变量完整性
代码可读性较高(适合快速原型)更高(明确显示模板依赖)
推荐场景临时测试/简单模板生产环境/复杂模板

聊天提示模板

        ChatPromptTemplate 是一个用于创建复杂聊天对话提示的模板,它允许将多种 不同类型的消息(例如系统消息、AI 消息和用户消息)结合起来形成一个完整的 对话流。使用这个类,你可以动态创建一个聊天会话的提示,帮助机器人基于不 同的消息内容生成合适的回复。         SystemMessagePromptTemplate 是一种特殊的模板,用于创建系统消息。系 统消息通常用于设置聊天机器人的角色或定义对话的初始条件。例如,你可以用 它告诉模型它的角色是“一个专业的助理”。

        AIMessagePromptTemplate 用于创建 AI 消息的模板,这类消息通常代表机器 人的回复内容。通过使用这个类,你可以为机器人的输出指定一个格式或结构, 确保生成的回复符合预期。

        HumanMessagePromptTemplate 用于创建用户输入(也称为人类消息)的模 板。它帮助将用户的输入嵌入到聊天提示中,通常作为对话的起点或反馈信息。

        AIMessage, HumanMessage, SystemMessage 这三种类是 langchain.schema 模块中的消息类,分别用于表示 AI 消息、人类消息和系统消息。这些类通常用于 标识对话中的消息来源,帮助构建更复杂的对话流

组件名称类型用途说明使用场景示例
ChatPromptTemplate组合模板将多种消息模板组合成完整对话流创建多轮对话提示,包含系统设定、用户问题和AI回复
SystemMessagePromptTemplate消息模板创建系统角色设定的模板"你是一个专业医疗助手,用中文回答医学问题"
AIMessagePromptTemplate消息模板格式化AI回复内容的模板"根据以下格式回答:\n症状分析:{analysis}\n建议:{advice}"
HumanMessagePromptTemplate消息模板格式化用户输入的模板"患者咨询:{question}\n病史:{medical_history}"
SystemMessage消息实例表示系统角色设定的具体消息SystemMessage(content="你将扮演心理咨询师")
AIMessage消息实例表示AI生成的具体回复消息AIMessage(content="建议每天运动30分钟")
HumanMessage消息实例表示用户输入的具体消息HumanMessage(content="我最近总是失眠")
# 导入LangChain的聊天模板相关类
from langchain.prompts import (ChatPromptTemplate,              # 聊天对话组合模板SystemMessagePromptTemplate,     # 系统消息模板AIMessagePromptTemplate,         # AI回复模板  HumanMessagePromptTemplate       # 用户消息模板
)# 1. 创建系统消息模板(设定AI角色)
system_messages = SystemMessagePromptTemplate.from_template('你是一个有用的助手,帮助学生学习编程'  # 系统角色设定
)
# 为系统消息添加元数据(可选)
system_messages.additional_kwargs = {'timestamp': '2024',    # 时间标记'source': 'system'      # 消息来源标识
}# 2. 创建用户消息模板(处理用户输入)
human_messages = HumanMessagePromptTemplate.from_template('用户问:{user_question}'  # 用户问题占位符
)# 3. 创建AI回复模板(留空让模型自由生成)
ai_messages = AIMessagePromptTemplate.from_template("")  # 空模板# 4. 组合成完整的聊天提示模板
chat_message = ChatPromptTemplate.from_messages([system_messages,  # 系统角色设定human_messages,   # 用户输入  ai_messages       # AI回复区域
])# 测试使用
userinput = '怎么学习python?'
# 格式化生成最终提示(自动填充user_question变量)
formatted_prompt = chat_message.format(user_question=userinput)
print("生成的完整提示:")
print(formatted_prompt)

 聊天提示模板方式二

http://www.dtcms.com/a/277768.html

相关文章:

  • 快速搭建Maven仓库服务
  • 大话数据结构之 <顺序表> (C语言)
  • 学习:JS基础[5]对象
  • 【SpringAI Alibaba】基于 Redis 实现连续对话与向量存储
  • VsCode的LivePreview插件应用
  • [Java恶补day41] 226. 翻转二叉树
  • 基于springboot的大学公文收发管理系统
  • AB实验评估指标体系之【实验评估指标体系】
  • 015_引用功能与信息溯源
  • python 字典(Dictionary) vs. 集合(Set):它们是如何做到快速查找的?为什么字典的键(key)必须是不可变的?
  • S7-1200 与 ET200SP:PROFINET 设备关键数据 IP 地址、MAC 地址及 MRP 环状态获取
  • Datawhale AI 夏令营2025科大讯飞AI大赛<夏令营:用AI做带货视频评论分析>
  • 什么是渐进式框架
  • OpenVela 之 UI 应用开发
  • kettle从入门到精通 第102课 ETL之kettle xxl-job调度kettle的两种方式
  • 【Linux系统】进程状态 | 进程优先级
  • 手写std::optional:告别空指针的痛苦
  • java + groovy : 动态解析groovy脚本,并与java交互
  • MacBook Air M4 安装 VMware Fusion Pro
  • 问题记录:Fastjson序列化-空值字段处理
  • CA复习功课
  • Appdynamic 配置 PostgreSQL 收集器
  • 复习笔记 34
  • 【VSCode+LaTeX】科研写作环境搭建
  • 内存池(C++)v3 | 简历写法 | 相关面试题
  • 浏览器本地存储——使用localStorage实现电商系统商品收藏功能实战
  • 在网站学装机
  • SCTP协议网络编程
  • 从源码看Nginx:Nginx事件驱动架构深度拆解来了
  • linux上的软挂载操作方法