langchain 提示词(一) 字符提示词和聊天提示词

1,简介

‌LangChain中的提示词(Prompts)‌是用户与模型交互的方式,即模型的输入,通过提示词可以让模型返回用户期望的内容。提示词在LLM(Large Language Models,大语言模型)领域中扮演着关键角色,它不仅是模型接收信息的入口,也是模型生成输出的起点。
提示词也是用于生成语言模型提示词的预定义脚本。语言模型能够接受的提示词是字符串或聊天消息列表。
提示词中提供了两个提示词模版:
PromptTemplate:字符提示词模版,模版支持任意数量的变量,包括无边量。
ChatPromptTemplate:聊天提示词模版,聊天模版的提示是一个聊天消息列表。每条聊天消息都是有角色和内容组成。

2,代码示例

字符提示词PromptTemplate

from langchain.prompts import PromptTemplate#有变量
prompt_template = PromptTemplate.from_template("给我讲一个关于{content}的{adjective}笑话。"
)
rep = prompt_template.format(adjective="有意思的", content="猫")
print(rep)
#给我讲一个关于猫的有意思的笑话。#无变量
prompt_template = PromptTemplate.from_template("给我讲个笑话"
)
rep = prompt_template.format()
print(rep)
#给我讲个笑话

聊天提示词ChatPromptTemplate

from langchain_core.prompts import ChatPromptTemplatechat_template = ChatPromptTemplate.from_messages([("system", "你是一个乐于助人的人工智能机器人。你的名字是{name}"),("human", "你好你最近怎么样?"),("ai", "我很好,谢谢!"),("human", "{user_imput}"),]
)
messages = chat_template.format_messages(name="王老师", user_imput="你叫什么名字?")
print(messages)#[SystemMessage(content='你是一个乐于助人的人工智能机器人。你的名字是王老师'), HumanMessage(content='你好你最近怎么样?'), AIMessage(content='我很好,谢谢!'), HumanMessage(content='你叫什么名字?')]#ChatPromptTemplate.from_messages方法接受各种消息表示形式,并且是一种使用你想要的消息格式化聊天模型输入的便捷方法。
from langchain_core.messages import SystemMessage
from langchain_core.prompts import HumanMessagePromptTemplate, ChatPromptTemplatechat_template = ChatPromptTemplate.from_messages([SystemMessage(content=("你是一位有用的助手,可以重写用户的文本,使其听起来更乐观。")),HumanMessagePromptTemplate.from_template("{text}"),]
)
messages = chat_template.format_messages(text="我不喜欢吃好的东西")
print(messages)
#[SystemMessage(content='你是一位有用的助手,可以重写用户的文本,使其听起来更乐观。'), HumanMessage(content='我不喜欢吃好的东西')]

消息占位符MessagesPlaceholder
消息占位符通过字面意思,就是占为作用,比如,现在要对之前说过的聊天对话进行总结。之前有多少对话目前不太确定,没有统计。那么这种情况就可以用消息占位符,先进行占位,在将之前的聊天记录取出,在进行总结。

from langchain.prompts import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
MessagesPlaceholder,
)human_prompt = "用 {word_count} 字总结我们到今为止的对话。"
human_message_template = HumanMessagePromptTemplate.from_template(human_prompt)chat_prompt = ChatPromptTemplate.from_messages([MessagesPlaceholder(variable_name="conversation"),human_message_template])from langchain_core.messages import AIMessage,HumanMessagehuman_message = HumanMessage(content="学习编程的最佳方法是什么?")
ai_message = AIMessage(content="""\1. 选择编程语言:决定你想要学习的编程语言。2. 从基础开始:熟悉变量、数据类型和控制结构等基本编程概念。3. 练习、练习、再练习:学习编程的最好方法是通过实践检验\"""
)rep = chat_prompt.format_prompt(conversation=[human_message,ai_message], word_count="10"
).to_messages()
print(rep)
#[HumanMessage(content='学习编程的最佳方法是什么?'), AIMessage(content='    1. 选择编程语言:决定你想要学习的编程语言。\n    2. 从基础开始:熟悉变量、数据类型和控制结构等基本编程概念。\n    3. 练习、练习、再练习:学习编程的最好方法是通过实践检验    '), HumanMessage(content='用 10 字总结我们到今为止的对话。')]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548825.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part08**拓扑排序精讲**题目:117. 软件构建拓扑排序的背景解题思路:模拟过程 **dijkstra(朴素版)精讲**题目:47. 参加科学大会解题思…

腾讯特效 SDK

腾讯云视立方腾讯特效 SDK(Tencent Effect)是音视频终端 SDK (腾讯云视立方)的子产品 SDK 之一,提供美颜特效功能。基于优图精准的 AI 能力和天天 P 图丰富的实时特效处理,为各类视频处理场景提供丰富的产品…

SpringCloud-Netflix第一代微服务快速入门

1.springCloud常用组件 Netflix Eureka 当我们的微服务过多的时候,管理服务的通信地址是一个非常麻烦的事情,Eureka就是用来管理微服务的通信地址清单的,有了Eureka之后我们通过服务的名字就能实现服务的调用。 Netflix Ribbon\Feign : 客…

卫星导航定位原理学习(三)

GNSS信号体制及其性能分析 GNSS信号体制直接影响卫星导航系统的性能,是卫星导航系统设计的重要内容。卫星导航信号体制主要包括信号频率、信号结构、导航电文3部分。其中信号结构又包括调制波形、频率带宽、扩频码码长、码速率、码结构、信号功率等内容。导航电文设…

8086介绍

内部结构 执行部件EU(Execution Unit) 包含运算器、通用寄存器组、EU控制单元。 只负责控制,不和外部总线打交道 总线接口部件BIU(Bus Interface Unit) 包含指令队列缓冲器、16位指令指针寄存器IP、16位段寄存器&am…

【L波段差分干涉SAR卫星(陆地探测一号01组)】

L波段差分干涉SAR卫星(陆地探测一号01组) L波段差分干涉SAR卫星(陆地探测一号01组)是我国自主研发的重要卫星系统,以下是对该卫星的详细介绍: 一、基本信息 卫星组成:陆地探测一号01组由A星…

全网最适合入门的面向对象编程教程:53 Python字符串与序列化-字符串与字符编码

全网最适合入门的面向对象编程教程:53 Python 字符串与序列化-字符串与字符编码 摘要: 在 Python 中,字符串是文本的表示,默认使用 Unicode 编码,这允许你处理各种字符集,字符编码是将字符转换为字节的规则…

一文上手SpringSecurity【三】

一、认证流程分析 上篇文章当中,我们一步一步查阅源码方式对认证流程有了一些认证,本章节梳理一下整个流程,最后形成一张图,以更直观的方式来理解认证的整个流程. 1.1 认证当中步及的接口和类 1.1.1 【抽象类】AbstractAuthenticationProcessingFilter 实现了GenericFilter…

OFDM通信系统发射端需要做ifftshift的原因分析

对频率为15Hz的正弦波信号进行FFT分析,并且直接画图,matlab代码如下: fs 100; % sampling frequency t 0:(1/fs):(10-1/fs); % time vector S cos(2*pi*15*t); n length(S); X fft(S); f (0:n-1)*(fs/n); %frequenc…

使用canvas截取web camera指定区域,并生成图片

目标&#xff0c;截取红色色块背后的视频区域。 代码结构如下&#xff1a; <div id"p1"><video id"v1" autoplay playsinline></video><div id"mrz"></div><canvas id"captureCanvas"></can…

优化|深入解读DeepOPF:一种用于安全约束直流最优潮流问题的深度神经网络方法

原文信息&#xff08;包括题目、发表期刊、原文链接等&#xff09;&#xff1a; DeepOPF: A Deep Neural Network Approach for Security-Constrained DC Optimal Power Flow https://ieeexplore.ieee.org/document/9205647 原文作者&#xff1a;Xiang Pan; Tianyu Zhao; Ming…

机器学习-聚类

http://en.wikipedia.org/wiki/Multispectral_pattern_recognition 聚类基础知识 凝层次聚类 K-means 聚类 基于EM算法的聚类 聚类基础知识 聚类&#xff1a;将数据划分到不同的类里&#xff0c;使相似的数据在同一类里&#xff0c;不相似的数据在不同的类里&#xff08;物…

芝法酱学习笔记(0.5)——使用jenkins做自动打包

前言 上节讲了SpringBoot上的打包。但这些过程都是手动的&#xff0c;在实际的开发测试时&#xff0c;自动化的打包部署&#xff0c;可以大大提升团队开发的效率 一、去官网下载 1.1 官网安装命令 对于如何安装的问题&#xff0c;我向来推荐官网 wget -O /usr/share/keyri…

ThreeJs绘制圆柱体

上一章节实现了圆锥体的绘制&#xff0c;这节来绘制圆柱体&#xff0c;圆柱体就是矩形旋转获得&#xff0c;如上文一样&#xff0c;先要创建出基础的组件&#xff0c;包括场景&#xff0c;相机&#xff0c;灯光&#xff0c;渲染器。代码如下&#xff1a; initScene() {this.sce…

【vue-router】用meta.keepAlive做缓存

网上大家都说按下面的写法 <keep-alive><router-view v-if"route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if"!route.meta.keepAlive"></router-view>但是会报错 解决方法也没找到 最后换一…

Java项目实战II基于Java+Spring Boot+MySQL的学院班级回忆录(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 在时光的长河中&#xff0c;班级的记忆如同璀璨星辰&#xff0c;照亮了我们共同的青春岁月。为了珍藏…

鼎跃安全丨多功能气体检测报警系统:工业安全守护者

在工业快速发展的今天&#xff0c;各种复杂的生产环境中潜藏着诸多安全隐患。尤其在石油化工企业中&#xff0c;易燃易爆的气体随时可能引发危险&#xff1b;矿山作业里&#xff0c;有毒有害气体的风险更是持续不断&#xff1b;而制药等行业也面临着各类气体泄漏的风险。如何灵…

基于 LangChain 的自动化测试用例的生成与执行

在前面的章节中&#xff0c;分别介绍了 Web、App、接口自动化测试用例的生成。但是在前文中实现的效果均为在控制台打印自动化测试的用例。用例需要手动粘贴&#xff0c;调整之后再执行。 那么其实这个手动粘贴、执行的过程&#xff0c;也是可以直接通过人工智能完成的。 应用…

搭建基于H.265编码的RTSP推流云服务器

一、前言 网上能够找到的RTSP流地址&#xff0c;均是基于H.264编码的RTSP流地址&#xff0c;无法测试应用是否可以播放H265实时流为此&#xff0c;搭建本地的把H.264转码成H.265的RTSP服务器&#xff0c;不管是通过VLC搭建本地RTSP服务器&#xff0c;还是通过FFmpeg搭建本地RT…

Linux-du命令使用方法

Linux-du&#xff08;disk useage&#xff09;命令 du 命令用于查看文件和目录占用的磁盘空间。 du [选项] [文件或目录]-h (human-readable)&#xff1a; 将输出格式转为人类可读的形式&#xff0c;使用 KB、MB 等单位。 du -h /path/to/directory1.5M /path/to/directory…