自然语言处理: 第十章GPT的API使用
理论基础
现在的以GPT为首的生成类模型,它拥有对话的能力,它会根据你输入的暗示(prompt)或者指令(instruct)生成对应的回答。所以,不同的输入会导致不同的输出(其实由于chatgpt最终生成的答案是beam_search 以及随机采样的机制,所以同样的输入也有可能得到不同的输出),换句话说GPT的使用上线完全取决于使用者的天花板。
而在这之中命令又分为prompt 和 instruct ,其二者的区别本质还是有区别的,但是个人感觉instruct还是比较好理解就是直接了断的命令:, 而prompt就类似 你现在是一名数据分析师, xxxx 定义一个角色,这种trick 就是一种prompt。
而提示的原则基于两点1.清晰而明确 2.给模型实践去思考 , 接下来给大家介绍下关于GPT的提示工程的几个trick
Trick1: 给AI设定角色
我们在开始给GPT进行交互前,都可以给他设定一些角色,比如说程序员, 产品经理,医生或者老师等等。 有关于这些prompt下图展示的是我自己部署的vercel界面,可以供其他人免魔法使用,如果感谢,后期可以出一个教程供大家自己搭建。 然后如果想在网上找一下prompt的教材或者现成的,这里推荐三个资料:
1 . f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better.
- PlexPt/awesome-chatgpt-prompts-zh: ChatGPT 中文调教指南。各种场景使用指南。学习怎么让它听你的话
- B站首推!官方精品【完整版九集】中文字幕,ChatGPT Prompt提示词课程 斯坦福吴恩达 | OpenAl官方联合出品_哔哩哔哩_bilibili
Trick2: Few - shot
这几个shot的如同下文一样,Zero-shot(顿悟) 这种在训练的时候并没有特定的去训练一些下游任务,比如说中英互译,但是在预训练完了之后,这些大模型在看过大量的文本之后就突然顿悟了,这种没有经过特殊的学习而具备的能力就是Zero-shot。 同样的,one-shot就是给了一个例子之后,模型就学会了,依次类推。
Trick3: CoT(Chain of Thought)
给模型的思考时间,通过一步一步的辅助模型去思考,从而比一次性让模型拿到答案,正确率会更高。下面的例子可以看出,同样的问题,左边如果直接问模型给出了错误的答案。而右边的,可以看到当输入给的例子里,输入了一个引导模型去推理的例子(蓝色字体部分),可以看到GPT马上就给出了正确答案。所以在实验过程中,我自己也会根据GPT生成的代码如果报错了,除了将错误返回还会添加一些自己任务哪里可能出现的问题反馈给它,一般GPT就会马上根据你的反馈跟报错从而修改新的正确代码。
Trick4: Few-shot / Zero-shot + CoT
如题,就是把Few/Zero - shot 与CoT 相互结合。如同下面的prompt(zero-shot CoT),效果就可以起飞,大家可以试一试
Let's think step by step
除了上面官方提出的CoT的案例,还有人专门针对CoT 进行了研究,Large Language Models are human-level prompt Engineers 这一文中提出利用强化学习的方法,利用语言模型生成不同的prompt从而使得GPT生成的答案正确率更高,最后的实验效果如下: 可以发现在加入了 let's work this out in a step by step way to be sure we have the right answer
这句zero-shot prompt之后,整个模型的推理能力有了质的飞跃
Trick5: 自洽(Self-consistency)
由于ChatGPT每次生成的答案都不完全相同,默认的GPT 会根据贪心解码从而得到最大概率的答案,而自洽就是利用一些prompt 思维链条生成多几个答案,然后根据投票的规则选出最多的答案。
代码实现
利用API生成内容
首先,我们需要利用OPENAI 的API生成对话,下面是已经封装好了的函数,只需要提供自己的apikeys和设置一些超参数就可以进行对话了
import openai # 导入OpenAI,用于调用聊天模型
import IPython # 导入IPython,用于展示聊天输出# 这里替换为你的 OpenAI API 密钥
openai.api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx' # 这里需要设置下你自己的apikeys# 设置OpenAI API调用参数
def set_open_params(
# model="text-davinci-003", # 最好的文本模型model="gpt-3.5-turbo", # 模型temperature=0.7, # 多样性n = 1, # 返回结果的数量max_tokens=256, # 生成结果的最大词数top_p=1, # 随机抽样的阈值frequency_penalty=0, # 调整生成的文本的常见度presence_penalty=0, # 调整生成的文本中的新概念出现的频率
):openai_params = {} openai_params['model'] = model # 使用的模型名称openai_params['temperature'] = temperature # 结果多样性的参数,数值越大结果越随机,反之越确定openai_params['n'] = n # 返回结果的数量openai_params['max_tokens'] = max_tokens # 生成结果的最大词数openai_params['top_p'] = top_p # 随机抽样的阈值,较小的值将使结果更加集中,较大的值将使结果更加分散openai_params['frequency_penalty'] = frequency_penalty # 调整生成的文本的常见度,较高的值将使模型更可能生成罕见的文本openai_params['presence_penalty'] = presence_penalty # 调整生成的文本中的新概念出现的频率,较高的值将使模型更可能引入新的概念return openai_paramsparams = set_open_params() # 设置参数# 从OpenAI API获取完成的文本
def get_completion(params, prompt):messages = [{"role": "user", "content": prompt}] # 用户角色发送一个消息,消息的内容为我们的提示文本response = openai.ChatCompletion.create( # 调用ChatCompletion APImodel = params['model'], # 模型messages=messages, # Prompt消息temperature = params['temperature'], # 多样性n = params['n'], # 返回结果的数量max_tokens = params['max_tokens'], # 生成结果的最大词数top_p = params['top_p'], # 随机抽样的阈值frequency_penalty = params['frequency_penalty'], # 生成的文本的常见度presence_penalty = params['presence_penalty'], # 生成的文本中的新概念出现的频率)return response # 接收模型的聊天返回结果# 简单示例
prompt = input('Human(please input your question): ') # 设置Prompt
response = get_completion(params, prompt) # 调用API
print(f'GPT: {response.choices[0].message["content"]}')
利用API实现一些推理
下图中通过设置了prompt(绿色),模型就能帮你检查条件实现一些功能
Few-shot 实例
CoT 实例
模型幻觉
实战
实战一: 在提示中设定AI角色以莎士比亚风格的作家,创作一段文学作品
假设你现在是一名莎士比亚风格的作家,请帮我以人工智能为主题,参照莎士比亚的风格帮我写一首诗
可以得到下面结果:
实战二: 针对大模型的模型幻觉,提供一个prompt使得其不再胡说八道
我知道你是一个大模型,所以请给我的答复尽量简介,并且不要无中生有,如果你不知道或者不确定的内容,请直接告诉我你不知道或者不了解,不要生成一些你不知道的内容。 如果我给的问题跟你的知识有出入,请指出。 下面我的问题是: 唐朝时期,著名的文学家胡适写了一本传奇小说《朝花夕拾》,请介绍一下这本书的详细内容,人物以及里面的精彩故事片段
可以看到加入了prompt后,GPT的就不胡乱输出内容了
实战三: 针对下面客服场景,对第二个场景用AI自动生成客服反馈
可以看到利用One-shot就让gpt自动学会了你指定的格式,从而生成对应的内容
Your job is act as a support following scene 1 to answer scene 2: scene 1:
<user_manual>: To capture a photo, press the shutter button halfway down to focus, then press it fully to take the picture.
<user>: I did that, but my photos are still coming out blurry.
<support>: It sounds like there might be an issue with your camera's autofocus system. Try cleaning the lens, make sure there is enough light, and then try again. If the problem persists, you might want to consider getting your camera servicedscene 2:
<user_manual>: To install a new app on your smartphone, navigate to your device's app store, search for the app you want, and then tap on 'Install'.
<user>: I followed these steps, but the app isn't installing. It's stuck on 'Installing...
相关文章:
自然语言处理: 第十章GPT的API使用
理论基础 现在的以GPT为首的生成类模型,它拥有对话的能力,它会根据你输入的暗示(prompt)或者指令(instruct)生成对应的回答。所以,不同的输入会导致不同的输出(其实由于chatgpt最终生成的答案是beam_search 以及随机采样的机制,所…...
docker使用harbor进行镜像仓库管理演示以及部分报错解决
目录 一.安装harbor和docker-compose 1.下载 2.将该文件修改为这样,修改好自己的hostname和port,后文的用户和密码可以不改也可以改,用于登录 3.安装 二.修改daemon.json文件和/etc/hosts文件 三.使用powershell作windows端域名映射 四…...
【精算研究01/10】 计量经济学的性质和范围
一、说明 计量经济学是使用统计方法来发展理论或测试经济学或金融学中的现有假设。计量经济学依赖于回归模型和零假设检验等技术。计量经济学也可以用来预测未来的经济或金融趋势。 图片来源:https://marketbusinessnews.com 二、 计量经济之简介 计量经济学是对经济…...
【python知识】用 Tkinter实现“剪刀-石头-布”和“弹球游戏 ”
一、提要 Tkinter是一个Python内置模块,它提供了一个简单易用的界面来创建GUI。 在实现一些动态的画面、如游戏还是需要一些创新性思维的。在本文中,我们将使用 Tkinter 探索 Python GUI 编程。我们将介绍 Tkinter 的基础知识,并演示如何使用…...
Android 绘制之文字测量
drawText() 绘制文字 绘制进度条:paint.strokeCap Paint.CAP.RONUD 线条两边样式 设置文字字体:paint.typeFace Resources.Compat.getFont(context,font) 设置加粗 paint.isFakeBoldText 设置居中: paint.setTextAlign Paint.Align.CENTER //居中, 并不是真正的居中 往…...
基于AVR128单片机智能传送装置
一、系统方案 1、板载可变电阻(电位器)R29的电压作为处理器ATmega128的模数转换模块中单端ADC0的模拟信号输入(跳线JP13短接)。 2、调节电位器,将改变AD转换接口ADC0的模拟信号输入,由处理器完成ADC0的A/D转…...
Nexus私有仓库+IDEA配置远程推送
目录 一、docker安装nexus本地私服,Idea通过maven配置deploy本地jar包(简单) 二、docker push镜像到第三方nexus远程私服(shell命令操作) 三、springboot通过maven插件自动生成docker镜像并push到nexus私服…...
idea2023项目上传到gitee
1、按照gitee插件 File——>Settings plugins——>Marketplace下面搜索gitee,然后按照gitee插件 2、上传项目 VCS_——>Share Project on Gitee 如果第一次没登录的需要先登录,登录完后就可以上传了...
【golang】派生数据类型---指针 标识符、关键字等
1、指针 对比C/C中的指针,go语言中的指针显得极为简洁,只是简单的获取某个空间的地址 或者 根据指针变量中的内容 获取对应存储空间的内容等操作。 具体示例如下: go中使用指针需要注意的点: 可以通过指针改变它所指向的内存空…...
深度学习技术
深度学习是什么? 深度学习,英文名为Deep Learning,其实就是机器学习的一种高级形式。它的灵感来源于人脑神经网络的工作方式,是一种让机器可以自主地从数据中学习和提取特征的技术。你可以把它想象成一位小侦探,通过不…...
TCP/IP网络江湖——物理层护江山:网络安全的铁壁防线(物理层下篇:物理层与网络安全)
TCP/IP网络江湖——物理层护江山:网络安全的铁壁防线(物理层下篇:物理层与网络安全) 〇、引言一、物理层的隐私与保密1.1 加密技术的护盾1.2 安全传输协议的密约1.3 物理层的安全控制1.4 面对未知威胁的准备二、电磁干扰与抵御2.1 电磁干扰的威胁2.2 抗干扰技术的应用2.3 屏…...
python-数据可视化-使用API
使用Web应用程序编程接口 (API)自动请求网站的特定信息而不是整个网页,再对这些信息进行可视化 使用Web API Web API是网站的一部分,用于与使用具体URL请求特定信息的程序交互。这种请求称为API调用 。请求的数据将以易于处理的…...
窗口看门狗
从下往上看: 1. 时钟设置 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//使能独立看门狗时钟 WWDG_SetPrescaler(WWDG_Prescaler_8);//看门狗预分频器WWDG counter clock (PCLK1/4096)/8 2.设置窗口值 实际就是设置WWDG_CR的低七位值, 但是这个值要大于0x40(也就是…...
开发新能源的好处
风能无论是总装机容量还是新增装机容量,全球都保持着较快的发展速度,风能将迎来发展高峰。风电上网电价高于火电,期待价格理顺促进发展。生物质能有望在农业资源丰富的热带和亚热带普及,主要问题是降低制造成本,生物乙…...
error: can‘t find Rust compiler
操作系统 win11 pip install -r requirements.txt 报错如下 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl (95 kB) Building wheels for collected p…...
全面解析MES系统中的车间退料管理
一、车间退料管理的定义: 车间退料是指在生产过程中,将不合格或多余的物料、半成品或成品从车间环节返还到供应链的过程。车间退料管理则是指对这一退料过程进行规范化、系统化的管理和跟踪。 二、车间退料管理的流程: 1. 退料申请…...
探究finally代码块是否执行
情况一:try代码块正常执行,无异常,finally代码块无retrun; 代码演示 public class Test38 {public static void main(String[] args) {int foo foo();System.out.println("foo:" foo);}public static int foo() {tr…...
leetcode刷题(字符串相加、包含每个查询的最小区间、模拟行走机器人、环形子数组的最大和、满足不等式的最大值、四数之和、树中距离之和)
目录 1、字符串相加 2、包含每个查询的最小区间 3、模拟行走机器人 4、环形子数组的最大和 5、满足不等式的最大值 6、四数之和 7、 树中距离之和 1、字符串相加 class Solution:def addStrings(self, num1: str, num2: str) -> str:i len(num1) - 1 # num1的末…...
Grafana reporter定时报表踩坑记录
前言:本以为测试grafana reporter功能能很顺利,但按照网上大佬分享的记录进行操作,屡屡报错,不知是因为我的grafana部署在k8s中之前由低版本升级到高版本导致的,还是其他原因,在grafana中安装Grafana Image Renderer 一直报错。 Github地址:https://github.com/IzakMar…...
Flutter 状态管理引子
1、为了更好地了解状态管理,先看看什么是状态。 在类似Flutter这样的响应式编程框架中,我们可以认为U相关的开发就是对数据进行封装,将之转换为具体的U1布局或者组件。借用Flutter官网的一张图,可以把我们在第二部分做的所有开发…...
CFC编程入门_【10分钟学会】
什么是CFC: 【差不多10分钟全学会】 CFC是图形化编程, 跟单片机的连线一样, 唯一的区别:功能块右侧是【只能输出】引脚。 只有左侧引脚可以输入输出。 有哪些控件: 指针:用于拖动功能块。 控制点…...
golang无需创建新切片
在 Go 语言中,append(b, 0)[:len(b)] 是一种常见的用法,用于在切片 b 后追加一个元素,并返回旧切片的前 len(b) 个元素。 这种用法的目的是将一个新元素追加到切片中,并确保切片的长度保持不变。具体步骤如下: 1. ap…...
Django基础5——ORM中间程序
文章目录 一、基本了解二、ORM基本操作2.1 连接数据库2.1.1 使用sqlite数据库2.1.2 使用MySQL数据库 2.2 对数据库操作2.2.1 增(前端数据——>数据库)2.2.2 查(数据库——>前端展示)2.2.3 改(修改数据࿰…...
SpringAOP详解(上)
当需要在方法前后做一些操作就需要借助动态代理来实现 一、动态代理实现方法 1、jdk自带实现方式 jdk实现代理是被代理类实现接口的方式 public interface UserInterface {void test(); }public class UserService implements UserInterface {public void test() {System.o…...
C++ 存储类
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类: autoregisterstaticexternmutablethread_local (C11) 从 C 17 开始,auto 关键字不再是 C 存储…...
【教程分享】Docker搭建Zipkin,实现数据持久化到MySQL、ES
1 拉取镜像 指定版本,在git查看相应版本,参考: https://github.com/openzipkin/zipkin 如2.21.7 docker pull openzipkin/zipkin:2.21.7 2 启动 Zipkin默认端口为9411。启动时通过-e server.portxxxx设置指定端口 docker run --name zi…...
数据库——MySQL高性能优化规范
文章目录 数据库命令规范数据库基本设计规范1. 所有表必须使用 Innodb 存储引擎2. 数据库和表的字符集统一使用 UTF83. 所有表和字段都需要添加注释4. 尽量控制单表数据量的大小,建议控制在 500 万以内。5. 谨慎使用 MySQL 分区表6.尽量做到冷热数据分离,减小表的宽度7. 禁止在…...
openapi中job提交
openapi中job提交 简介创建job查看job查看job 的描述查看job 的日志 镜像地址: https://www.jianshu.com/p/fcb3094f8c48?v1693020692471 简介 这里使用微软OpenPAI, 在nvidia的GPU设备上进行job测试。 创建job protocolVersion: 2 name: lenet_gpu_pytorch112_…...
Spring Boot 整合 分布式搜索引擎 Elastic Search 实现 数据聚合
文章目录 ⛄引言一、数据聚合⛅简介⚡聚合的分类 二、DSL实现数据聚合⏰Bucket聚合⚡Metric聚合 三、RestAPI实现数据聚合⌚业务需求⏰业务代码实现 ✅效果图⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常…...
深入探讨代理技术:保障网络安全与爬虫效率
在当今数字化时代,代理技术在网络安全与爬虫领域扮演着重要角色。从Socks5代理、IP代理,到网络安全和爬虫应用,本文将深入探讨这些关键概念,揭示它们如何相互关联以提高网络安全性和爬虫效率。 1. 代理技术简介 代理技术是一种允…...
wordpress 禁用插件/网络推广是做什么工作
原标题:LOL:卢安娜的飓风已经过时?哪些英雄还会出这件装备?曾经卢安娜的飓风这件装备刚出来的时候简直是风靡全英雄联盟,几乎所有射手类英雄都会出这件装备。主要是这件装备属性非常的厉害,感觉上可以代替电…...
网站站内搜索制作/产品推广广告
1.如何派生内置不可变类型并修其改实例化行为 问题1: 我们想定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int类型且值大于0的元素,例如:IntTuple([1,-1,abc,6,[x,y],3])>(1,6,3),要求IntTuple是内置t…...
服务器网站部署端口配置/郑州seo代理外包公司
在基于Java的内容管理系统(CMS)的世界中导航并不是最简单的任务。新的解决方案不断涌现,以帮助用户管理其网站和web应用程序上的内容。各种内容管理系统的规模、价格和可扩展性各不相同。 这里有目前使用的一些最流行的Java CMS。 Magnolia Magnolia是一个完全无头的…...
做b2c网站/童程童美少儿编程怎样收费
最近这几年购置的电脑几乎都安装了Windows 10,并且使用UEFI方式启动(UEFI即统一可扩展固件接口,用来定义操作系统与固件之间的软件界面,作为BIOS的替代方案)。UEFI启动和传统的BIOS启动不同,它不再支持实模式启动系统如DOS等。而传…...
设计一个网页要多少钱/太原seo优化公司
https://wiki.videolan.org/AndroidCompile/...
广州做网站信科建设/网站一键生成
学习Excel技术,关注微信公众号:excelperfect在开始阅读本文前,请先学习下列内容:Excel实战技巧66:创建向导样式的数据输入窗体1Excel实战技巧66:创建向导样式的数据输入窗体2Excel实战技巧66:创…...