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

langchain介绍之-Prompt

  LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点:1.数据感知:将语言模型与其他数据源连接起来。2.代理性:允许语言模型与其环境进行交互
LangChain 的主要价值在于:组件:用于处理语言模型的抽象,以及每个抽象的多个实现集合。这些组件是模块化且易于使用的,无论您是否在使用 LangChain 框架的其他部分
现成的链式结构:由多个组件组成的结构化组合,用于完成特定的高级任务现成的链式结构使得入门变得轻松。对于更复杂的应用程序和微妙的用例,组件使得可以轻松定制现有链式结构或构建新的结构。此篇博客主要介绍Langchain的prompt相关内容。

  Langchain中提供了哪些Prompt呢?具体如下图所示,是截至目前Langchain提供的所有模版,对于base类模版,在通过langchain构建应用时,一般很少用到,开发者主要用的还是ChatPromptTemplate,PromptTemplate,以及各类MessagePromptTemplate。

  为什么Lanchain会提供不同类型的MessagePromptTemplate呢?因为Openai的原始接口中,对于chat completion这个接口,里面的user role就分为user,system,assistant三个角色,所以,这里的MessageTemplate也分为HumanMessagePromptTemplate,AIMessagePromptTemplate,SystemMessagePromptTemplate。

  openai官方提供的chat completion的接口如下图所示,可以看到原始调用openai的接口中,需要传入role的信息,所以上面的三种messagePromptTemplate对应三种不同的角色。

了解了前面的基础知识后,来看看如何使用PromptTemplate。下面的代码中调用from_template

(...)传入了一份带变量的字符串,调用format信息后,打印出来的message就是将变量值于原有字符串merge后的值。另外,从结果也可以看到,PromptTemplate是一个报刊input_variables和template变量的的class。

import openai
import os
from langchain.prompts import (PromptTemplate)prompt_template = PromptTemplate.from_template("Tell me a joke about {context}")
message = prompt_template.format(context="chidren")
print(prompt_template)
print(type(prompt_template))
print(message)

除了通过from_template()的方法初始化一个PromptTemplate的class外,还可以通过下面的方法初始化这个class

prompt_template_two = PromptTemplate(input_variables=['name'],template="what is your {name}"
)
print(prompt_template_two)

  接着来看看SystemMessagePromptTemplate的使用,在创建好一个PromptTemplate后,可以将prompt赋值给SystemMessagePromptTemplate。可以看到SystemMessagePromptTemplate除了prompt变量外,还有template_format,validate_template变量。

prompt = PromptTemplate(template="You are a helpful assistant that translates {input_language} to {output_language}.",input_variables=["input_language", "output_language"],
)
system_message_prompt = SystemMessagePromptTemplate(prompt=prompt)
print(system_message_prompt)
print(type(system_message_prompt))

  除了上面的方式初始化一个SystemMessageTemplate外,还可以通过调用from_template的方式进行初始化。可以看到初始化出来的对象是一样的。

prompt_string = """Translate the text \
that is delimited by triple backticks \
into a style that is {style}. \
text: ```{text}```
"""
system_message_prompt_two = SystemMessagePromptTemplate.from_template(prompt_string)
print(system_message_prompt_two)

接下来再看看ChatPromptTemplate,这里先创建了一个HumanMessagePromptTemplate,然后通过from_message,将创建了promptTemplate赋值给了ChatPromptTemplate

human_prompt_template = HumanMessagePromptTemplate.from_template(prompt_string)
print(human_prompt_template)
print('-------------------')
chat_prompt = ChatPromptTemplate.from_messages([human_prompt_template])
print(chat_prompt)

执行结果如下图所示,可以看到直接打印的话,HumanMessagePromptTemplate和前面的SystemMessagePromptTemplate无区别,class包含的字段都一样。组装出来的ChatPromptTemplate包含input_variables,output_parser,messages三个变量,messages的值就是生成的HumanMessagePromptTemplate.

  调用ChatPromptTemplate的format_messages()方法,可以将变量值和原有的prompt中的文字进行合并。结果如下图所示,返回的message是一个List,List只有一个值就是HumanMessage对象,HumanMessage对象又包含content,additional_kwargs={},example变量。

message = chat_prompt.format_messages(style="myStyle", text="mytext")
print(message)

  可以看到不同promptTemplate之间有一点绕,这可能也和AI技术不断在更新,langchain也在不断迭代有关吧。

  message对象生成好后,就可以调用model生成内容了,代码如下所示:

chat = ChatOpenAI(model_name="gpt-3.5-turbo", verbose=True)
response = chat(message)
print(response)
print(response.content)

  调用大模型生成的内容如下图所示:

  以上就是对Langchain中Prompt的使用介绍。

相关文章:

langchain介绍之-Prompt

LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点:1.数据感知:将语言模型与其他数据源连接起来。2.代理性:允许语言模型与其环境进行交互 LangChain 的主要价值在于:组件:用于处理语言模型…...

汇编语言Nasmide编辑软件

用来编写汇编语言源程序,Windows 记事本并不是一个好工具。同时,在命令行编译源程序也令很多人迷糊。毕竟,很多年轻的朋友都是用着 Windows 成长起来的,他们缺少在 DOS和 UNIX 下工作的经历。 我一直想找一个自己中意的汇编语言编…...

用python开发一个炸金花小游戏

众所周知扑克牌可谓是居家旅行、桌面交友的必备道具, 今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则。 炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏…...

Uniapp中使用uQRCode二维码跳转小程序页面

下载插件 uQRCode官网地址 引入插件 文件如下 //--------------------------------------------------------------------- // github https://github.com/Sansnn/uQRCode //---------------------------------------------------------------------let uQRCode = {};(functio…...

解决husky在mac下不生效的问题

目录 一、问题 1.1 问题描述 二、解决 2.1 解决 一、问题 1.1 问题描述 本文主要解决的问题是,husky在windows上正常生肖,但放到mac下后不生效的问题! 为了确保团队中提交代码的一致性,因此使用了 husky 作为提交的检测工具…...

如何在自动化测试中使用MitmProxy获取数据返回?

背景介绍 当我们在接口或UI自动化项目中,常常会出现这种现象——明明是正常请求,却无法获取到想要的数据返回。 比如: 场景A:页面是动态数据,第一次进入页面获取到的数据,和下次进入页面获取到的数据完全…...

达之云BI平台助力中国融通集团陕西军民服务社有限公司实现数字化运营

中国融通集团陕西军民服务社是一家大型综合类零售购物中心,公司目前管理系统运行了10年左右,面临系统新零售支持发展严重滞后,行业主流应用落地困难,如线上业务、到家业务、全渠道营销、电子发票、自助收银、扫码购、无感停车、未…...

Private market:借助ZK实现的任意计算的trustless交易

1. 引言 Private market,借助zk-SNARKs和以太坊来 隐私且trustlessly selling: 1)以太坊地址的私钥(ECDSA keypair)2)EdDSA签名3)Groth16 proof:借助递归性来匿名交易Groth16 proo…...

反序列化漏洞复现(typecho)

文章目录 执行phpinfogetshell 执行phpinfo 将下面这段代码复制到一个php文件&#xff0c;命名为typecho_1.0-14.10.10_unserialize_phpinfo.php&#xff0c;代码中定义的类名与typecho中的类相同&#xff0c;是它能识别的类&#xff1a; <?php class Typecho_Feed{const…...

QT设计一个小闹钟

设置一个闹钟&#xff0c;左侧窗口显示当前时间&#xff0c;右侧设置时间&#xff0c;以及控制闹钟的开关&#xff0c;下方显示闹钟响时的提示语。当按启动按钮时&#xff0c;设置时间与闹钟提示语均不可再改变。当点击停止时&#xff0c;关闭闹钟并重新启用设置时间与闹钟提示…...

MybatisPlus(3)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 一、查询投影&#x1f36d; 查询投影是指在查询操作中&#xff0c;只选择…...

安全计算环境技术测评要求项

1.身份鉴别-在应用系统及各类型设备中确认操作者身份的过程&#xff08;身份鉴别和数据保密&#xff09; 1-2/2-3/3-4/4-4 a&#xff09;应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换 b&#xff09;应具有…...

Excel快捷键表

工作表插入新工作表ShiftF11或AltShiftF1移动到工作簿中的下一张工作表CtrlPageDown移动到工作簿中的上一张工作表CtrlPageUp选定当前工作表和下一张工作表ShiftCtrlPageDown取消选定多张工作表Ctrl PageDown选定其他的工作表CtrlPageUp选定当前工作表和上一张工作表ShiftCtrlP…...

Windows Server 系统各版本及授权说明(附下载地址

本文为Windows Server系统各版本差异对比及授权说明。 会对相关目前仍主流使用的相关Windows Server系统版本和相关授权进行对比和功能说明。 WindowsServer2012 R2 Windows Server 2012 R2授权方式是按照物理CPU数量进行授权&#xff0c;比如物理服务器CPU插槽数量2&#xff…...

【智慧工地源码】物联网和传感器技术在智慧工地的应用

物联网&#xff08;IoT&#xff09;和传感器技术在智慧工地中扮演着至关重要的角色。这些技术的应用&#xff0c;使得智慧工地能够实现对施工过程的精确监控、数据收集和分析&#xff0c;以及设备互联&#xff0c;从而提高工程效率、减少成本并改善工人的工作环境。 一、物联网…...

计算机安全学习笔记(IV):基于角色的访问控制 - RBAC

RBAC(Role-Based Access Control)基于用户在系统中设定的角色而不是用户的身份。一般来说&#xff0c;RBAC模型定义角色为组织中的一项工作职责&#xff0c;RBAC系统给角色而不是给单独的用户分配访问权。用户根据他们的职责被静态地或动态地分配给不同的角色。 RBAC模型间的关…...

MFC中的Button修改颜色的方法

添加工具箱下面的MFC Button Control控件&#xff08;不使用普通的Button控件&#xff09;&#xff1b;给按键添加变量&#xff1a;m_MFCButton1&#xff0c;变量类型&#xff08;默认&#xff09;为&#xff1a;CMFCButton&#xff1b;testDlg.cpp中初始化中添加如下代码&…...

【算法】选择排序

选择排序 选择排序代码实现代码优化 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a; 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&…...

golang之context实用记录

简言 WithCancel()函数接受一个 Context 并返回其子Context和取消函数cancel 新创建协程中传入子Context做参数&#xff0c;且需监控子Context的Done通道&#xff0c;若收到消息&#xff0c;则退出 需要新协程结束时&#xff0c;在外面调用 cancel 函数&#xff0c;即会往子C…...

音视频FFmpeg简单理解学习,必学技术

FFmpeg是一个开源的多媒体框架&#xff0c;它包含了一个用于音频和视频编解码的库。它可以执行各种多媒体操作&#xff0c;如格式转换、视频剪辑、音频处理等。可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。 FFmpeg的结构 默认的编译会生成…...

龙虾为啥越养越贵,越用越蠢?极客老王揭秘Agent落地真相

进入2026年3月&#xff0c;科技圈的舆论风向标发生了一次剧烈偏移。曾经被誉为开启“AI代驾”时代的超级智能体OpenClaw&#xff08;俗称“龙虾”&#xff09;&#xff0c;在经历了一年的野蛮生长后&#xff0c;正陷入一场空前的信任危机。根据最新的行业调研数据显示&#xff…...

告别龟速下载!一个Shell脚本搞定GFZ非潮汐大气负载数据(附站点坐标文件模板)

极速批量获取GFZ非潮汐大气负载数据的Shell脚本实战指南 在GNSS数据处理和地球物理研究中&#xff0c;获取高精度的非潮汐大气负载(NTAL)数据是分析站点位移的关键环节。德国地学研究中心(GFZ)作为全球权威机构&#xff0c;其提供的NTAL数据产品被广泛应用于科研和工程领域。然…...

DFR0554双芯片显示模块驱动解析:PCA9633与AIP31068协同控制

1. DFR0554 显示模块驱动深度解析&#xff1a;基于 PCA9633 与 AIP31068 的双芯片协同架构 DFR0554 是 DFRobot 推出的一款集成化智能显示模块&#xff0c;其核心并非单一显示控制器&#xff0c;而是由两颗功能互补的专用 IC 协同构成&#xff1a; PCA9633 LED 驱动器 与 A…...

【PVE实战】低成本2.5G网卡升级与iperf3性能验证全记录

1. 为什么需要升级到2.5G网络环境 最近几年&#xff0c;随着NAS、视频剪辑、虚拟机等应用场景的普及&#xff0c;传统的千兆网络&#xff08;1Gbps&#xff09;越来越显得力不从心。我自己就经常遇到这样的情况&#xff1a;在局域网内传输大文件时&#xff0c;千兆网络的极限速…...

Cadence Virtuoso仿真避坑指南:从网表生成到FFT分析的20个常见错误解决方案

Cadence Virtuoso仿真避坑指南&#xff1a;从网表生成到FFT分析的20个常见错误解决方案 在集成电路设计领域&#xff0c;Cadence Virtuoso作为行业标准工具链的核心组件&#xff0c;其仿真功能的正确使用直接关系到设计效率与结果可靠性。本文将系统梳理从网表生成到FFT分析全流…...

告别境外断网:Nrfr让全球网络无缝连接——免Root跨国通信解决方案

告别境外断网&#xff1a;Nrfr让全球网络无缝连接——免Root跨国通信解决方案 【免费下载链接】Nrfr &#x1f30d; 免 Root 的 SIM 卡国家码修改工具 | 解决国际漫游时的兼容性问题&#xff0c;帮助使用海外 SIM 卡获得更好的本地化体验&#xff0c;解锁运营商限制&#xff0c…...

遥感图像质量评价实战:用imgvision 1.7.3计算SAM、ERGAS等指标(附Python代码)

遥感图像质量评估实战&#xff1a;从理论到代码的完整指南 遥感图像处理是地理信息系统、环境监测和农业估产等领域的关键技术。当我们对高光谱图像进行压缩、融合或重建时&#xff0c;如何客观评价处理后的图像质量&#xff1f;本文将深入探讨五种核心评价指标(SAM、PSNR、MSE…...

Fish Speech 1.5语音克隆对比实验:5秒vs10秒参考音频效果差异分析

Fish Speech 1.5语音克隆对比实验&#xff1a;5秒vs10秒参考音频效果差异分析 1. 实验背景与目的 语音克隆技术正在改变我们与数字内容互动的方式&#xff0c;而Fish Speech 1.5作为新一代文本转语音模型&#xff0c;在声音克隆方面表现出色。但在实际应用中&#xff0c;一个…...

Qwen2.5-Coder-1.5B应用案例:快速生成网页爬虫代码实战

Qwen2.5-Coder-1.5B应用案例&#xff1a;快速生成网页爬虫代码实战 1. 引言&#xff1a;为什么选择Qwen2.5-Coder生成爬虫代码 在日常开发工作中&#xff0c;网页爬虫是数据采集和分析的重要工具。传统编写爬虫代码需要开发者熟悉HTTP请求、HTML解析、反爬机制处理等多个技术…...

MedGemma 1.5企业应用:三甲医院科研组如何用其加速文献摘要与机制推演

MedGemma 1.5企业应用&#xff1a;三甲医院科研组如何用其加速文献摘要与机制推演 1. 引言&#xff1a;当科研遇上AI助手 想象一下这个场景&#xff1a;深夜的医院科研办公室里&#xff0c;桌上堆满了待读的医学文献&#xff0c;电脑屏幕上同时打开了十几篇PDF。一位研究员正…...