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

小杰-大模型(two)——RAG与Agent设计——Langchain-prompt提示词

1.1 Prompt(提示)是什么?

Prompt(提示)是一种指导语言模型生成特定类型输出的文本模板。

它通常包含一些预设的文本框架,以及一些变量占位符,当实际运行时,这些占位符会被具体的值所替换。

Prompt的作用在于引导语言模型按照预期的方式生成回复,确保输出符合特定的格式、语境或者目的。

1.2 Langchain使用Prompt

1.2.1 单个变量

PromptTemplate 是一个基础的模板类,用于构建格式化的提示字符串。它允许你定义一个模板字符串,并在运行时根据传入的变量替换其中的占位符。

对于单个变量(句子里有一个占位符可以自定义)可以通过以下两种方式格式化Prompt。

代码演示
#langchain 里面包含提示模板
from langchain_core.prompts import  PromptTemplate
# 定义一个包含单个变量的模板字符串
#三个引号
template="""
今天{location}的天气如何?
"""
# 方式一
# 使用 PromptTemplate 类从模板字符串创建一个提示对象里包含
# from_template方法可以直接从字符串模板创建 PromptTemplate 对象
prompt=PromptTemplate.from_template(template)
print(prompt.format(location="济南"))
#方式二
# 另一种方式创建 PromptTemplate 对象
# 显式指定输入变量和模板字符串
prompt=PromptTemplate(input_variables=["location"],template=template)
print(prompt.format(location="北京"))

1.2.2 多个变量

PromptTemplate 是一个基础的模板类,用于构建格式化的提示字符串。

它允许你定义一个模板字符串,并在运行时根据传入的变量替换其中的占位符。

对于多个变量(句子里有多个占位符可以自定义)可以通过以下两种方式格式化Prompt。

代码演示
#langchain 核里面包含提示模板
from langchain_core.prompts import PromptTemplate
# 定义一个包含单个变量的模板字符串
#三个引号
template="""{date}的{location}天气如何?
"""
# 方式一
# 使用 PromptTemplate 类从模板字符串创建一个提示对象里包含
# from_template方法可以直接从字符串模板创建 PromptTemplate 对象
prompt =PromptTemplate.from_template(template)
# print(prompt)
#使用format 方法将变量值填入模板中
print(prompt.format(date="今天",location="南京"))#方式二
# 另一种方式创建 PromptTemplate 对象
# 显式指定输入变量和模板字符串
prompt=PromptTemplate(input_variables=["date","location"],template=template)
print(prompt.format(date="昨天",location="北京"))

1.2.3 聊天提示模板

  • ChatPromptTemplate 是一个用于创建复杂聊天对话提示的模板,它允许将多种不同类型的消息(例如系统消息AI 消息用户消息)结合起来形成一个完整的对话流。使用这个类,你可以动态创建一个聊天会话的提示,帮助机器人基于不同的消息内容生成合适的回复。
  • SystemMessagePromptTemplate 是一种特殊的模板,用于创建系统消息。系统消息通常用于设置聊天机器人的角色或定义对话的初始条件。例如,你可以用它告诉模型它的角色是“一个专业的助理”。
  • AIMessagePromptTemplate 用于创建 AI 消息的模板,这类消息通常代表机器人的回复内容。通过使用这个类,你可以为机器人的输出指定一个格式或结构,确保生成的回复符合预期。
  • HumanMessagePromptTemplate 用于创建用户输入(也称为人类消息)的模板。它帮助将用户的输入嵌入到聊天提示中,通常作为对话的起点或反馈信息。
聊天提示模板代码
from langchain.prompts import (ChatPromptTemplate,
SystemMessagePromptTemplate,AIMessagePromptTemplate,HumanMessagePromptTemplate)
# Step 1: 创建一个系统消息,用于定义机器人的角色
system_message=SystemMessagePromptTemplate.from_template("你是一个专业的助理,帮助用户学习编程。")
# additional_kwargs 的用途:增加参数
# 添加一些额外的需要存储的信息,例如消息的时间戳、消息来源、消息类型等。
system_message.additional_kwargs={
'timestamp': '2025-5-09T10:50:00Z',
'source': 'system'
}
# Step 2: 创建一个人类消息,用于接收用户的输入
human_message=HumanMessagePromptTemplate.from_template("用户问:{user_question}")
# Step 3: 创建一个AI消息,用于输出机器人的回复(一般可能用于工具调用)
ai_message=AIMessagePromptTemplate.from_template("")
# Step 4: 将这些模板结合成一个完整的聊天提示
chat_prompt=ChatPromptTemplate.from_messages([system_message,human_message,ai_message,
])
# Step 5: 格式化最终的对话
# 假设用户输入问题为 "怎么学习Python?"
user_input = "怎么学习Python?"
chat_format=chat_prompt.format_messages(user_question=user_input)
print(chat_format)

只有message方式

聊天提示模板代码2-只有message方式
from langchain.schema import (AIMessage,HumanMessage,SystemMessage)
from langchain.prompts import  ChatPromptTemplate
who = "小明"
# additional_kwargs 的用途:可以用来存储消息的额外信息,例如消息类息的时间戳、消息来源、消型等。
# 将模板结合成一个完整的聊天提示
chat_prompt=ChatPromptTemplate.from_messages([
SystemMessage(content='你是一个专业的助理,帮助用户学习编程。',additional_kwargs={'timestamp': '2024-11-02T10:50:00Z','source': 'system'}),
HumanMessage(content=f"用户问: {who}如何开始学习Python?",additional_kwargs={}),
AIMessage(content='', additional_kwargs={})
])
# 格式化最终的对话
print(chat_prompt.format_messages())

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

相关文章:

  • Rust 练习册 :Luhn Trait与Trait实现
  • 家庭机器人,从科幻到日常的二十年突围战
  • 网站html地图导航代码大全网站功能的介绍
  • Android开发(Kotlin) 高阶函数、内联函数
  • AI安全与网络安全的融合:从挑战到解决方案
  • 从零开始构建现代化React应用:最佳实践与性能优化
  • 国外的网站建设公司广州工商注册服务中心
  • 【tips】常用不同状态小圆点样式css
  • 保险微网站制作公司网站费用计入什么科目
  • SSM网上水果商城s7436(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 北京市建设信息网站湖南手机版建站系统信息
  • 【函数参数传递方式选择指南(C/C++)】
  • 做ppt的图片素材网站数字营销成功案例
  • 企业网站子页面模板网站 开发 外包
  • 机器学习日报14
  • 解决Mac不能识别#include <bits/stdc++.h> 头文件问题
  • 基于站点数据进行遥感机器学习参数反演-以XGBOOST反演LST为例(附带数据与代码)试读
  • 四面山网站建设现在帮别人做网站赚钱不
  • 破解EEG逆问题:ADMM-ESINet如何融合优化理论与深度学习实现实时源成像
  • CSS 高中低部分面试题方法及知识点介绍
  • GMI Cloud@AI周报 | Cursor 2.0发布自研模型Composer;小鹏发布新一代人形机器人 IRON
  • 莱芜手机网站建设报价网站建设平台策划
  • 【jmeter】-安装-插件安装
  • 猫头虎AI分享:CodeBuddy IDE 已支持 GLM-4.6!亲测更强了
  • 云手机能够流畅运行大型游戏吗
  • 【App开发】手机投屏的几种方式(含QtScrcpy)- Android 开发新人指南
  • 云手机 一梦江湖畅玩搬砖
  • 智享账单管理利器:Rachoon
  • 惠州网站小程序建设点网站制作的评价标准
  • Ascend C流与任务管理实战:构建高效的异步计算管道