【LangChain系列 4】Model I/O——Prompts概述

原文地址:【LangChain系列 4】Model I/O——Prompts概述

本文速读:

  • Prompt模版

  • 样本选择器

Prompts简单来讲就是一组指令或文本输入,语言模型理解它的意思后,给出一个输出响应。

LangChain提供了一些模块可以让我们更方便地使用prompts:

  • Prompt templates:参数化模版输入

  • Example selectors:动态选择prompt示例

01 Prompt模版


Prompt templates可以理解为预先定义好的参数化的prompt,可以动态传入不同的参数值而成为prompt;它是一个模版,可以包含命令、少样本示例、具体上下文和特定的问题。

LangChain封装好了很多相关的工具可以让我们方便地使用prompt。

PromptTemplate示例:

from langchain import PromptTemplateprompt_template = PromptTemplate.from_template("Tell me a {adjective} joke about {content}."
)
prompt_template.format(adjective="funny", content="chickens")

prompt_template格式化后为:

"Tell me a funny joke about chickens."

另外,我们还可以明确地指定参数名字,比如:

invalid_prompt = PromptTemplate(input_variables=["adjective", "content"],template="Tell me a {adjective} joke about {content}."
)

这样的好处就是会去验证参数是否正确,可以减少犯错,以上两种方式都可以,你可以根据个人喜好选择。

ChatPromptTemplate示例:


from langchain.prompts import ChatPromptTemplatetemplate = ChatPromptTemplate.from_messages([("system", "You are a helpful AI bot. Your name is {name}."),("human", "Hello, how are you doing?"),("ai", "I'm doing well, thanks!"),("human", "{user_input}"),
])messages = template.format_messages(name="Bob",user_input="What is your name?"
)

ChatPromptTemplate可以接收一系列message,每个message是一个二元组,包括角色和内容两个部分。

除了二元组的写法,另一种写法就是BaseMessage或MessagePromptTemplate。​​​​​​​

from langchain.prompts import ChatPromptTemplate
from langchain.prompts.chat import SystemMessage, HumanMessagePromptTemplate
from langchain.chat_models import ChatOpenAItemplate = ChatPromptTemplate.from_messages([SystemMessage(content=("You are a helpful assistant that re-writes the user's text to ""sound more upbeat.")),HumanMessagePromptTemplate.from_template("{text}"),]
)llm = ChatOpenAI(openai_api_key="xxx")
rsp = llm(template.format_messages(text='i dont like eating tasty things.'))
print(rsp)

运行代码,输出结果:

content='I absolutely adore indulging in delicious treats!' additional_kwargs={} example=False

以上是prompt模版的简单使用示例,LangChain还封装了很多不同类别模版与功能:

  • 连接特征库

  • 自定义propmt模版

  • 少样本prompt模版

  • 输出模版

  • MessagePromptTemplate

  • 部分prompt模版

  • prompt组合

  • prompt序列化

  • prompt模版校验

02 样本选择器


样本选择器(Example Selectors)是什么呢?假如你有大量样本,但如果将样本都放到prompt的话,就会超过prompt的token限制,那么你就需要选择最适合的样本放到prompt中,而样本选择器就是为了解决这个问题的;样本选择器的作用就是从大量样本中选择最适合的样本。

样本选择器 的基类如下:

class BaseExampleSelector(ABC):"""Interface for selecting examples to include in prompts."""@abstractmethoddef select_examples(self, input_variables: Dict[str, str]) -> List[dict]:"""Select which examples to use based on the inputs."""

当我们需要自定义一个样本选择器时,唯一需要做的就是实现select_examples方法,该方法接收input_variables参数,返回一个样本列表。同时,LangChain也提供了一些 样本选择器 可以直接使用。

本文小结

本文介绍了Model I/O 中的输入:prompts,主要包括 prompt模版 和 样本选择器 两个模块,让我们对这两个模块的功能和使用有了一个基本的概念,后续文章将详细介绍它们的用法与实践。

更多最新文章,请关注公众号:大白爱爬山

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 分页器组件+css动画效果

全网都找了一遍没有找到符合UI需求的分页动画,于是就主动上手了 需求: 1、分页最多显示9页,总页数最多显示无上限; 2、点击下一页的时候需要有动画效果过度,如果当前页数是当前显示最后的一页,则停了当前…

Android12 ethernet和wifi共存

1.修改网络优先走wifi packages/modules/Connectivity/service/src/com/android/server/connectivity/NetworkRanker.java -44,7 44,7 import java.util.Arrays;import java.util.Collection;import java.util.List;import java.util.function.Predicate; - import andro…

算法训练day36|贪心算法 part05(重叠区间三连击:LeetCode435. 无重叠区间763.划分字母区间56. 合并区间)

文章目录 435. 无重叠区间思路分析 763.划分字母区间思路分析代码实现思考总结 56. 合并区间思路分析 435. 无重叠区间 题目链接🔥🔥 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的…

第3章 【MySQL】字符集和比较规则

3.1 字符集和比较规则简介 3.1.1 字符集简介 如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要: 1.把哪些字符映射成二进制数据? 2.怎么映射? 将一个字符映射成一个二进制数据的过程也叫做 编码 &#…

mybatis源码学习-3-解析器模块

1. 目录结构 XNode类: 作用:XNode 类表示XML文档中的一个节点(Element或Node),它用于封装XML节点的信息,例如标签名、属性和子节点等。使用场景:MyBatis使用 XNode 来解析XML配置文件中的各种元…

长胜证券:资本市场的含义是什么?

本钱商场是指企业和政府通过证券生意来筹集资金并进行出资活动的商场。本钱商场通常被分为两个部分:初级商场和二级商场。初级商场是新证券发行的商场,而二级商场则是已发行证券的生意商场。本钱商场的展开程度是一个国家经济展开的重要目标之一。 从宏…

社科院与杜兰大学能源管理硕士项目——用你的脚步,走出自己的风景

《千与千寻》中有一段经典的台词:“不管前方的路有多苦,只要走的方向正确,不管多么崎岖不平,都比站在原地更接近幸福”。是的,路就在我们脚下,敢于探索就会走出一个新世界。在职的你,有想过继续…

实战:用线性函数、梯度下降解决线性回归问题

文章目录 线性回归线性函数梯度下降实现代码 线性回归是机器学习中最简单的模型之一,在许多应用中都有广泛的应用。本篇文章将介绍如何用线性函数、梯度下降来解决线性回归问题。 线性回归 线性回归是一种用来预测连续输出变量(也叫做响应变量&#xff…

详解Transformer中的Encoder

一.Transformer架构 左半边是Encoder,右半边是Decoder。 二.Vision Transformer Vision Transformer取了Transformer的左半边。包含 Input EmbeddingPositional Encoding多头注意力机制 Add & Norm(前馈网络)Feed Forward Add & Norm 2.1 Input Embe…

python 学习笔记

python 学习笔记 学习思路Hoshinobot踩坑命名规范路径 gocqhttprequestsseleninum 借鉴 学习思路 Hoshinobot Hoshinobot是一个机器人模板,在里面可以添加自定义的多个功能,通过和gocqhttp联调可以制作简单的qq机器人 踩坑 命名规范 service里的名字不能和你在config里的b…

企业架构LNMP学习笔记4

企业服务器LNMP环境搭建: 常见的软件架构: 1)C/S: client/server 2)B/S: browser/server 不管是C还是B,都是属于客户端属于前端。那么运维人员主要是负责和管理的Server端,也统称为服务器端。为了快速的…

RetroArch 接入两个同款手柄只能识别到一个导致无法双打的问题

测试平台 设备:StationPC M3 RetroArch: 1.1.5(当前官方最新) 手柄:北通蝙蝠BD2F(XBOX360键位) 问题说明 RetroArch插入两个同款手柄/摇杆时只能识别到一个,此时两个手柄都是可以控制模拟器,但是进入游戏也都是p1,无法实现双打 解决办法 …

Window安装虚拟机+给虚拟机安装Linux

一、虚拟机下载 这里使用Virtualbox虚拟机。可以直接从官网下载:Downloads – Oracle VM VirtualBox 点击进行下载,选择window版本的。直接双击,一直下一步 进行安装 PS:安装需要开启CPU虚拟化,一般电脑都已经开启了…

最新社区团购电商小程序源码 无bug完美运营版+详细搭建部署教程

分享一个开源社区团购电商小程序源码,无bug完美运营版,含完整前后端详细搭建部署教程。 系统运营模式:整合线下社区资源,由各快递代收点、社区便利店、社区物业、业主等发起的社区微信群,推送商品信息,消费…

【数据恢复】.360勒索病毒|金蝶、用友、OA、ERP等软件数据库恢复

引言: 在当今数字化的时代,网络犯罪已经演变成了一场全球性的威胁,而 360 勒索病毒则是其中最为可怕和具有破坏性的威胁之一。这种恶意软件以其危害深远、难以防范的特点而令人震惊。本文91数据恢复将深入探讨 360 勒索病毒的可怕性&#xff…

python中try-except常见错误(exception)

python常见错误(exception) 在Python中,有许多常见的错误类型,其中一些包括: SyntaxError:语法错误,通常是由于代码中的拼写错误、缺少括号或其他语法问题引起的。这些错误会在代码解析时立即触…

sql:SQL优化知识点记录(九)

(1)小表驱动大表 对sql调优的分析: 排序优化: 数据库的连接方式,里面的数据尽量这样连接,尽量选择第一个方式,因为两个表的连接一共建立5次连接,第二个建立1000次连接,从…

CNI、CSI 和 CRI在 Docker 中的角色和作用

摘要 CNI(Container Network Interface): CNI 是用于容器网络的接口标准,它定义了容器和网络插件之间的通信协议。CNI 的主要作用是为容器创建和管理网络接口。当创建一个容器时,CNI 插件会被调用来为容器创建一个网络…

使用spring自带的发布订阅机制来实现消息发布订阅

背景 公司的项目以前代码里面有存在使用spring自带发布订阅的代码,因此稍微学习一下如何使用,并了解一下这种实现方式的优缺点。 优点 实现方便,代码方面基本只需要定义消息体和消费者,适用于小型应用程序。不依赖外部中间件&a…

h5微传单制作教程:快速轻松制作

在当今社交媒体充斥的时代,微传单作为一种新型的宣传推广方式,成为了企业和个人在传播信息时的重要工具。h5微传单相比传统的纸质传单更加灵活多样,并且能够通过手机、平板等设备随时随地进行浏览和分享,具有很高的传播效果。下面…