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

news2024/9/25 9:37:23

原文地址:【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 PromptTemplate

prompt_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 ChatPromptTemplate

template = 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 ChatOpenAI


template = 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."""

    @abstractmethod
    def 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.coloradmin.cn/o/985654.html

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

相关文章

【机器视觉】揭秘机器视觉在锂电池生产中的应用

随着环保意识的日益增强和新能源汽车市场的快速发展,新能源锂电池的需求量也在不断攀升。而在锂电池生产的全过程中,机器视觉技术正发挥着越来越重要的作用。那么,机器视觉到底能在哪些环节大显身手呢?本文将带您揭秘机器视觉在锂电池生产中…

2023 年全国大学生数学建模D题目-圈养湖羊的空间利用率

D题目应该是专科题目???不确定了 感觉类似一个细胞分裂问题一样,1,2,4,8, 题目1中规中矩 按照前面说的分配方法,一步一步计算进行 缺口的问题考虑反推回去&#xff0c…

最强的AI视频去码图片修复模型:CodeFormer

目录 1 CodeFormer介绍 1.1 CodeFormer解决的问题 1.2 人脸复原的挑战 1.3 方法动机 1.4 模型实现 1.5 实验结果 2 CodeFormer部署与运行 2.1 conda环境安装 2.2 运行环境构建 2.3 模型下载 2.4 运行 2.4.1 人脸复原 ​编辑​编辑 2.4.2 全图片增强 2.4.3 人脸颜色…

小程序 target 与 currentTarget(详细)

小程序中关于事件对象 e 的属性中有两个特别重要的属性:target与currentTarget属性:对于这两个属性,官方文档上的解释是: target:事件源组件对象currentTarget:当前组件对象由于官方解释太过精炼,下面仔细讲讲其中的含义,先看一段代码: <view id="outter&quo…

自动提词器有哪些?这几款收藏好

自动提词器有哪些&#xff1f;自动提词器是一种非常实用的工具&#xff0c;无论是在翻译还是整理工作中&#xff0c;都可以帮助我们快速、准确地完成各种繁琐的任务。市面上有很多种自动提词器的应用&#xff0c;那么今天就来给大家介绍几款好用的自动提词工具。 【书单视频助手…

nowcoder NC10 大数乘法

题目链接&#xff1a; https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571?tpId196&tqId37177&rp1&ru/exam/company&qru/exam/company&sourceUrl%2Fexam%2Fcompany&difficultyundefined&judgeStatusundefined&tags&tit…

解决VSCode下载速度特别慢的问题

一、下载VSCode 1.打开VSCode官网 https://code.visualstudio.com 2.download下载 3.下载特别慢 二、解决VSCode下载速度特别慢 1.单击右下角全部显示 我是用chrome浏览器&#xff0c;点击右下角的全部显示按钮&#xff0c;可以跳转到下载内容页面。 如果你是用其他浏览器…

OpenCV(二十八):连通域分割

目录 1.介绍连通域分割 2.像素领域介绍 3.两遍法分割连通域 4.连通域分割函数 1.介绍连通域分割 连通域分割是一种图像处理技术&#xff0c;用于将图像中的相邻像素组成的区域划分为不同的连通域。这些像素具有相似的特性&#xff0c;如相近的灰度值或颜色。连通域分割可以…

(十一)人工智能应用--深度学习原理与实战--实现泰坦尼克号生存者预测案例Titanic Survival

泰坦尼克号生存者预测(Titanic Survival)是谷歌Kaggle人工智能大赛中的经典亲例。本任务要求根据给定的1300余位乘客的特征(姓名、性别、年龄、舱位等】及幸存情况(0-死亡,1-幸存】建立神经网络模型,能够较巿准确地预测测试集中乘客的幸存情况。 主要流程为: 数据的导人及预…

Json“牵手”当当网商品详情数据方法,当当商品详情API接口,当当API申请指南

当当网是知名的综合性网上购物商城&#xff0c;由国内著名出版机构科文公司、美国老虎基金、美国IDG集团、卢森堡剑桥集团、亚洲创业投资基金&#xff08;原名软银中国创业基金&#xff09;共同投资成立1。 当当网从1999年11月正式开通&#xff0c;已从早期的网上卖书拓展到网…

python批量下载csdn文章

声明&#xff1a;该爬虫只可用于提高自己学习、工作效率&#xff0c;请勿用于非法用途&#xff0c;否则后果自负 功能概述&#xff1a; 根据待爬文章url(文章id)批量保存文章到本地&#xff1b;支持将文中图片下载到本地指定文件夹&#xff1b;多线程爬取&#xff1b; 1.爬取…

I.MX RT1176笔记(9)-- 程序异常追踪(CmBacktrace 和 segger rtt)

前言 在使用 ARM Cortex-M 系列 MCU时候&#xff0c;有时候会遇到各种异常&#xff08;Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault&#xff09;&#xff0c;这时候我们根据经验查询PC指针&#xff0c;LR寄存器&#xff0c;堆栈数据定位地址然…

深入理解联邦学习——纵向联邦学习

分类目录&#xff1a;《深入理解联邦学习》总目录 假设进行联邦学习的数据提供方为 A A A和 B B B&#xff0c;第三方为 C C C&#xff0c;则纵向联邦学习步骤如下&#xff1a; 在系统级做加密样本对齐&#xff0c;在企业感知层面不会暴露非交叉用户对齐样本进行模型加密训练&…

day2_C++

day2_C 代码题思维导图 代码题 #include using namespace std;#define MAX 50struct StuData {private:int scoreArr[MAX];int num;public:void setNum(int num);void input();void sort();void show();int getnum();};void StuData::setNum(int num){this->num num; }vo…

c语言实训心得3篇集合

c语言实训心得体会一&#xff1a; 在这个星期里&#xff0c;我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前&#xff0c;我们已经对c语言这门课程学习了一个学期&#xff0c;对其有了一定的了解&#xff0c;但是也仅仅是停留在了解的范围&#xff0c;对里…

[杂谈]-快速了解直接内存访问 (DMA)

快速了解直接内存访问 (DMA) 文章目录 快速了解直接内存访问 (DMA)1、使用 DMA 需要什么&#xff1f;2、DMA介绍3、DMA 中的数据传输如何进行&#xff1f;4、DMA接口5、DMAC 控制器寄存器6、DMA 控制器编程模式6.1 突发模式&#xff08;Burst Mode&#xff09;6.2 循环窃取模式…

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

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

20个经典巧妙电路合集

1、防反接保护&#xff08;二极管&#xff09; 在实际电子设计中&#xff0c;防反接保护电路非常重要&#xff0c;不要觉得自己肯定不会接错&#xff0c;实际上无论多么小心&#xff0c;还是会犯错误...... 最简单的就是利用二极管了&#xff0c;利用二极管的单向导电性&#…

荔枝集团:如何提升项目管理效能,让需求交付快进50%

导语&#xff1a; 随着市场竞争日益激烈&#xff0c;企业面临的压力越来越大&#xff0c;需要不断优化自身的效率和质量&#xff0c;以更好地应对市场变化和竞争压力。因此&#xff0c;效能改进已成为企业实现长期发展的关键要素。 研发浓度作为一种能够准确反映研发效率的指…

ubuntu上ffmpeg使用framebuffer显示video

这个主题是想验证使用fbdev(Linux framebuffer device&#xff09;&#xff0c;将video直接显示到Linux framebuffer上&#xff0c;在FFmpeg中对应的FFOutputFormat 就是ff_fbdev_muxer。 const FFOutputFormat ff_fbdev_muxer {.p.name "fbdev",.p.long_…